Процесс возврата платежа состоит из четырёх этапов:
- Магазин обращается на сервер банка с запросом возврата платежа.
- Сервер банка находит соответствующую оригинальную транзакцию и проверяет возможность выполнения возврата.
- В случае успешной проверки формирует запрос в процессинговый центр банка-эквайера на выполнение возврата.
- Получив ответ от процессингового центра банка-эквайера, возвращает ответ магазину в виде XML-сообщения.
Адрес сервера
- Тестовая среда:
https://pps03.fuib.com/merchantapi/refund
Аутентификация магазина
Аутентификация выполняется по HTTP Basic Authentication. Логин — идентификатор магазина, пароль — MerchantApiPassword устанавливается банком и сообщается магазину по запросу.
Параметры GET-запроса
| Параметр | Обязательность | Тип | Описание |
|---|---|---|---|
| trx_id | √ | String | Идентификатор транзакции. Длина 32 символа. |
| p.rrn | √ | String | Идентификатор платежа в процессинговом центре банка-эквайера. |
| amount | √ | Number | Сумма платежа в валюте оригинальной транзакции. Возможен возврат части суммы, для этого нужно указать сумму, не превышающую сумму оригинальной транзакции. |
Пример GET-запроса
https://pps03.fuib.com/merchantapi/refund?trx_id=46622B749D0946EB37791DA383E315A9&p.rrn=009666668732&amount=27282
Параметры ответа банка
| Параметр | Тип | Описание |
|---|---|---|
| message_id | String | |
| result.code | Number | Результат операции возврата платежа. 1 — успешный, 2 — неуспешный. |
| result.desc | String | Описание результата. Максимальная длина 125 символов. |
| result.refund.rrn | String | Идентификатор платежа в процессинговом центре банка-эквайера. |
| result.refund.authcode | String | Код авторизации, который отражается у банка-эмитента, банка-эквайера и платежной системы. |
Пример ответа банка, если возврат выполнен успешно
<?xml version="1.0"?>
<MerchantAPI>
<Message id="Message2685">
<RefundResponse>
<version>1.0</version>
<Result>
<code>1</code>
<desc>OK</desc>
<Refund>
<rrn>009666668732</rrn>
<authcode>101509</authcode>
</Refund>
</Result>
</RefundResponse>
</Message>
</MerchantAPI>
Пример ответа банка, если возврат не выполнен
<?xml version="1.0"?>
<MerchantAPI>
<Message id="Message2685">
<RefundResponse>
<version>1.0</version>
<Result>
<code>2</code>
<desc>Operation failed</desc>
</Result>
</RefundResponse>
</Message>
</MerchantAPI>
Пример ответа банка, если неверно сформирован запрос
<?xml version="1.0"?>
<MerchantAPI>
<Message id="Message2685">
<RefundResponse>
<version>1.0</version>
<Result>
<code>3</code>
<desc>Parameters not matching</desc>
</Result>
</RefundResponse>
</Message>
</MerchantAPI>