owned this note
owned this note
Published
Linked with GitHub
УКР | [ENG](https://hackmd.io/VYlXRMiWRkimK0sxlTZ2BA)
![](https://i.imgur.com/ULmPUgP.jpg)
:arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw)
# [10101] Карта-карта
*Що таке "оплата картою Server-Server" та як проходить автентифікація відправника див. у розділі ["Оплата картою Server-Server"](https://hackmd.io/oXcYbY08Tq69ggTIX9OyaA).*
*Отримання поточного ліміту по операції див. у розділі: [[20009] "Отримання ліміту по операції [10101]"](https://hackmd.io/a-XSuzvRvG9t9cU2yoUvg).*
*Отримання даних картки див. у розділі: [[20110] "Отримання даних карти"](https://hackmd.io/zFCegCSASKKjGCmoJkTYmw).*
## Запит
*Опис атрибутів "Partner", "KeyAES" та "Sign" див. у розділі ["Загальна інформація по підключенню (API)"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA).*
### Структура "Data"
Структура "Data" для даної операції формується з наступних параметрів:
:::info
<details>
<summary>Формування структури "Data" (приклади наведені нижче)</summary>
<br>
~~~
{
"Sum": ,
"Commission": [
{
"sm": ,
"to": ,
"prc": ,
"from": ,
"min_sm": ,
"max_sm":
}
],
"Action": "Prepare"/"Pay",
"GoogleToken/AppleToken": "",
"Currency": "",
"Exchange": "",
"Purpose": "",
"SenderCard": {
"PAN": "",
"ExpMon": "",
"ExpYear": "",
"CVV": "",
"Cryptogram": "",
"Gateway": "",
"eciIndicator": "",
"IBAN": ""
},
"RecipientCard": {
"PAN": ""
},
"SenderPerson": {
"FirstName": "",
"LastName": "",
"MiddleName": "",
"Phone": "",
"Email": "",
"Address": "",
"City": "",
"CountryCode": "",
"PostCode": "",
"State": ""
},
"RecipientPerson": {
"FirstName": "",
"LastName": "",
"MiddleName": "",
"Address": "",
"City": "",
"CountryCode": "",
"PostCode": "",
"State": ""
},
"CallbackURL": "",
"Transaction": {
"TransactionID": "",
"TerminalID": "",
"DateTime": ""
},
"BrowserData": {
"device": {
"channel": ""
},
"browserIP": "",
"browserTZ": ,
"browserLanguage": "",
"browserUserAgent": "",
"browserColorDepth": ,
"browserJavaEnabled": ,
"browserScreenWidth": ,
"browserScreenHeight": ,
"fraudhuntFingerprint": ""
}
}
~~~
</details>
:::
| Параметр | Обов'яз-ковість | Тип | Опис | Приклад|
|:----:|:----:|:----:|----|:----:|
|`Sum`|Так|Ціле|Сума операції у копійках. |1грн.=>`100`|
|`Commission`^1^|Ні|Масив|Масив структур, що передає правила розрахунку комісії, що додається до суми операції.|Див. нижче.|
|`Action`| Ні, </br> `Pay` - за замовчуванням. |Рядок|Тип запиту. Можливі значення: `Prepare` – розрахунок комісії, </br> `Pay` - проведення оплати.|`Prepare` або `Pay`|
|`GoogleToken` / `AppleToken`|Ні|Рядок|Токен картки відправника, що передається при оплаті методом "Google/Apple Pay". |`24iOiJFQ3YyI-UwMDNk9In0...`|
| `Currency` | Так - при оплаті у валюті, відмінній від UAH. | Рядок | Код валюти *списання* – скорочене буквене позначення валюти, описане в стандарті [ISO 4217](https://uk.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D0%B8%D1%84%D1%96%D0%BA%D0%B0%D1%86%D1%96%D1%8F_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82_(ISO_4217)) ("UAH", "GBP", "USD" та ін.). |`UAH`|
| `Exchange` | Так - при оплаті у валюті, відмінній від UAH. | Рядок | Код валюти *зарахування* – скорочене буквене позначення валюти, описане в стандарті [ISO 4217](https://uk.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D0%B8%D1%84%D1%96%D0%BA%D0%B0%D1%86%D1%96%D1%8F_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82_(ISO_4217)) ("UAH", "GBP", "USD" та ін.). |`UAH`|
|`Purpose`|Ні|Рядок|Опис призначення платежу.|`Оплата замовлення №333`|
|`SenderCard`^2^|Так|Структура|Структура, що передає дані банківської картки відправника.|Див. нижче.|
|`RecipientCard`^3^|Так|Структура|Структура, що передає дані банківської картки одержувача.|Див. нижче.|
|`SenderPerson`^4^|Так - при оплаті у валюті, відмінній від UAH.|Структура|Структура, що передає персональні дані відправника.|Див. нижче.|
|`RecipientPerson`^5^|Так - при оплаті у валюті, відмінній від UAH.|Структура|Структура, що передає персональні дані одержувача.|Див. нижче.|
| `CallbackURL` | Ні | Рядок | URL адреса, на яку буде перенаправлений клієнт після завершення оплати. Див. розділ ["Оплата картою 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/ resul_page`|
|`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^ Параметри масиву структур **"Commission"**:
| Параметр | Обов'яз-ковість | Тип | Опис | Приклад|
|:----:|:----:|:----:|----|:----:|
|`sm`|Так/Ні `sm`або`prc`|Ціле|Фіксована сума комісії (у копійках). |`500`|
|`from`|Так|Ціле|Сума операції "від" включно - нижня межа діапазону (у копійках).|`0`|
|`to`|Так|Ціле|Сума операції "до" включно - верхня межа діапазону (у копійках).|`99999`|
|`min_sm`|Ні|Ціле|Мінімальна сума комісії (у копійках). Якщо розрахункова комісія менша - комісія дорівнюватиме `min_sm`. |`200`|
|`max_sm`|Ні|Ціле|Максимальна сума комісії (у копійках). Якщо розрахункова комісія більша - комісія дорівнюватиме `max_sm`. |`500`|
|`prc`|Так/Ні `sm`або`prc`|Ціле|Процент від суми операції (значення `1`=1%). Допускається одночасне надсилання параметрів: `sm` та `prc`. У такому випадку сума комісії дорівнює: `Sum*prc/100+sm`, де `Sum` - сума операції. |`1`|
^2^ Параметри структури **"SenderCard"**:
| Параметр | Обов'яз-ковість | Тип | Опис | Приклад|
|:----:|:----:|:----:|----|:----:|
|`PAN`|Так|Рядок[16]| PAN картки відправника (номер банківської карти).| `8888888888888888` |
|`ExpMon`|Так|Рядок[2]|Місяць терміну дії картки. Параметр вирівнюється до 2-х знаків символом "0".|`02`|
|`ExpYear`|Так|Рядок[2]|Останні 2 цифри року терміну дії картки. Параметр вирівнюється до 2-х знаків символом "0".|`22`|
|`CVV`|Так|Рядок[3]|CVV код картки.|`356`|
|`Cryptogram`|Ні|Рядок|Криптограма розшифрованого токена "Google/Apple Pay". Криптограма - динамічний одноразовий код кожної транзакції, що супроводжує токен. |`AFYjls2Of..XFAoABFA==`|
|`Gateway`|Так, якщо передається параметр `Cryptogram`.|Рядок|Шлюз токенізації "Google/Apple Pay". Передається лише, якщо дані картки були отримані в результаті розшифровування даних.|`gpay` або `applepay`|
|`eciIndicator`|Так, якщо передається параметр `Cryptogram`.|Рядок| [ECI-індикатор](https://developer.visa.com/request_response_codes#moto_eci_ind_codes), значення якого береться з розшифрованої криптограми "Google/Apple Pay". |`7`|
| `IBAN` |Ні (погоджується на етапі інтеграції) | Рядок | IBAN відправника (міжнародний номер банківського рахунку). | `UA4830529900000 26008031203677`|
^3^ Параметри структури **"RecipientCard"**:
| Параметр | Обов'яз-ковість | Тип | Опис | Приклад|
|:----:|:----:|:----:|----|:----:|
|`PAN`|Так|Рядок[16]| PAN картки одержувача (номер банківської карти).| `8888888888888888`|
^4^ Параметри структури **"SenderPerson"**:
| Параметр | Обов'яз-ковість | Тип | Опис | Приклад|
|:----:|:----:|:----:|----|:----:|
| `FirstName` | Ні | Рядок | Ім'я відправника. |`Олег`|
| `MiddleName` | Ні | Рядок | По батькові відправника. |`Михайлович`|
| `LastName` | Ні | Рядок | Прізвище відправника. |`Подільський`|
| `Phone` | Ні | Рядок | Телефон відправника у форматі: "380ххххххххх". |`380679335544`|
| `Email` | Ні | Рядок | Email відправника. |`index@gmail.com`|
| `Address`* | Ні | Рядок | Білінгова адреса відправника. |`456 Main Street`|
| `City`* | Ні | Рядок | Місто відправника. |`San Diego`|
| `CountryCode`* | Ні | Рядок | Код країни відправника (ISO CODES), згідно табл. "[Country Codes](https://countrycode.org/)". |`US`|
| `PostCode`* | Ні | Рядок | Індекс відправника. |`92126`|
| `State`* | Ні | Рядок | Штат відправника. |`California (CA)`|
^5^ Параметри структури **"RecipientPerson"**:
| Параметр | Обов'яз-ковість | Тип | Опис | Приклад|
|:----:|:----:|:----:|----|:----:|
| `FirstName` | Ні | Рядок | Ім'я одержувача. |`Андрій`|
| `MiddleName` | Ні | Рядок | По батькові одержувача. |`Валерійович`|
| `LastName` | Ні | Рядок | Прізвище одержувача. |`Мазур`|
| `Address`* | Ні | Рядок | Білінгова адреса одержувача. |`pl. Bankowy 3/5`|
| `City`* | Ні | Рядок | Місто одержувача. |`Warszawa`|
| `CountryCode`* | Ні | Рядок | Код країни одержувача (ISO CODES), згідно табл. "[Country Codes](https://countrycode.org/)". |`PL`|
| `PostCode`* | Ні | Рядок | Індекс одержувача. |`00-950`|
| `State`* | Ні | Рядок | Штат одержувача. |-|
:::warning
*Параметри передаються лише при використанні картки відправника/одержувача, емітованої не банком України.
:::
:::success
<details>
<summary>Приклад структури "Data"</summary>
<br>
~~~md
{
"Sum": 45500,
"Commission": [
{
"sm": 0,
"to": 80000,
"prc": 2.4,
"from": 0
},
{
"to": 999999999,
"prc": 0.5,
"from": 80001,
"min_sm": 2000
}
],
"Action": "Pay",
"GoogleToken/AppleToken": "24iOiJFQ3YyI-UwMDNk9In0...",
"Currency": "UAH",
"Exchange": "UAH",
"SenderCard": {
"CVV": "***",
"PAN": "535124******0453",
"ExpMon": "12",
"ExpYear": "24"
},
"Transaction": {
"TerminalID": "1",
"TransactionID": "8fd04e6e-c7c1-4bb6-8ee0-e67116062cf5"
},
"SenderPerson": {
"LastName": "",
"FirstName": "",
"MiddleName": ""
},
"RecipientCard": {
"PAN": "537541******5416"
},
"RecipientPerson": {
"LastName": "",
"FirstName": "",
"MiddleName": ""
}
}
~~~
</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`|Так|Ціле|Сума переказу (у копійках). |`25000`|
|`Fee`|Так|Ціле|Сума комісії (у копійках).|`1000`|
|`TotalSum`|Так|Ціле|Загальна сума переказу з урахуванням комісії (у копійках).|`26000`|
:::success
<details>
<summary>Приклад відповіді при значенні запиту "Action":"Prepare"</summary>
<br>
~~~md
{
"Code": 102,
"Message": "done",
"Data": {
"Fee": 1000,
"OperationID": 82769659,
"OperationStatus": 7,
"Sum": 25000,
"TotalSum": 26000
},
"KeyAES": "",
"Sign": ""
}
~~~
</details>
:::
### Параметр "Action":"Pay"
:::info
Для проведення платежу необхідно повторити запит [10101] з тими ж даними, але в параметрі `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": 10101,
"Locale": "uk"
},
"Data": "{\"Transaction\":{\"TransactionID\":\"57a250f3-2336-4531-9cf9-3d2ee0c468f2\",\"TerminalID\":\"1\"},\"Sum\":15000,\"Commission\":[{\"sm\":0,\"to\":30000,\"prc\":1.5,\"from\":0,\"min_sm\":250,\"max_sm\":350}],\"Action\":\"Pay\",\"Currency\":\"UAH\",\"Exchange\":\"UAH\",\"Purpose\":\"Оплатаінтернет-замовлення№34\",\"SenderCard\":{\"PAN\":\"888888******8888\",\"ExpMon\":\"12\",\"ExpYear\":\"24\",\"CVV\":\"***\"},\"RecipientCard\":{\"PAN\":\"888888******8822\"},\"SenderPerson\":{\"FirstName\":\"Володимир\",\"LastName\":\"Зеленський\",\"MiddleName\":\"Володимирович\",\"Address\":\"PeremohyAve23\",\"City\":\"LosAngeles\",\"CountryCode\":\"US\",\"PostCode\":\"92126\",\"State\":\"California(CA)\"},\"RecipientPerson\":{\"FirstName\":\"Кирило\",\"LastName\":\"Буданов\",\"MiddleName\":\"Олексійович\",\"Address\":\"ulicaWrzesinska12\",\"City\":\"Poznan\",\"CountryCode\":\"PL\",\"PostCode\":\"60-001\",\"State\":\"Poland\"},\"CallbackURL\":\"\",\"Transaction\":{\"TransactionID\":\"57a250f3-2336-4531-9cf9-3d2ee0c468f5\",\"TerminalID\":\"\",\"DateTime\":\"\"},\"BrowserData\":{\"device\":{\"channel\":\"\"},\"browserIP\":\"89.68.252.11\",\"browserTZ\":0,\"browserLanguage\":\"UA\",\"browserUserAgent\":\"\",\"browserColorDepth\":24,\"browserJavaEnabled\":false,\"browserScreenWidth\":1920,\"browserScreenHeight\":1080,\"fraudhuntFingerprint\":\"kHqPGWS1Mj18sZFsP8Wl\"}}",
"KeyAES": "",
"Sign": ""
}
~~~
</details>
<details>
<summary>Очікувана відповідь</summary>
<br>
~~~md
{
"Code": 102,
"Message": "needACS",
"Data": {
"3dsHtml": "PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKCSJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgoJPGh0bWw+Cgk8aGVhZD4KCSA8dGl0bGU+WFBBWSB0ZXN0IDNkczwvdGl0bGU+Cgk8L2hlYWQ+Cgk8Ym9keT4KICAgCgkgPGZvcm0gYWN0aW9uPSdodHRwczovL3N0YWdlLWNiMS54cGF5LmNvbS51YS9kdW1tZXJjYjNkcy8xMjgyODk0MS85NDkxMTk1L25zaFNPdlhtYjJyWi9zbXAvc3VjYycgbWV0aG9kPSdHRVQnPgoJIDxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgoJIDxidXR0b24+TWFrZSBTVUNDRVNTPC9idXR0b24+CgkgPC9wPgoJIDwvZm9ybT4KICAgCgkgPGZvcm0gYWN0aW9uPSdodHRwczovL3N0YWdlLWNiMS54cGF5LmNvbS51YS9kdW1tZXJjYjNkcy8xMjgyODk0MS85NDkxMTk1L25zaFNPdlhtYjJyWi9zbXAvZmFpbCcgbWV0aG9kPSdHRVQnPgoJIDxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgoJIDxidXR0b24+TWFrZSBGQUlMPC9idXR0b24+CgkgPC9wPgoJIDwvZm9ybT4KICAgCgk8L2JvZHk+CiAgIDwvaHRtbD4=",
"LongPollerID": "9491195",
"OperationID": 9491195,
"OperationStatus": 2
},
"KeyAES": "",
"Sign": ""
}
~~~
</details>
:::
## Пов'язані запити
[[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)
[[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)
[[20009] Отримання ліміту по операції [10101]](https://hackmd.io/a-XSuzvRvG9t9cU2yoUvg)
[[20110] Отримання даних карти](https://hackmd.io/zFCegCSASKKjGCmoJkTYmw)
## Довідкові матеріали
Опис загальних параметрів системи 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>