XPAY
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    УКР | [ENG](https://hackmd.io/qSkRHz6gRKmxNrWRwwrjqg) ![](https://i.imgur.com/ULmPUgP.jpg) :arrow_left: [На Головну](/Mj2ZqCVpSq6A6Jzm6ladlw) # [10005] Отримання посилання на платіжну сторінку :::info [TOC] ::: *Що таке Checkout, типи платежів та методи інтеграції див. у розділі ["Checkout"](https://hackmd.io/0mVv8NSpR1SBlFDoUtK5GQ).* :::warning За замовчуванням платіжна сторінка доступна протягом 15 хвилин. За необхідності, даний відрізок часу може змінюватись у параметрі `TTL` в структурі "Data" (див. нижче) або встановлюватись в налаштуваннях системи Оператора. ::: ## Запит *Опис атрибутів "Partner", "KeyAES" та "Sign" див. у розділі ["Загальна інформація по підключенню (API)"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA).* ### Структура "Data" Структура "Data" для даної операції формується з наступних параметрів: :::info <details> <summary>Формування структури "Data" (приклади наведені нижче)</summary> <br> ~~~ { "PayType": "", "Phone": "", "Email": "", "Account": "", "FirstName": "", "LastName": "", "MiddleName": "", "IPN": "", "PaymentSum": , "Order": "", "Purpose": "", "ClientIP": "", "PanSuffix": "", "Currency": "", "Exchnge": "", "Signature": "", "AccountID": "", "Sum": "", "BrowserFingerprint": "", "RecipientCard": { "PAN": "", "FirstName": "", "MiddleName": "", "LastName": "", "IPN": "", "document_type_id": "", "doc_series": "", "doc_number": "", "dt_doc_issue": "", "dt_doc_exp": "", "doc_issued_by": "" }, "MIDs": [ { "MID": , "Sum": , "PaymentInfo": [ { "Caption": "", "Value": "" } ], "Account": "", "EDRPOU": "", "MFO": "", "Name": "", "Order": "" } ], "PaymentInfo": [ { "Caption": "", "Value": "" } ], "RegistryAttr": [ { "Caption": "", "Value": "" } ], "Service": [ { "ServiceCode": "", "Sum": } ], "Callback": { "PaySuccess": { "URL": "" }, "PayFail": { "URL": "" } }, "BillAttr": { "PayerAddress": "" }, "TTL": "", "CallBackURL": "", "AccountPayments": [ { "Sum": , "Purpose": "", "Account": "", "EDRPOU": "", "ID": "", "RecipientName": "", "SenderName": "", "IPN": "" } ], "ticket": [], "cashiersignature": "", "Transaction": { "TransactionID": "", "TerminalID": "", "DateTime": "" } } ~~~ </details> ::: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `PayType` | Ні | Рядок | Тип платіжного методу: </br> `0` або `відсутність параметра` - пряме списання коштів з картки клієнта через с2а (card-to-account) або p2p (person-to-person) переказ; </br> `1` - оплата через шлюз інтернет-еквайрингу; </br> `2` - відкладений платіж^1^; </br> `3` - оплата через сторонній віджет; </br> `4` - оплата за реквізитами^2^; </br> `5` - відкладений платіж за реквізитами^1,2^; </br> `7` - пакетна оплата послуг; </br> `12` - пакетна оплата послуг за реквізитами; </br> `13` - оплата на користь мерчантів (MIDs); </br> `20` - оплата через "Google/Apple Pay". </br> Див. деталі у розділі ["Типи платіжного методу "PayType"](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w?view#%D0%A2%D0%B8%D0%BF%D0%B8-%D0%BF%D0%BB%D0%B0%D1%82%D1%96%D0%B6%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%83-PayType). | `5` | :::warning ^1^ При проведенні запитів "відкладеного платежу" (`"PayType":"2"` або `"PayType":"5"`) - Партнер додатково надсилає запит на "[Підтвердження/скасування передавторизації](https://hackmd.io/aTXOGiPaSkewvXdXUbpstg)". У разі відсутності підтвердження - списання коштів буде автоматично скасовано (через відрізок часу, вказаний у договорі з Партнером). ^2^ При проведенні запитів "оплати за реквізитами" (`"PayType":"4"` або `"PayType":"5"`) - Оператор у відповідь надсилає запит "check", на який необхідно повернути дані реквізитів для оплати (див. розділ ["[check] Протокол двостадійної взаємодії"](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA)). ::: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `Phone`^3^ | Ні | Рядок | Телефон клієнта у форматі: "380ххххххххх". |`380679335544`| | `Email`^3^ | Ні | Рядок | Email клієнта. |`index@gmail.com`| | `Account`^3^ | Ні | Рядок |Ідентифікатор клієнта у системі Партнера: телефон або email. Дані клієнта, у ході обробки яких Оператор може надсилати зустрічний запит "[check](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA)" Партнеру. |`380638754213`| :::warning ^3^ Якщо в запиті не вказано жодного з цих параметрів (`Phone`, `Email` чи `Account`) - Оператор передає посилання на форму для їх введення клієнтом. Після отримання даних виконується запит "[check](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA?view)" для уточнення деталей оплати. Серед полів `Phone` та `Email` більш пріоритетним є `Phone`. Якщо запит необхідно проводити за допомогою email-у, то його слід вказати у полі `Account`. ::: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `FirstName` | Ні | Рядок | Ім'я клієнта. |`Олег`| | `MiddleName` | Ні | Рядок | По батькові клієнта. |`Михайлович`| | `LastName` | Ні | Рядок | Прізвище клієнта. |`Подільський`| | `IPN` | Умовно-обов’язковий (визначається на етапі інтеграції) | Рядок | Індивідуальний податковий номер (ІПН) платника. |`111111111111`| |`RecipientCard`^4^|Ні|Структура|Структура, що передає дані банківської картки одержувача.|Див. нижче.| | `PaymentSum` | Ні | Ціле | Сума оплати у копійках. Параметр передається для відображення суми оплати на платіжній сторінці. При заповненому полі - Оператор не здійснює запит "[check](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA)" для визначення суми оплати. |50грн.=>`5000`| | `Order` | Ні | Рядок |Номер замовлення. |`1234А`| | `Purpose` |Ні| Рядок | Призначення платежу. |`Оплата замовлення №543345`| | `ClientIP` | Ні | Рядок | IP адреса, з якої клієнт ініціює операцію. |`127.0.0.1`| | `PanSuffix` | Ні | Рядок | Останні 4 цифри номера картки, у разі, якщо відбулась попередня верифікація картки. |`3456`| | `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)) (“GBP”, “USD”, ..). |`USD`| | `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)) (“GBP”, “USD”, ..). |`GBP`| | `BrowserFingerprint` | Ні | Рядок | [Цифровий відбиток браузера](https://uk.wikipedia.org/wiki/%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B8%D0%B9_%D0%B2%D1%96%D0%B4%D0%B1%D0%B8%D1%82%D0%BE%D0%BA_%D0%BF%D1%80%D0%B8%D1%81%D1%82%D1%80%D0%BE%D1%8E): [https://m.habr.com/ru/company/oleg-bunin/blog/321294/](https://m.habr.com/ru/company/oleg-bunin/blog/321294/); [https://github.com/valve](https://github.com/valve) |`86a190af26de3a920c62ea19ba0df3a8`| | `BillAttr` | Ні | Структура | Структура, що передає дані про зворотну адресу клієнта: `PayerAddress`. |`м. Харків, вул. Хіміків 4/59`| | `Callback` | Ні | Структура | Складається з 2-ох структур даних `PaySuccess` (для обробки успішного платежу) та `PayFail` (для обробки помилки), де поле `URL` - адреса, на яку буде перенаправлений клієнт після завершення оплати. |`"Callback": { "PaySuccess": { "URL": "https://partner.com/callback/success"}, "PayFail": {"URL": "https://partner.com/callback/fail"}}`| | `CallBackURL` | Ні | Рядок | Адреса Партнера, на яку виконуються запити "[check](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA)" та "[pay / error / refund](https://hackmd.io/2x_MsqZIT6epfiqcQimFwQ)" для сповіщення про результати оплати. |`https://partner.com/callback/xpay2`| | `TTL` | Ні | Ціле | Час, протягом якого доступна сторінка для оплати. Параметр вказується в секундах. |`300`| |`Transaction`|Так|Структура|Структура, що передає дані про транзакцію. Див. розділ ["Структура "Transaction"](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA#2-Data).|Див. нижче.| ^4^ Параметри структури **"RecipientCard"**: | Параметр | Обов'яз-ковість | Тип | Опис | Приклад| |:----:|:----:|:----:|----|:----:| |`PAN`|Так|Рядок[16]| PAN картки одержувача (номер банківської карти).| `8888888888888888`| | `FirstName` | Так* | Рядок | Ім'я одержувача. |`Максим`| | `MiddleName` | Так* | Рядок | По батькові одержувача. |`Олегович`| | `LastName` | Так* | Рядок | Прізвище одержувача. |`Кравець`| | `IPN` | Так* | Рядок | Індивідуальний податковий номер (ІПН) одержувача. |`111111111111`| | `document_type_id` | Так* | Ціле | Тип документа з довідника: </br> `1` - паспорт, </br> `2` - ID-картка. |`1`| | `doc_series` | Так* | Рядок | Серія документа. |`19910824-00026`| | `doc_number` | Так* | Рядок | Номер документа. |`123456789`| | `dt_doc_issue` | Так* | Рядок | Дата видачі документа. |`2022-06-14`| | `dt_doc_exp` | Так* | Рядок | Термін закінчення дії документа. |`2022-06-14`| | `doc_issued_by` | Так* | Рядок | Орган, що видав документ. |`3459`| **Параметри є умовно-обов’язковими (визначаються на етапі інтеграції).* </br> Розглянемо параметри атрибуту "Data", що мають **структуру масивів**. #### Масив "MIDs" | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `MIDs` | Так для: `PayType`=`"13"` | Масив | Масив, що передає дані для розщеплення прийнятого платежу на користь мерчантів. |Див. приклад нижче.| Параметри масиву **"MIDs"**: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `MID` |Так| Ціле | Ідентифікатор мерчанта в системі Оператора (Merchant ID), на який зараховуються кошти. |`111`| | `Sum` |Так| Ціле | Сума платежу у копійках.|1грн.=>`100` | | `PaymentInfo` | Ні | Масив | Параметр передається для відображення деталей платежу на сторінці оплати. |Див. приклад нижче.| | `Account` |Ні| Рядок | Розрахунковий рахунок або IBAN одержувача (міжнародний номер банківського рахунку). | `UA4830529900000 26008031203677`| |`EDRPOU`|Ні|Рядок | [ЄДРПОУ](https://uk.wikipedia.org/wiki/%D0%84%D0%B4%D0%B8%D0%BD%D0%B8%D0%B9_%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%B2%D0%BD%D0%B8%D0%B9_%D1%80%D0%B5%D1%94%D1%81%D1%82%D1%80_%D0%BF%D1%96%D0%B4%D0%BF%D1%80%D0%B8%D1%94%D0%BC%D1%81%D1%82%D0%B2_%D1%82%D0%B0_%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D1%96%D0%B7%D0%B0%D1%86%D1%96%D0%B9_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D0%B8) одержувача.|`3505506226` | | `MFO` |Ні |Рядок | [МФО](https://uk.wikipedia.org/wiki/%D0%9C%D0%A4%D0%9E) - код банку одержувача. |`305299`| | `Name` | Ні | Рядок | Назва одержувача. |`ТОВ "Ресурс"`| | `Order` | Ні | Рядок | Номер замовлення одержувача/номер особового рахунку/тощо. |`123`| :::success <details> <summary>Приклад масиву даних "MIDs"</summary> ~~~md { "MIDs": [ { "MID": 111, "PaymentInfo": [ { "Caption": "Призначення", "Value": "Погашення за контрактом №3642989012-5 від 03.04.2021 Пупкіна Валерія Сергіївна" } ], "Sum": 100, "Account": "UA483052990000000008031203000", "EDRPOU": "3505501111", "MFO": "123456" }, { "MID": 112, "PaymentInfo": [ { "Caption": "Призначення", "Value": "Погашення за контрактом №3642989012-5 від 03.04.2021 Пупкіна Валерія Сергіївна" } ], "Sum": 200, "Account": "UA483052990000000008031203000", "EDRPOU": "3505501111", "MFO": "123456" } ] } ~~~ </details> ::: #### Масив "PaymentInfo" | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `PaymentInfo` | Ні | Масив | Параметр передається для відображення деталей платежу на сторінці оплати. |Див. приклад нижче.| Параметри масиву **"PaymentInfo"**: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `Caption` |Так| Рядок | Опис додаткової інформації. |`Призначення`| | `Value` |Так| Рядок | Додаткова інформація. |`Погашення за контрактом №3642989012-5 від 03.04.2021 Пупкіна Валерія Сергіївна`| :::success <details> <summary>Приклад масиву даних "PaymentInfo"</summary> <br> Необхідно відобразити на платіжній сторінці: <br> "Призначення: Погашення за контрактом №3642989012-5 від 03.04.2021 Пупкіна Валерія Сергіївна" ~~~md { "PaymentInfo": [ { "Caption": "Призначення", "Value": "Погашення за контрактом №3642989012-5 від 03.04.2021 Пупкіна Валерія Сергіївна" } ] } ~~~ </details> ::: #### Масив "RegistryAttr" | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `RegistryAttr` | Ні | Масив | Параметр застосовується для формування та відправки звітів Партнера. |Див. приклад нижче.| Параметри масиву **"RegistryAttr"**: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `Caption` |Так| Рядок | Назва поля, що відображається у файлі звітності. |`acc_id`| | `Value` |Так| Рядок | Значення поля, що відображається у файлі звітності.|`123`| :::success <details> <summary>Приклад масиву даних "RegistryAttr"</summary> ~~~md { "RegistryAttr": [ { "Caption": "acc_id", "Value": "123" }, { "Caption": "mdf_id", "Value": "11011" } ] } ~~~ </details> ::: #### Масив "Service" | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `Service`^5^ | Ні | Масив `ServiceItem` | Масив даних, що передається для оплати пакета послуг. Кожен платіж описується назвою послуги та сумою оплати за послугу. |Див. приклад нижче.| :::warning ^5^ Параметр передається лише при проведенні запиту [пакетної оплати послуг](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w?both#%D0%A2%D0%B8%D0%BF%D0%B8-%D0%BF%D0%BB%D0%B0%D1%82%D1%96%D0%B6%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%83-%E2%80%9CPayType%E2%80%9D) (`"PayType":"7"`), тобто розщеплення платежу клієнта на декількох одержувачів та зарахування коштів на заздалегідь прописані гаманці. ::: Параметри масиву **"ServiceItem"**: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `ServiceCode` | Так |Рядок | Буквено-цифрова назва послуги або її постачальника. Перелік даних значень є індивідуальним та визначається в залежності від послуг, що надаються Партнером.|`TEPLO`| | `Sum` | Так | Ціле | Сума платежу за послугою у копійках. |1грн.=>`100`| :::success <details> <summary>Приклад масиву даних "ServiceItem"</summary> <br> ~~~md { "Service": [ { "ServiceCode": "TEPLO", "Sum": 5500 }, { "ServiceCode": "GAZ", "Sum": 12000 } ] } ~~~ </details> ::: #### Масив "AccountPayments" | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `AccountPayments`^6^ | Ні | Масив `AccountPayment` | Масив даних, що передається для оплати пакета послуг за реквізитами. Кожен платіж описується набором параметрів, наведених нижче.|Див. приклад нижче.| :::warning ^6^ Параметр передається лише при проведенні запиту [пакетної оплати послуг за реквізитами](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w?both#%D0%A2%D0%B8%D0%BF%D0%B8-%D0%BF%D0%BB%D0%B0%D1%82%D1%96%D0%B6%D0%BD%D0%BE%D0%B3%D0%BE-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%83-%E2%80%9CPayType%E2%80%9D) (`"PayType":"12"`), тобто розщеплення платежу клієнта на декількох одержувачів та зарахування коштів на вказані реквізити. ::: Параметри масиву **"AccountPayments"**: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `Sum` |Так| Ціле | Сума платежу за послугою у копійках. | 1 грн.=>`100` | | `Purpose` |Так| Рядок | Призначення платежу. |`Оплата замовлення №543345`| | `Account` |Так| Рядок | IBAN отримувача (міжнародний номер банківського рахунку). | `UA173052990000026207893720887`| | `EDRPOU` |Так| Рядок | ЄДРПОУ отримувача. | `34190717` | | `ID` |Так| Рядок | Унікальний ідентифікатор платежу. |`af1377`| | `RecipientName` |Так| Рядок | ПІБ отримувача платежу. |`Шевченко Т.Г.`| | `SenderName` |Так| Рядок | ПІБ відправника платежу.|`Дзюба А.І.`| | `IPN` |Так| Рядок | Індивідуальний податковий номер платника податків. |`7845325697`| :::success <details> <summary>Приклад масиву даних "AccountPayment"</summary> <br> ~~~md { "AccountPayments": [ { "Sum": 10000, "Purpose": "Оплата замовлення №543345", "Account": "UA173052990000026207893720887", "EDRPOU": "34190717", "ID": "af1377", "RecipientName": "Шевченко Т.Г.", "SenderName": "Дзюба А.І.", "IPN": "7845325697" }, { "Sum": 20000, "Purpose": "Оплата замовлення №543000", "Account": "UA173052990000026207893765656", "EDRPOU": "33230717", "ID": "af12277", "RecipientName": "Муляр О.В.", "SenderName": "Дзюба А.І.", "IPN": "7845325697" } ] } ~~~ </details> ::: #### Масив "ticket" Параметр `ticket` застосовується для формування **фіскального чека** на програмному касовому апараті. | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `ticket`^7^ | Ні | Масив `ticket` | Масив даних, що передає інформацію про товар: ідентифікатор товару, найменування, вартість та кількість. | Див. приклад нижче. | | `cashiersignature` | Ні | Рядок | Підпис касира. Параметр передається лише при необхідності фіскалізації операції та формування [РРО](https://tax.gov.ua/baneryi/programni-rro/aktualni-zapitannya-vidpovidi/) квитанцій ([реєстратор розрахункових операцій](https://uk.wikipedia.org/wiki/%D0%A0%D0%B5%D1%94%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D1%80%D0%BE%D0%B7%D1%80%D0%B0%D1%85%D1%83%D0%BD%D0%BA%D0%BE%D0%B2%D0%B8%D1%85_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D0%B9)). | `nvfjdjjfdjdkjf84iewjd` | :::warning ^7^ **Для фіскалізації чека необхідно:** 1. Партнер реєструється на ресурсі: checkbox.ua (з реєстрацією РРО та касира). 2. У кабінеті "checkbox" самостійно веде: відкриття/закриття зміни та звітність (X, Z). 3. У запиті через параметр `ticket` - Партнер передає інформацію Оператору для реєстрації фіскального чека. 4. На підставі даних запиту Оператор проводить перевірку відповідності суми операції із сумою товарів у чеку. 5. Оператор фіскалізує чек через ресурс: checkbox.ua. 6. В завершення - Оператор надсилає платнику (за погодженням) на email/sms посилання на чек РРО. **Для реєстрації чека необхідно:** 1. Передати Оператору логін/пароль касира, АБО 2. Формувати у кожному запиті підпис касира (`cashiersignature`). ::: Параметри масиву **"ticket"**: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `ID` |Так|Рядок|Ідентифікатор товару.|`11`| | `Good` |Так|Рядок|Найменування товару.|`bolt`| | `Price` |Так| Ціле| Вартість товару в копійках. |1грн.=>`100`| | `Count` |Так| Ціле | Кількість товару. |1шт.=>`1000` </br> 2.25кг=>`2250`| | `uktzed` |Ні|Рядок|Цифровий код товару згідно з [УКТ ЗЕД](https://uk.wikipedia.org/wiki/%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D0%B0_%D0%BA%D0%BB%D0%B0%D1%81%D0%B8%D1%84%D1%96%D0%BA%D0%B0%D1%86%D1%96%D1%8F_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%96%D0%B2_%D0%B7%D0%BE%D0%B2%D0%BD%D1%96%D1%88%D0%BD%D1%8C%D0%BE%D0%B5%D0%BA%D0%BE%D0%BD%D0%BE%D0%BC%D1%96%D1%87%D0%BD%D0%BE%D1%97_%D0%B4%D1%96%D1%8F%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%96) (українська класифікація товарів зовнішньоекономічної діяльності).|`0403`| :::success <details> <summary>Приклад масиву даних "ticket"</summary> <br> ~~~md { "ticket": [ { "ID": "11", "Good": "bolt", "Price": 100, "Count": 1000 }, { "ID": "22", "Good": "vtulka", "Price": 2500, "Count": 60000 } ] } ~~~ </details> ::: #### Параметри для криптопроєктів | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `AccountID` | Ні | Рядок | Номер криптовалютного гаманця клієнта / ID рахунку в платіжній системі / Номер рахунку онлайн банкінгу або біржі / ID грошового переказу / ID чека або ваучера. |`Jkf4j9LndJ4k520JkdnT52`| | `Signature` | Ні | Рядок | Сигнатура валюти, що купується – буквено-цифрове позначення валюти, яке складається зі скороченої назви валюти/криптовалюти/платіжної системи та ін. (“XPYUAH”, “LTC”, “NMC”, “XRP”...), згідно з [класифікацією сигнатур валют](https://jsons.info/signatures/currencies). |`XPYUAH`| | `Sum` | Ні | Рядок | Сума валюти операції обміну (кількість валюти, що купується). | `0.0025` | ### Приклад запиту :::success <details> <summary>Приклад структури "Data"</summary> <br> ~~~md { "Account": "test@gmail.com", "Callback": { "PaySuccess": { "URL": "https://www.all4.shopping/payments/payment_success" } }, "CallBackURL": "https://www.all4.shopping/payments/xpay/callback", "Currency": "UAH", "Email": "mtest@gmail.com", "Exchange": "EUR", "FirstName": "Ім'я", "LastName": "Прізвище", "MiddleName": "", "MIDs": [ { "Account": "IBAN", "EDRPOU": "123", "MFO": "AAAA", "MID": "ID", "PaymentInfo": [ { "Caption": "Призначення", "Value": "Оплата за замовлення №1 від 08 April 2024 клієнт ПІБ" } ], "Sum": 250 } ], "Order": 124, "PaymentInfo": [ { "Caption": "Призначення", "Value": "Оплата за товар №1 від 08 April 2024 від ПІБ" } ], "PaymentSum": 100, "PayType": "13", "Phone": "+380961000000", "Transaction": { "DateTime": "20240408 16:43:21", "TerminalID": "1", "TransactionID": "bb61-55b500d61f25" } } ~~~ </details> ::: :::success <details> <summary>Приклад запиту [10005]</summary> <br> ~~~md { "Partner": { "PartnerToken": "72a8ddb8-9145-4a41-af1a-8c48ecaa4be1", "OperationType": 10005, "Locale": "" }, "Data": "{\"PayType\": \"7\", \"Phone\": \"380507801058\", \"Account\": \"9ae56a0e-56b5-11ed-8c77-0050560147f8\", \"PaymentSum\: \"33000\", \"Callback\": {\"PaySuccess\": \"https://solutions.sportlife.ua/banking/success_ru.html\"}, \"Service\": [{\"ServiceCode\": \"SL_8\", \"Sum\": \"33000\", \"Attributes\": {\"ServiceName\": {\"uk\": \"Kyiv Teremky; Sports and health services; 000785051\"}}}], \"TTL\": 900, \"CallBackURL\": \"https://solutions.sportlife.ua/Connect/hs/paymentStatus/xPayStatus\", \"Transaction\": {\"TransactionID\": \"9ae56a0e-56b5-11ed-8c77-0050560147f8\", \"TerminalID\": \"1\"}}", "KeyAES": "", "Sign": "" } ~~~ </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).* ### Структура "Data" Успішна відповідь на запит [10005] містить посилання у вигляді рядка з ім'ям "URI" у структурі "Data": | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| | `URI` |Так| Рядок | Посилання на платіжну сторінку (Checkout). |`https://stage-mapi.xpaydirect.com/uk/frame/widget/banner-payment`| | `uuid` |Так| Рядок | Унікальний ідентифікатор, що зв'язує запити ["check"](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA) та ["pay"](https://hackmd.io/2x_MsqZIT6epfiqcQimFwQ). |`f3cd72b6-e1ea-406f-9b44-a9b93b401b7f`| ### Приклади відповідей :::success <details> <summary>Операція проведена успішно</summary> <br> ~~~md { "Code": 200, "Message": "done!", "Data": { "OperationDate": "2023-02-28T15:28:14.539768+02:00", "OperationID": 9490967, "OperationStatus": 10, "URI": "https://stage-mapi.xpaydirect.com/uk/frame/widget/banner-payment", "uuid": "2cda0150-d6bc-4e21-9c96-f2210f20e56e" }, "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": 10005, "Locale": "UK" }, "Data": "{\"uuid\": \"c97c2b5a-5795-4eb1-b821-093bf86b241e\", \"Transaction\":{\"TransactionID\":\"8dвd1faa43331wwfff351\",\"TerminalID\": \"1\",\"DateTime\":\"20201211 120111\"},\"PayType\":\"0\",\"Phone\":\"380277777777\",\"Email\":\"volodymyr.testovych@gmail.com\",\"Account\":\"380277777777\",\"ClientIP\":\"89.68.252.11\",\"PanSuffix\":\"8888\",\"Currency\":\"UAH\",\"Exchange\":\"UAH\",\"Signature\":\"\",\"AccountID\":\"\",\"PaymentSum\":\"1000\",\"Sum\":\"1000\",\"FirstName\":\"Володимир\",\"LastName\":\"Зеленський\",\"MiddleName\":\"Олександрович\",\"BrowserFingerprint\":\"86a190af26de3a920c62ea19ba0df3a8\",\"RecipientCard\":{\"PAN\":\"8888888888888888\"},\"PaymentInfo\":[{\"Caption\":\"Призначення\",\"Value\":\"Оплатазапакети\"}],\"Service\":[{\"ServiceCode\":\"\",\"Sum\":\"\"}],\"Callback\":{\"PaySuccess\":{\"URL\":\"\"}},\"BillAttr\":{\"PayerAddress\":\"ВулицяПеремоги\"},\"TTL\":\"300\",\"CallBackURL\":\"https://partner.com/callback/xpay2\",\"AccountPayments\":[{\"Sum\":\"\",\"Purpose\":\"\",\"Account\":\"\",\"EDRPOU\":\"\",\"ID\":\"\",\"RecipientName\":\"\",\"SenderName\":\"\",\"IPN\":\"\"}],\"ticket\":[],\"Transaction\":{\"TransactionID\":\"8dвd1faa43331wwfff351\",\"TerminalID\":\"\",\"DateTime\":\"\"}}" } ~~~ </details> <details> <summary>Очікувана відповідь</summary> <br> ~~~md { "Code": 200, "Message": "done!", "Data": { "OperationDate": "2023-02-28T15:28:14.539768+02:00", "OperationID": 9490967, "OperationStatus": 10, "URI": "https://stage-mapi.xpaydirect.com/uk/frame/widget/banner-payment", "uuid": "2cda0150-d6bc-4e21-9c96-f2210f20e56e" }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: ## Протокол двостадійної взаємодії Коли платіжна сторінка Партнера передбачає авторизацію клієнта (введення телефону/email), та у ході обробки даних на стороні Оператора виникає необхідність перевірки реквізитів оплати та/або уточнення суми оплати - застосовується протокол двостадійної взаємодії. Див. деталі у розділі: "[[check] Протокол двостадійної взаємодії](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA)". ## Запити "pay/error/refund" (CallBackURL) Завершальним етапом у виконанні операції є надсилання нотифікацій Партнеру про **статус операції** у вигляді одного з запитів: * **"pay"** (оплата завершена), * **"error"** (помилка оплати), * **"refund"** (здійснено повернення). Див. деталі у розділі: "[[pay/error/refund] Статус операції (CallBackURL)](https://hackmd.io/2x_MsqZIT6epfiqcQimFwQ)". ## Отримання статусу операції Для перевірки поточного статусу операції застосовується запит: [[20003] "Отримання статусу операції"](https://hackmd.io/fvd8btZLQXywluia6w5uxg). Всі операції та статуси їх обробки доступні в особистому кабінеті Партнера, або в реєстрі оплат, отриманому на наступний день операції на пошту Партнера. Для запиту [10005] додатково реалізовано два стани обробки операції: - **Користувач ще не почав сплачувати** (`"Reason":100051`), - **Час очікування платежу сплинув** (`"Reason":100053`). | Код відповіді | Повідом-лення | Статус `OperationStatus` | Причина `Reason` | Стан оплати | |:-:|:-:|:-:|:-:|-| | `102` | `Processing` | `7` | 100051 | Користувач не почав оплату. | | `102` | `Processing` | `5` | будь-яка | Операція в обробці. | | `200` | `Error` | `21` | 100053 | Час очікування платежу сплинув. | | `200` | `Error` | `21` | будь-яка | Виникла помилка оплати. Див. опис у таблиці ["Коди причин відхилення операцій"](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w#%D0%9A%D0%BE%D0%B4%D0%B8-%D0%BF%D1%80%D0%B8%D1%87%D0%B8%D0%BD-%D0%B2%D1%96%D0%B4%D1%85%D0%B8%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D0%B9-%E2%80%9CReason%E2%80%9D:~:text=%D0%A2%D0%B0%D0%BA-,%D0%9A%D0%BE%D0%B4%D0%B8%20%D0%BF%D1%80%D0%B8%D1%87%D0%B8%D0%BD%20%D0%B2%D1%96%D0%B4%D1%85%D0%B8%D0%BB%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D0%B9%20%22Reason%22,-%22Reason%22). | | `200` | `Ok` | `10` | відсутня | Обробка операції завершена. | Див. деталі у розділі: ["Довідкові матеріали"](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w). ## Пов'язані запити [[check] Протокол двостадійної взаємодії](https://hackmd.io/kk2x9Wx8QSe_vV11tA-KFA) [[pay/error/refund] Статус операції (CallBackURL)](https://hackmd.io/2x_MsqZIT6epfiqcQimFwQ) [[auth] Оплата методом "Google/Apple Pay"](https://hackmd.io/M0Q6tH0CTy-oPCA5QuFFig) [[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>

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully