Перейти к основному содержимому

Протокол взаимодействия Host2Host

Взаимодействие по прооколу Host2Host позволяет производить процесс сбора карточных данных на стороне ресурса, в случае наличия сертификата PCI DSS. Взаимодействие между ресурсом с сервисом Qostiq осуществляется с помощью запросов по API.

  • Для создания платежа методом Host2Host необходимо отправить запрос ** Invoice create**. В ответе на запрос о создании счета возвращается ID session_id, который необходимо использовать для передачи карточных данных.
  • Отправить запрос H2H Data для получения токена. В ответе на запрос возвращается токен form_token и URL payform_url, которые необходимо использовать для передачи карточных данных.
  • После ответа на запрос H2H Data, необходимо сформировать и подтвердить HTML форму Pay Form на payform_url методом POST с данными карты плательщика

###Запрос H2H Data [/h2hdata]

Test URL: https://test-core.tech-icard.com/h2h_data

Production URL: https://core.tech-icard.com/h2h_data

Метод: POST

Обязательные параметры: session_id

  • С помощью запроса **H2H Data** необходимо передать session_id. В ответе вернется токен form_token и URL payform_url, которые необходимо использовать для передачи карточных данных.

Пример Запроса:

{
"session_id": "26d90ef012e34b44aa9d74a3556e15a6"
}

Где:

ПараметрОписаниеФормат
session_idID полученный в ответе на запрос ** Invoice create**string

Пример ответа:

{
"data": {
"form_token": "uerhdw47d748yd784dy83uhueh834h84dh84hd8dh8",
"payform_url": "https://card.qostiq.com/payform/"
},
"error_code": 0,
"message": "success",
"result": true
}

Где:

ПараметрОписаниеФормат
form_tokenТокен для передачи карточных данныхstring
payform_urlURL для редиректа пользователя с карточными даннымиstring

Запрос H2H Data [POST]

  • Request (application/json)

      ```json
    {
    "session_id":"26d90ef012e34b44aa9d74a3556e15a6"
    }
    ```
  • Response 200 ()

      ```json
    {
    "data":
    {
    "form_token":"uerhdw47d748yd784dy83uhueh834h84dh84hd8dh8",
    "payform_url":"https://card.qostiq.com/payform",
    },
    "error_code": 0,
    "message": "Ok",
    "result": true
    }
    ```

Формирование HTML формы Payform [/Payform]

Метод: POST

**Обязательные параметры: ** session_id,card_number,card_holder,expiry_month,expiry_year,cvv,payform_url,form_token.

Параметр session_id берется из ответа запроса ** Invoice create** .

  • После подтверждения HTML формы пользователь будет перенаправлен на страницу 3ds верификации.
  • После прохождения 3ds пользователь будет возвращен на соответствующие success или failed URL, которые передаются в запросе ** Invoice create** .
  • Параллельно, вам будет отправлен callback. Если платеж неуспешен, то в callback вернется причина отказа, в случае ели она была передана шлюзом.

Пример Формы:

{
"action": "https://card.tech-icard.com/en/payform",
"method": "POST",
"fields": {
"session_id": "26d90ef012e34b44aa9d74a3556e15a6",
"form_token": "uerhdw47d748yd784dy83uhueh834h84dh84hd8dh8",
"card_number": "4111111111111111",
"card_holder": "TEST TEST",
"expiry_month": "12",
"expiry_year": "22",
"cvv": "123"
},
"submit": true
}
ПараметрОписаниеФормат
expiry_yearгод окончания действия карты22
card_holderTEST TESThttps://qostiq.com/failed/
card_numberномер карты пользователяа4111111111111111
expiry_monthмесяц окончания действия срока карты12
cvvтрёхзначный код проверки подлинности карты123
session_idуникальный идентификатор операции оплаты26d90ef012e34b44aa9d74a3556e15a6
form_tokenтокен для передачи карточных даннх0e61dd5935054d7e99d3da0cef411758
actionURL для редиректа пользователя с карточными даннымиhttps://card.tech-icard.com/en/payform

Отправить запрос PayForm [POST]

  • Request

      ```json
    {'expiry_year': '**', 'cvv': '***', 'expiry_month': '**', 'card_number': '****************', 'card_holder': '************', 'sign': 'bcc0f7c61d0ef0f7063b1aef59989a0b7c0ac3daa8f5ae3fca85c28c436fb28a', 'session_id': '033695c6ba634e0c94533085c5c372ca'}",
    ```
  • Response 200 ()

      ```json
    {
    https://tech-icard.com/
    }
    ```

Рекурренты

Рекуррентные платежи дают возможность выполнять регулярные списания денег с банковской карты покупателя без повторного ввода реквизитов карты и без участия плательщика для инициации очередного платежа.

ВАЖНО: Данный функционал доступен только в случае согласования с менеджером.

Иницииация первого платежа с признаком рекуррентности происходит по платежному направлению "payway": "card_uah" в несколько этапов:

  • Для создания 1-го в цепочке платежа, в запросе Invoice/Create необходимо передать дополнительный параметр “required_pay_token:” “true”. На запрос поступит Callback с дополнительным параметром “pay_token” в поле “ps_data”.

ВАЖНО: Параметр pay_token будет передаваться только в случае успешно проведенной транзакции.

  • Для иницииации последующих списаний с карты в запросе Invoice/Create необходимо передать ранее полученный pay_token.

ВАЖНО: В ответе на запрос вернется method: offline и url: offline - Это означает, что плательщика не нужно переадресовывать на страницу платежной системы. При этом запрос Invoice/Pay уже не запускается.

  • Результат платежа приходит в Callback.

Пример Запроса:

Test URL: https://core.test-qostiq.com/invoice/create

Production URL: https://core.qostiq.com/invoice/create

Метод: POST

Обязательные параметры: amount, currency, payway, shop_id, shop_order_id, “required_pay_token”: “true”, sign.

{
"amount": "1",
"currency": "980",
"description": "Test invoice",
"payway": "card_uah",
"pay_token": "9af6e26f3b4b44e28c26c2bd994987c4",
"shop_id": "158",
"shop_order_id": "49135760",
"sign": "f63b494eb33e5d3549385d0ba2cb68b139e4a1b4483fd707aaac2095ab01bf42"
}

Пример Успешного ответа:

{
"data": {
"data": {
"en": "No manual. Please, pay invoice",
"ru": "Инструкция отсутствует. Пожалуйста, оплатите выставленный счет",
"uk": "нструкція відсутня. Будь ласка, оплатіть рахунок"
},
"id": "OFFLINE",
"method": "OFFLINE",
"url": "OFFLINE"
},
"error_code": 0,
"message": "Ok",
"result": true,
"shop_id": 158,
"transfer_id": null,
"withdraw_id": null
}

Пример Неуспешного ответа:

{
"data": null,
"error_code": 1,
"message": "IncorrectRequestParam",
"result": false
}