УКР | [ENG](https://hackmd.io/4oNILIFlQD-bIpuN9PVhZQ) ![](https://i.imgur.com/ULmPUgP.jpg) :arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw) # [90001/90002/90003/90004/90005] Підготовка операції ## Застосування Процедура проведення операції **через термінал** формується з двох запитів: |"OperationType" | Тип операції | |----|----| |`90001/90002/90003/90004/90005`|Підготовка операції.| |`90000`|[Виконання операції](https://hackmd.io/FtHIJD2mSU-zmMZsFm5axQ).| Внаслідок запиту підготовки операції виконується перевірка можливості зарахування коштів за вказаними реквізитами. ## Порядок надсилання запитів ![](https://i.imgur.com/5ZJdd06.jpg) ## Запити підготовки операції *Опис атрибутів "Partner", "KeyAES" та "Sign" див. у розділі ["Загальна інформація по підключенню (API)"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA).* Запити підготовки будь-якої операції містять однаковий набір параметрів, що відрізняються лише значенням поля `Recipient` в залежності від типу операції. Тип операції передається у полі `OperationType`. |OperationType | Тип операції | Recipient| Приклад | |:----:|----|----|:----:| |`90001`|Зарахування коштів на карту.| PAN картки (номер банківської карти).| `8888888888888888` | |`90002`|Зарахування коштів на гаманець.|Ідентифікатор гаманця: телефон чи email. | `380679335544` | |`90003`^1^|Зарахування коштів за реквізитами.|^1^ Структура, що передає дані реквізитів. |Див. приклад нижче.| |`90004`^2^|Оплата комунальних послуг.| ^2^ Структура, що передає дані для оплати комунальних послуг. |Див. приклад нижче.| |`90005`|Поповнення телефону. | Номер телефону у форматі: "380ххххххххх". |`380679335544`| ### Структура "Data" Структура "Data" для даної операції формується з наступних параметрів: :::info <details> <summary>Формування структури "Data" (приклади наведені нижче)</summary> <br> ~~~ { "Sum": , "Recipient": "", "Email": "", "Phone": "", "Address": "", "CashIn": [ { "n": , "value": } ], "Transaction": { "TransactionID": "", "TerminalID": "", "DateTime": "" } } ~~~ </details> ::: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `Sum` |Ні|Ціле|Ймовірна сума операції у копійках. Параметр застосовується для перевірки можливості поповнення на зазначену суму. |1 грн.=>`100`| |`Recipient`|Так|Рядок / Структура|Реквізити для зарахування коштів. Значенням поля формується в залежності від типу операції (див. вище).|`380679335544`| | `Email` | Ні | Рядок | Email клієнта. |`index@gmail.com`| | `Phone` | Ні | Рядок | Телефон клієнта у форматі: "380ххххххххх". |`380679335544`| | `Address` | Ні | Рядок | Адреса ПТКС (програмно-технічний комплекс самообслуговування). |`Хрещатик, 1`| |`CashIn` |Ні|Масив|Масив структур, що передає покупюрний звіт (для ПТКС), де: `n` - номер внесеної купюри, `value` - номінал купюри. |`[{"n":1, "value":100}, {"n":2, "value":200}]`| |`Transaction`|Так|Структура|Структура, що передає дані про транзакцію. Див. розділ ["Структура "Transaction"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA#2-Data).|Див. нижче.| ^1^ Параметри структури **"Recipient" для запиту [90003]** (зарахування коштів за реквізитами): | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `EDRPOU` |Так| Рядок | ЄДРПОУ отримувача. | `34190717` | | `Account` |Так| Рядок | IBAN отримувача (міжнародний номер банківського рахунку). |`UA1730529900000-26207893720887`| | `MFO` | Так | Рядок | МФО банку отримувача. | `305299` | | `Purpose` | Так | Рядок | Призначення платежу. | `Оплата замовлення №543345` | | `SenderName` | Так | Рядок | ПІБ відправника платежу. | `Дзюба А.І.` | | `RecipientName` | Так | Рядок | ПІБ отримувача платежу. | `Шевченко Т.Г.` | ^2^ Параметри структури **"Recipient" для запиту [90004]** (оплата комунальних послуг): | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `SenderName` | Так | Рядок | ПІБ платника. |`Биков Василь Сергійович`| | `Account` | Так | Рядок | Номер особового рахунку платника. |`№859485`| | `Address` | Так | Рядок | Сплата за адресу. |`м.Київ, вул. Хрещатик, 1`| | `Order` | Так | Рядок | Номер рахунку. |`№433`| | `Contract` | Так | Рядок | Номер договору. |`№МВ-848`| | `MID` | Так | Рядок | Ідентифікатор отримувача оплати. |`117`| | `Phone` | Ні | Рядок | Телефон клієнта у форматі: “380ххххххххх” |`380679335544`| ## Відповідь *Загальна інформація по формуванню структури відповіді наведена у розділі [“Загальна інформація по підключенню (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).* :::warning Ідентифікатор операції (значення `OperationID`, отримане у відповіді на запит) необхідно відобразити у чеку клієнту. Ідентифікатор буде використаний для аналізу спірних ситуацій. ::: ### Приклади відповідей :::success <details> <summary>Підготовка проведена успішно</summary> <br> ~~~md { "Code": 102, "Message": "Done", "Data": { "OperationDate": "2018-12-25T14:48:10.977847+02:00", "OperationID": 167813, "OperationStatus": 7 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: :::success <details> <summary>Помилка виконання операції</summary> <br> ~~~md { "Code": 400, "Message": "Fail", "Data": { "OperationDate": "2018-12-25T14:48:10.977847+02:00", "OperationID": 0, "OperationStatus": 21 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: ## Тестові дані :::info ![](https://i.imgur.com/gtxKB22.png) Для тестування даного запиту застосовуйте параметри **Тестового Партнера**. Див. деталі підключення у розділі: ["Параметри підключення Тестового Партнера"](https://hackmd.io/kGejjgk0QaiwfpoZFnTadA). <details> <summary>Тестовий запит [90001]</summary> <br> ~~~md { "Partner": { "PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1", "OperationType": 90001 }, "Data": "{\"Sum\":19000,\"Recipient\":\"8888888888888888\",\"Email\":\"greg.jenko@mail.test\",\"Phone\":\"380277777777\",\"Transaction\":{\"TransactionID\":\"0c5328f5-bda9-4376-b6a0-ca544fcb81fc\",\"TerminalID\":\"1\",\"DateTime\":\"2023042110:15:01\"}}", "KeyAES": "", "Sign": "" } ~~~ </details> <details> <summary>Очікувана відповідь [90001]</summary> <br> ~~~md { "Code": 200, "Message": "Done", "Data": { "OperationID": 9508748, "OperationStatus": 7, "Sum": 19000 }, "KeyAES": "", "Sign": "" } ~~~ </details> <br> <details> <summary>Тестовий запит [90000]</summary> <br> ~~~md { "Partner": { "PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1", "OperationType": 90000 }, "Data": "{\"OperationID\":9508748,\"Sum\":19000,\"Recipient\":\"8888888888888888\",\"Email\":\"greg.jenko@mail.test\",\"Phone\":\"380277777777\",\"Transaction\":{\"TransactionID\":\"0c5328f5-bda9-4376-b6a0-ca544fcb82fc\",\"TerminalID\":\"1\",\"DateTime\":\"2023042110:15:01\"}}", "KeyAES": "", "Sign": "" } ~~~ </details> <details> <summary>Очікувана відповідь [90000]</summary> <br> ~~~md { "Code": 200, "Message": "Done", "Data": { "OperationDate": "2023-04-21T11:34:33.481997+03:00", "OperationID": 9508749, "OperationStatus": 10, "result": "OK" }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: ## Довідкові матеріали Опис загальних параметрів системи 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>