Основні запити та відповіді: відмінності між версіями

Матеріал з apidocs
Перейти до: навігація, пошук
Рядок 106: Рядок 106:


== Створення замовлення ==
== Створення замовлення ==
==== Створення замовлення для холдованих платежів ====
Перед використанням методу потрібне додаткове налаштування терміналів зі сторони техпідтримкиEasyPay.
Перед викликом цього методу потрібно викликати один із методів:
'''[[MerchantAPI#Створення сесії|- CreateApp]]'''
'''[[MerchantAPI#Створення сесії|- CreatePage]]'''
<p style="border: 1px solid #9ACD32; background-color: rgba(192, 255, 192, 0.5); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; position: relative; padding-left: 80px;">
    <span style="position: absolute; top: 10px; left: 10px; background-color: #006400; color: white; padding: 2px 12px; border-radius: 4px; font-size: 14px; font-weight: bold;">POST</span>
    <span style="margin-left: 5px; font-weight: bold; font-size: 16px;">/api/merchant/createOrder</span>
</p>'''REQUEST HEADERS'''<syntaxhighlight lang="http">
  PartnerKey: partnerName
  locale: ua
  AppId: a5806a5f-dbb8-496a-a23f-aab6d2fcbce1
  PageId: 2ce7dba6-4600-456e-b9c8-f13cacf1c85d
  Sign: e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=
</syntaxhighlight>'''REQUEST BODY'''<syntaxhighlight lang="json">
{
  "order": {
    "serviceKey": "string",
    "orderId": "string",
    "description": "string",
    "amount": 1.01,
    "paymentOperation": "Hold",
    "expire": "2019-04-15T07:49:20.009Z",
    "isOneTimePay": true,
    "additionalItems": {}
  },
  "urls": {
    "success": "string",
    "failed": "string"
  }
}
</syntaxhighlight>'''Опис параметрів''' <table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th></tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>serviceKey</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор послуги  </td></tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;"><code>orderId</code> </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">унікальний ідентифікатор замовлення в системі партнера  </td></tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;"><code>description</code> </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">опис замовлення  </td></tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;"><code>amount</code></td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">сума замовлення  </td></tr>
<tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>paymentOperation = Hold</code>'''  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">параметр, що вказує, що подальший платіж буде холдовано(зарезервовано) з можливістю підтвердження або скасування. </td></tr>
</table>
'''Необов'язкові параметри'''
<table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;"><code>expire</code> </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">час життя замовлення.  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Після закінчення вказаного часу замовлення оплатити неможливо. При ненульовому значенні на платіжній сторінці відображатиметься таймер. Значення повинне перевищувати поточний час щонайменше на 5 хвилин. Типове значення — 3 дні.
</td>
</tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>isOneTimePay</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">вказує, чи можна оплатити одне замовлення кілька разів.  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Типове значення — True.</td></tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>additionalItems</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">додаткові параметри  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">наприклад:
<code>"additionalItems":</code>
<code>{ "PayerEmail" : "[email protected]",</code>
<code>"PayerPhone" : "380930007603"</code>
<code>},</code>
* де PayerEmail — емейл клієнта для сповіщення у разі неоплаченого замовлення та автоматичної підстановки на платіжній сторінці.
* PayerPhone — номер телефону для надсилання повідомлення (SMS або Viber) про неоплачене замовлення (через 15–20 хвилин після виклику CreateOrder).</td><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">URLs </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">URL сторінки успішної оплати для редиректу клієнта.  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">failed — URL сторінки помилки для редиректу клієнта.
приклад параметрів, що передаються на url.success (без errorCode) і
<code>url.failed: ?serviceKey=merchanttest-5310&orderId=re9r9er94jr&amount=1.20&description=Тестове+описання+</code>
<code>замовлення&transactionId=722443797&date=2019-06-11T14:49:07&recurrentId=&errorCode=PAYMENT_ALFABANK_-2006&sign=</code>
<code>eYkFYixpB3wnKoZDzkAiqWgdMkeHETDWmDsFMCaPO44=</code>
</td>
</tr></table>
'''RESPONSE''' <syntaxhighlight lang="json">
HEADERS
-------
BODY
{
  "accountInfo": null,
  "bankingDetails": null,
  "amount": 1,
  "amountMax": 4999,
  "amountMin": 0.01,
  "paymentInstrumentsTypes": [
    {
      "instrumentType": "EMoney",
      "commission": 0,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": []
    },
    {
      "instrumentType": "RCard",
      "commission": 2,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": []
    },
    {
      "storedCards": [],
      "instrumentType": "Card",
      "commission": 2,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": [
        {
          "instrumentId": 4211698,
          "instrumentType": "Card",
          "instrumentValue": null,
          "alias": null,
          "commission": 2,
          "loyaltyCommission": null,
          "actionsKeys": null,
          "priorityIndex": 0,
          "additionalParams": {}
        }
      ]
    },
    {
      "walletStatus": "NotRegistered",
      "instrumentType": "MasterPass",
      "commission": 2,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": []
    },
    {
      "instrumentType": "LifeMoney",
      "commission": 0.03,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": [
        {
          "instrumentId": 5098216,
          "instrumentType": "LifeMoney",
          "instrumentValue": null,
          "alias": null,
          "commission": 0.03,
          "loyaltyCommission": null,
          "actionsKeys": null,
          "priorityIndex": 0,
          "additionalParams": {}
        }
      ]
    }
  ],
  "forwardUrl": "https://easypay.ua/whitepage/81b14a73-730c-40d4-8064-ce1c10e0c53b",
  "error": null
}
</syntaxhighlight>
<table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>accountInfo</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">додаткова інформація про послугу  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
</tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>amount</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">сума замовлення  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td></tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>amountMax</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">максимальна сума платежу за послугою </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
</tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>amountMin</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">мінімальна сума за послугою </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>forwardUrl</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">URL сторінки оплати, для партнерів, у яких немає сертифікатів '''PCI DSS''' для обробки карткових даних. Або якщо у партнера немає власної платіжної сторінки. </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
      </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>paymentInstrumentsTypes</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">список інструментів оплати. Інструмент '''RCard''' надається лише користувачам, які авторизовані в системі EasyPay.
Можливі значення '''instrumentType''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">
Можливі значення '''instrumentType:'''
* Card – платіжна картка
* RCard – платіжна картка, підв'язана в системі EasyPay
</td>
</tr></table>
Холдування платежу можна здійснити, оплативши замовлення на сторінці оплати (перейти за '''forwardUrl'''), або вказавши в запиті '''createOrder''' інструмент оплати у '''userPaymentInstrument''' (див. [[MerchantAPI#Створення замовлення|Створення замовлення]]).
Клієнту відобразиться сторінка успішного платежу EasyPay, або сторінка, вказана в “urls”:{}.
Після '''спроби холдування платежу''' партнеру буде відправлено '''сповіщення''', згідно з варіантом, вказаним в налаштуваннях сервісу [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]].
Статус платежу необхідно перевірити методом '''[[MerchantAPI#Перевірка статусу платежу|orderState]]'''
Після успішного холдування необхідно викликати або '''[[MerchantAPI#Розхолдування платежу|unHoldOrder]]''' , або '''[[MerchantAPI#Скасування платежу|orderCancel]]'''
Якщо протягом '''повних 10 днів''' після холдування жоден з цих методів не буде викликаний, на '''11-й день близько 05:00''' платіж може бути '''відхилений емітентом''', і кошти стануть доступні клієнту.
У транзакцію додається коментар: ''Автоматично відхилено через 10 днів. (SYSTEM ACCOUNT [dateTime])''
Сповіщення партнеру при цьому '''не надсилається'''.


== Створення замовлення для холдованих платежів ==
== Створення замовлення для холдованих платежів ==

Версія за 15:32, 12 серпня 2025

Реєстрація точки та створення сесії

Цей метод слід викликати, коли користувач вперше звертається до платіжної сторінки. Якщо браузер або пристрій змінюються, метод знову з'являється

POST /api/system/createApp

Request

headers:

"PartnerKey": "partnerName",
"locale": "ua"

Response

body: 

{
  "logoPath": "https://cdn.easypay.ua/logo/",
  "hintImagesPath": "https://cdn.easypay.ua/hint_images/",
  "apiVersion": "1.0",
  "appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
  "pageId": "f3f2b678-a3c4-45ba-a865-a136fe4a62bd",
  "error": null
}

Характеристика параметрів

Параметри
Параметр Характеристика Коментарій
AppId ідентифікатор торгової точки партнера за замовчуванням, якщо не було активності за запитами,

час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується.

PageId ідентифікатор сесії параметр валідний протягом 20 хв. Для кожного запиту CreateOrder потрібно використовувати унікальний PageID


Створення сесії

Створення сесії


Даний метод створює новий екземпляр сеансу для користувача , PageId.

POST /api/system/createPage

Request

headers

"PartnerKey":  "partnerName"
"locale": "ua"
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1"

Response

body:

{
    "logoPath": "https://cdn.easypay.ua/logo/",
    "hintImagesPath": null,
    "apiVersion": "1.0",
    "appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
    "pageId": "29bd7237-6b8d-4048-b028-6efc23d05988",
    "requestedSessionId": "fa3595d3-52de-4744-9fc6-ec2d3507d5a5",
    "error": null
}

Характеристика параметрів

Параметр Характеристика Коментарій
AppId ідентифікатор торгової точки партнера за замовчуванням, якщо не було активності за запитами,

час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується.

PageId ідентифікатор сесії За замовчуванням, якщо не було активності за запитами, час життя PageId - 20 хвилин. З кожним запитом життя PageId автоматично продовжується.


Створення замовлення

Створення замовлення для холдованих платежів

Перед використанням методу потрібне додаткове налаштування терміналів зі сторони техпідтримкиEasyPay.

Перед викликом цього методу потрібно викликати один із методів:

- CreateApp

- CreatePage

POST /api/merchant/createOrder

REQUEST HEADERS

  PartnerKey: partnerName
  locale: ua
  AppId: a5806a5f-dbb8-496a-a23f-aab6d2fcbce1
  PageId: 2ce7dba6-4600-456e-b9c8-f13cacf1c85d
  Sign: e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=

REQUEST BODY

{
  "order": {
    "serviceKey": "string",
    "orderId": "string",
    "description": "string",
    "amount": 1.01,
    "paymentOperation": "Hold",
    "expire": "2019-04-15T07:49:20.009Z",
    "isOneTimePay": true,
    "additionalItems": {}
  },
  "urls": {
    "success": "string",
    "failed": "string"
  }
}

Опис параметрів

Параметр Характеристика
serviceKey ідентифікатор послуги
orderId унікальний ідентифікатор замовлення в системі партнера
description опис замовлення
amount сума замовлення
paymentOperation = Hold параметр, що вказує, що подальший платіж буде холдовано(зарезервовано) з можливістю підтвердження або скасування.


Необов'язкові параметри

Параметр Характеристика Коментарій
expire час життя замовлення. Після закінчення вказаного часу замовлення оплатити неможливо. При ненульовому значенні на платіжній сторінці відображатиметься таймер. Значення повинне перевищувати поточний час щонайменше на 5 хвилин. Типове значення — 3 дні.
isOneTimePay вказує, чи можна оплатити одне замовлення кілька разів. Типове значення — True.
additionalItems додаткові параметри наприклад:

"additionalItems": { "PayerEmail" : "[email protected]", "PayerPhone" : "380930007603" },

  • де PayerEmail — емейл клієнта для сповіщення у разі неоплаченого замовлення та автоматичної підстановки на платіжній сторінці.
  • PayerPhone — номер телефону для надсилання повідомлення (SMS або Viber) про неоплачене замовлення (через 15–20 хвилин після виклику CreateOrder).
URLs URL сторінки успішної оплати для редиректу клієнта. failed — URL сторінки помилки для редиректу клієнта.

приклад параметрів, що передаються на url.success (без errorCode) і

url.failed: ?serviceKey=merchanttest-5310&orderId=re9r9er94jr&amount=1.20&description=Тестове+описання+

замовлення&transactionId=722443797&date=2019-06-11T14:49:07&recurrentId=&errorCode=PAYMENT_ALFABANK_-2006&sign=

eYkFYixpB3wnKoZDzkAiqWgdMkeHETDWmDsFMCaPO44=


RESPONSE

HEADERS 
-------
BODY
{
  "accountInfo": null,
  "bankingDetails": null,
  "amount": 1,
  "amountMax": 4999,
  "amountMin": 0.01,
  "paymentInstrumentsTypes": [
    {
      "instrumentType": "EMoney",
      "commission": 0,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": []
    },
    {
      "instrumentType": "RCard",
      "commission": 2,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": []
    },
    {
      "storedCards": [],
      "instrumentType": "Card",
      "commission": 2,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": [
        {
          "instrumentId": 4211698,
          "instrumentType": "Card",
          "instrumentValue": null,
          "alias": null,
          "commission": 2,
          "loyaltyCommission": null,
          "actionsKeys": null,
          "priorityIndex": 0,
          "additionalParams": {}
        }
      ]
    },
    {
      "walletStatus": "NotRegistered",
      "instrumentType": "MasterPass",
      "commission": 2,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": []
    },
    {
      "instrumentType": "LifeMoney",
      "commission": 0.03,
      "amountMin": 0.01,
      "amountMax": 4999,
      "userPaymentInstruments": [
        {
          "instrumentId": 5098216,
          "instrumentType": "LifeMoney",
          "instrumentValue": null,
          "alias": null,
          "commission": 0.03,
          "loyaltyCommission": null,
          "actionsKeys": null,
          "priorityIndex": 0,
          "additionalParams": {}
        }
      ]
    }
  ],
  "forwardUrl": "https://easypay.ua/whitepage/81b14a73-730c-40d4-8064-ce1c10e0c53b",
  "error": null
}


Параметр Характеристика Коментарій
accountInfo додаткова інформація про послугу
amount сума замовлення
amountMax максимальна сума платежу за послугою
amountMin мінімальна сума за послугою
forwardUrl URL сторінки оплати, для партнерів, у яких немає сертифікатів PCI DSS для обробки карткових даних. Або якщо у партнера немає власної платіжної сторінки.
paymentInstrumentsTypes список інструментів оплати. Інструмент RCard надається лише користувачам, які авторизовані в системі EasyPay. Можливі значення instrumentType

Можливі значення instrumentType:

  • Card – платіжна картка
  • RCard – платіжна картка, підв'язана в системі EasyPay


Холдування платежу можна здійснити, оплативши замовлення на сторінці оплати (перейти за forwardUrl), або вказавши в запиті createOrder інструмент оплати у userPaymentInstrument (див. Створення замовлення).

Клієнту відобразиться сторінка успішного платежу EasyPay, або сторінка, вказана в “urls”:{}.


Після спроби холдування платежу партнеру буде відправлено сповіщення, згідно з варіантом, вказаним в налаштуваннях сервісу Повідомлення про платіж.


Статус платежу необхідно перевірити методом orderState


Після успішного холдування необхідно викликати або unHoldOrder , або orderCancel

Якщо протягом повних 10 днів після холдування жоден з цих методів не буде викликаний, на 11-й день близько 05:00 платіж може бути відхилений емітентом, і кошти стануть доступні клієнту.


У транзакцію додається коментар: Автоматично відхилено через 10 днів. (SYSTEM ACCOUNT [dateTime])

Сповіщення партнеру при цьому не надсилається.

Створення замовлення для холдованих платежів

Розхолдування платежу

Параметри BrowseInfo при 3DS оплаті

Підтвердження платежу клієнтом. Введення смс. Проходження 3DS перевірки

Перевірка статусу платежу