УКР | [ENG](https://hackmd.io/I4FJ0d0eStuvfqG2YmS8IQ) ![](https://i.imgur.com/ULmPUgP.jpg) :arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw) # [104021] Оплата картою по токену *Що таке "оплата по токену" та як відбувається токенізація карт див. у розділі ["Оплата по токену"](https://hackmd.io/U6K080xgRw62OXEMXq7EbA).* *Що таке "оплата картою server-server" та як проходить автентифікація відправника див. у розділі ["Оплата картою server-server"](https://hackmd.io/oXcYbY08Tq69ggTIX9OyaA).* ## Запит *Опис атрибутів "Partner", "KeyAES" та "Sign" див. у розділі ["Загальна інформація по підключенню (API)"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA).* ### Структура "Data" Структура "Data" для даної операції формується з наступних параметрів: :::info <details> <summary>Формування структури "Data" (приклади наведені нижче)</summary> <br> ~~~md { "Phone": "", "Sum": , "ClientToken": "", "site": "", "Order": "", "Action": "Prepare"/"Pay", "SuccessCallback": "", "FailedCallback": "", "Transaction":{ "TransactionID": "", "TerminalID": "", "DateTime": "" }, "BrowserData": { "device": { "channel": "" }, "browserIP": "", "browserTZ": , "browserLanguage": "", "browserUserAgent": "", "browserColorDepth": , "browserJavaEnabled": , "browserScreenWidth": , "browserScreenHeight": , "fraudhuntFingerprint": "" } } ~~~ </details> ::: | Параметр | Обов'яз-ковість | Тип | Опис | Приклад| |:----:|:----:|:----:|----|:----:| | `Phone` | Так | Рядок | Телефон клієнта у форматі: "380ххххххххх". |`380679335544`| | `Sum` | Так | Ціле | Сума операції у копійках. |1грн.=>`100`| |`ClientToken`|Так|Рядок|Токен картки клієнта.|`d1d2a97aac30.. d12c291f4e669`| |`site`|Ні|Рядок|Назва сайту, з якого здійснюється оплата.|`https://www.xpay.com.ua/`| | `Order` | Ні | Рядок |Номер замовлення. |`1234А`| | `Purpose` | Ні | Рядок |Опис призначення платежу. |`Оплата замовлення №333`| |`Action`| Ні |Рядок|Тип запиту: `Prepare` - розрахунок комісії, або `Pay` - проведення оплати (значення за замовчуван.).|`Prepare` або `Pay`| | `SuccessCallback` | Ні | Рядок | URL (server), що викликається у разі успішного проведення операції. Див. розділ ["Оплата картою Server-Server"](https://hackmd.io/oXcYbY08Tq69ggTIX9OyaA?both#%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82-%D0%BA%D0%BB%D1%96%D1%94%D0%BD%D1%82%D0%B0-%D0%BD%D0%B0-%D1%81%D1%82%D0%BE%D1%80%D1%96%D0%BD%D0%BA%D1%83-CallbackURL).|`https://partner.host/ cb_success`| | `FailedCallback` | Ні | Рядок | URL (server), що викликається у разі помилки проведення операції. Див. розділ ["Оплата картою Server-Server"](https://hackmd.io/oXcYbY08Tq69ggTIX9OyaA?both#%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82-%D0%BA%D0%BB%D1%96%D1%94%D0%BD%D1%82%D0%B0-%D0%BD%D0%B0-%D1%81%D1%82%D0%BE%D1%80%D1%96%D0%BD%D0%BA%D1%83-CallbackURL).|`https://partner.host/ cb_fail`| |`BrowserData`|Ні|Структура|Структура, що передає дані браузера при *3DSecure 2.0*. Див. розділ ["Структура "BrowserData"](https://hackmd.io/oXcYbY08Tq69ggTIX9OyaA?both#%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0-%E2%80%9CBrowserData%E2%80%9D).|Див. приклад у розділі ["Структура "BrowserData"](https://hackmd.io/oXcYbY08Tq69ggTIX9OyaA?both#%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0-%E2%80%9CBrowserData%E2%80%9D).| |`Transaction`|Так|Структура|Структура, що передає дані про транзакцію. Див. розділ ["Структура "Transaction"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA#2-Data).|Див. нижче.| :::success <details> <summary>Приклад структури "Data"</summary> <br> ~~~md { "Phone": "380932799111", "Sum": 10000, "ClientToken": "d1d2a97aac30eefd2d69598425d2bf3b2316a2f84b48e2a1d1b2c291f4e669", "Action": "Pay", "FailedCallback": "https://api.kf.ua/api/paybox/xpay/process_payment/?status=failed&order_id=PAY_xpay_50b21b8b583247f28bd3d4b0a2fb4bec", "SuccessCallback": "https://api.kf.ua/api/paybox/xpay/process_payment/?status=success&order_id=PAY_xpay_50b21b8b583247f28bd3d4b0a2fb4bec", "Transaction": { "TransactionID": "PAY_xpay_50b21b8b583247f28bd3d4b0a2fb4bec", "TerminalID": "1", "DateTime": "20220619 063111" } ~~~ </details> ::: ## Відповідь *Загальна інформація по формуванню структури відповіді наведена у розділі [“Загальна інформація по підключенню (API)”](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA?both#%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0-%D0%B2%D1%96%D0%B4%D0%BF%D0%BE%D0%B2%D1%96%D0%B4%D1%96).* ### Параметр "Action":"Prepare" При надісланому значенні запиту `"Action":"Prepare"` - у структурі “Data” передаються дані розрахунку комісії: | Параметр | Обов'яз-ковість | Тип | Опис | Приклад| |:----:|:----:|:----:|----|:----:| |`Sum`|Так|Ціле|Сума операції в копійках. |`500`| |`Fee`|Так|Ціле|Сума комісії у копійках.|`50`| |`TotalSum`|Так|Ціле|Загальна сума операції в копійках з урахуванням комісії.|`550`| :::success <details> <summary>Приклад відповіді при значенні запиту "Action":"Prepare"</summary> <br> ~~~md { "Code": 102, "Message": "done", "Data": { "Sum": 500, "Fee": 50, "TotalSum": 550, "OperationStatus": 7 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: ### Параметр "Action":"Pay" :::info Для проведення платежу необхідно повторити запит [104021] з тими ж даними, але в параметрі `Action` вказати значення `Pay`. ::: #### Приклади відповідей при значенні запиту "Action":"Pay" :::success <details> <summary>Запит успішно прийнятий та вимагає підтвердження "3DS"</summary> <br> ~~~md { "Code": 102, "Message": "need3ds", "Data": { "OperationID": 111, "3dsHtml": "<html сторінка у кодуванні base64>", "OperationStatus": 2 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: :::success <details> <summary>Запит успішно прийнятий та вимагає підтвердження "OTP"</summary> <br> ~~~md { "Code": 102, "Message": "needOTP", "Data": { "OperationID": 111, "otpJson": "<JSON структура у вигляді рядка>", "OperationStatus": 3 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: :::success <details> <summary>Операція проведена успішно</summary> <br> ~~~md { "Code": 200, "Message": "done", "Data": { "OperationID": 555, "OperationStatus": 10 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: :::success <details> <summary>Помилка виконання операції</summary> <br> ~~~md { "Code": 200, "Message": "done", "Data": { "OperationID": 111, "OperationStatus": 21, "Reason": 3 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: ## Тестові дані :::info ![](https://i.imgur.com/gtxKB22.png) Для тестування даного запиту застосовуйте параметри **Тестового Партнера**. Див. деталі підключення у розділі: ["Параметри підключення Тестового Партнера"](https://hackmd.io/kGejjgk0QaiwfpoZFnTadA). <details> <summary>Тестовий запит</summary> <br> ~~~md { "Partner": { "PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1", "OperationType": 104021 }, "Data": "{\"Phone\":\"380233333333\",\"Sum\":18500,\"ClientToken\":\"d1d2a97aac30eefd2d69598425d2bf3b2316a2f84b48e2a1d1b2c291f4e669\",\"Action\":\"Pay\",\"SuccessCallback\":\"https://partner.host/cb_success\",\"FailedCallback\":\"https://partner.host/cb_fail\",\"Transaction\":{\"TransactionID\":\"45913135c6e2be0cbf58\",\"TerminalID\":\"1\",\"DateTime\":\"2023031310:51:03\"},\"BrowserData\":{\"device\":{\"channel\":\"BRW\"},\"browserIP\":\"89.68.252.11\",\"browserTZ\":180,\"browserLanguage\":\"UA\",\"browserUserAgent\":\"Chrome/100.0.4896.127\",\"browserColorDepth\":24,\"browserJavaEnabled\":false,\"browserScreenWidth\":1920,\"browserScreenHeight\":1080,\"fraudhuntFingerprint\":\"kHqPGWS1Mj18sZFsP8Wl\"}}", "KeyAES": "", "Sign": "" } ~~~ </details> <details> <summary>Очікувана відповідь</summary> <br> ~~~md ~~~ </details> ::: ## Пов'язані запити [[10101] Карта-карта](https://hackmd.io/ZpBbYAb4RsaTc8NU_0zwfA) [[10102/101023/101025] Карта-гаманець](https://hackmd.io/jxzgAy4nSt-Q-6chgRCZdQ) [[10103] Карта-IBAN фізична особа](https://hackmd.io/mQFXiO1USRuVX2-ah4h1FQ) [[101031] Карта-IBAN юридична особа](https://hackmd.io/-jgdOWRiRwaabSv5_YjAKQ) [[10150/10051] Карта-телефон-карта](https://hackmd.io/rXZuYXYwQp2W-QffXO99yA) **Оплата по токену** [[1040217] Пакетна оплата карткою по токену](https://hackmd.io/UvXgiPdmRGOs0hwDtc_CEQ) [[104121] Автосписання з карти по токену (МОТО-операції)](https://hackmd.io/-_Rj-iqZTMy22FxFgUc08w) **Отримання даних карти** [[20400/20410] Отримання даних карти за номером телефону](https://hackmd.io/EjF35e_sSfKad2ojsEoYWQ) [[20404] Отримання даних карти за токеном](https://hackmd.io/Fo0-oeZ4Sz-Gju6Qg01hiA) **Отримання даних по проведеній операції** [[20003] Отримання статусу операції](https://hackmd.io/fvd8btZLQXywluia6w5uxg) ## Довідкові матеріали Опис загальних параметрів системи XPAY див. у розділі ["Довідкові матеріали"](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w): коди типів операцій, типи платіжних методів, коди статусів обробки операцій, відомості та помилки, що повертаються у відповіді та ін. ![](https://i.imgur.com/17gAyWb.png) :arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw) :arrow_left: [Загальна інформація по підключенню (API)](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA) <details> <summary>Служба підтримки XPAY</summary> </br> Телефон: +38 093 891 92 00 Email: info@xpay.com.ua Telegram: @xpaysupportbot </details>