API FONDYВерсия 1.0

Правильная последовательность выполнения стадий операции capture

Операция capture предназначена для списания заранее заблокированной на карте суммы на основании предварительного запроса на предавторизацию с параметром preauth = Y.

Данная операция также называется двустадийной схемой оплаты. Первая стадия — операция покупки с предварительной блокировкой суммы. Вторая стадия — непосредственно списание (capture) заблокированной суммы.

Списание может быть выполнено как на полную сумму, так и на частичную.

Обратите внимание!

  • Операция предавторизации и capture доступны только по платежному методу card. Остальные платежные методы не поддерживают данные операции и автоматически будет происходить полное списание суммы по одностадийной схеме:
  • Если операция capture еще не была выполнена, то при возврате средств плательщику, комиссия FONDY не взимается. По факту происходит мгновенная отмена заблокированной суммы и никаких движений финансовых средств не происходит;
  • Если операция capture еще не была выполнена, то доступна только отмена полной суммы блокировки через операцию reverse;
  • Если выполнена операция частичного capture, то остаток суммы автоматически вернется на карту плательщика и дополнительно операцию реверса выполнять уже не нужно. 
    Например, если сумма предавторизации 1000 и клиенту нужно вернуть 200, то необходимо выполнить capture на сумму 800. Реверс на сумму 200 выполнять не нужно, иначе произойдет повторный возврат суммы 200;
  • По одной операции предавторизации доступен только один полный/частичный capture;
  • По одной операции завершенной покупки доступно несколько последовательных частичных реверсов;

 

Параметры запроса

ПараметрТипОписаниеПример передаваемого мерчантом значения
order_idstring(1024)Уникальный идентификатор заказа. Назначается мерчантом.

обязательный
ID1234
merchant_idinteger(12)Уникальный идентификатор мерчанта. Выдается торговцу после регистрации.

обязательный
1
signaturestring(40)Подпись заказа. Служит для проверки целостности и подлинности запроса на стороне сервера платежного шлюза

обязательный
1773cf135bd89656131134b98637894dad42f808
versionstring(10)Версия протокола.

Значание по-умолчанию: 1.0
1.0
amountinteger(12)Сумма подтверждения

обязательный
1020 (USD) — означает 10 долларов 20 центов
currencystring(3)Валюта заказа. Допустимые значения:
UAH — украинская гривна
USD — доллар США
EUR — евро
GBP — фунт стерлингов

обязательный
USD

Параметры ответа

ПараметрТипОписаниеПример ответа
order_idstring(1024)Уникальный идентификатор заказа. Назначается мерчантом.ID1234
merchant_idinteger(12)Уникальный идентификатор мерчанта. Выдается торговцу после регистрации.1
capture_statusstring(50)Статус обработки подтверждения. Может содержать следующие значения:
hold — запрос на подтверждение отклонен платежным шлюзом FONDY, внешней платежной системой или банком-эквайером
captured — запрос на подтверждение успешно совершен
approved
response_statusstring(50)Статус обработки запроса. Если возникла ошибка при валидации передаваемых, то возвращается failure, иначе success 
signaturestring(40)Подпись заказа. Служит для проверки целостности и подлинности запроса на стороне сервера платежного шлюза
1773cf135bd89656131134b98637894dad42f808
response_codeinteger(4)Код отказа1008
response_descriptionstring(1024)Причина отказаParameter `amount` is mandatory

Параметры ответа в случае ошибки

См. Параметры ответа в случае ошибки

Формирование запроса

Запрос подтверждения на сервер FONDY всегда формируется способом host-to-host на URL https://pay.fondy.eu/api/capture/order_id

Host-to-host АПИ поддерживает следующие текстовые форматы запросов:

В контексте запроса всегда возвращается ответ в том же формате, что и запрос. Т.е. если запрос был в формате JSON, то и ответ вернется в формате JSON.

Пример host-to-host JSON

Content Type: application/json

Запрос

{
   "request":{
      "order_id":"test7926651365",
      "currency":"USD",
      "amount":"1",
      "merchant_id":"1",
      "signature":"b1ed592ff76ddca287503b11c1aad70bb1c67f37"
   }
}

Нормальный ответ

{
   "response":{
      "order_id":"test309906285",
      "response_status":"success",
      "response_code":"",
      "capture_status":"captured",
      "response_description":"",
      "merchant_id":"1"
   }
}

Ответ в случае ошибки

{
   "response":{
      "response_status":"failure",
      "error_message":"Order Not Found",
      "error_code":"1018"
   }
}

Пример host-to-host XML

Content Type: application/xml

Запрос

<?xml version="1.0" encoding="UTF-8"?>
<reqest>
   <order_id>test7926651365</order_id>
   <currency>USD</currency>
   <amount>1</amount>
   <merchant_id>1</merchant_id>
   <signature>b1ed592ff76ddca287503b11c1aad70bb1c67f37</signature>
</request>

Нормальный ответ

<?xml version="1.0" encoding="UTF-8"?>
<response>
   <order_id>test6622534987</order_id>
   <response_status>success</response_status>
   <response_code />
   <capture_status>captured</capture_status>
   <response_description />
   <merchant_id>1</merchant_id>
</response>

Ответ в случае ошибки

<?xml version="1.0" encoding="UTF-8"?>
<response>
   <response_status>failure</response_status>
   <error_message>Order Not Found</error_message>
   <error_code>1018</error_code>
</response>

Пример host-to-host HTML form

Content Type: application/x-www-form-urlencoded

Запрос

order_id=test6622534987&currency=USD&amount=1&merchant_id=1
&signature=6ccbfeb82894b5c51855e032da1e7a3bee65f3a3

Нормальный ответ

order_id=test7101250216&response_status=success&response_code=
&capture_status=captured&response_description=&merchant_id=1

Ответ в случае ошибки

response_status=failure&error_message=Order+Not+Found&error_code=1018

Хочу принимать платежи со всего мира!