---
# System prepended metadata

title: '[1040217] Пакетна оплата карткою по токену'

---

УКР | [ENG](https://hackmd.io/6h9zyYaBTwOLzzP8XJDrfg)
![](https://i.imgur.com/ULmPUgP.jpg)
:arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw)

# [1040217] Пакетна оплата карткою по токену

*Що таке "оплата по токену" та як відбувається токенізація карт див. у розділі ["Оплата по токену"](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": "",
    "Action": "Prepare"/"Pay",
    "SuccessCallback": "",
    "FailedCallback": "",
    "Service": [
        {
        "Sum": ,
        "Attributes": {
            "ServiceName": {
                "uk": ""
                }
            },
        "ServiceCode": ""
        }
    ],
    "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`|
|`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`|
| `Service`^1^ | Так | Масив | Масив структур, що передає дані для оплати пакета послуг. |Див. нижче.|
|`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).|Див. нижче.|


^1^ Параметри масиву структур **"Service"**:

| Параметр | Обов’яз-ковість | Тип | Опис | Приклад |
|:-:|:-:|:-:|-|:-:|
| `Sum` | Так | Ціле | Сума платежу за послугою у копійках. |1грн.=>`100`|
| `Attributes` | Так |Структура | Структура, що передає дані про сервіс, наприклад, назва сервісу: `ServiceName`.| `{"uk": "Київ Теремки; Спортивно-оздоровчі послуги; 001151371"}`|
| `ServiceCode` | Так |Рядок | Буквено-цифрова назва послуги або її постачальника. Перелік даних значень є індивідуальним та визначається в залежності від послуг, що надаються Партнером.|`SL_8`|


:::success
<details>
<summary>Приклад структури "Data"</summary>
<br>

~~~md
{
  "Phone": "380932799111",
  "Sum": 14000,
  "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",
  "Service": [
    {
      "Sum": 14000,
      "Attributes": {
        "ServiceName": {
          "uk": "Київ Теремки; Спортивно-оздоровчі послуги; 001151371"
        }
      },
      "ServiceCode": "SL_8"
    }
  ],
  "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": 1040217
  },
  "Data": "{\"Phone\":\"38097775577\",\"Sum\":16500,\"ClientToken\":\"d1d2a97aac30eefd2d69598425d2bf3b2316a2f84b48e2a1d1b2c291f4e669\",\"Action\":\"Pay\",\"SuccessCallback\":\"https://api.kf.ua/api/paybox/xpay/process_payment/?status=success&order_id=PAY_xpay_50b21b8b583247f28bd3d4b0a2fb4bec\",\"FailedCallback\":\"https://api.kf.ua/api/paybox/xpay/process_payment/?status=failed&order_id=PAY_xpay_50b21b8b583247f28bd3d4b0a2fb4bec\",\"Service\":[{\"Sum\":16500,\"Attributes\":{\"ServiceName\":{\"uk\":\"Моршин,сплатазадодатковіпослугиготелю,;0013651108\"}},\"ServiceCode\":\"SL_8\"}],\"Transaction\":{\"TransactionID\":\"PAY_xpay_50b21b8b583247f28bd3d4b0a2fb4bec\",\"TerminalID\":\"1\",\"DateTime\":\"20230306174520\"},\"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)

**Оплата по токену**
[[104021] Оплата картою по токену](https://hackmd.io/CCEZ0su4T3OBtY-_QBSzew) 
[[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>
