|
|
(Не показано одну проміжну версію цього користувача) |
Рядок 1: |
Рядок 1: |
| == Реєстрація точки та створення сесії ==
| | {{APINav}} |
| Цей метод слід викликати, коли користувач вперше звертається до платіжної сторінки. Якщо браузер або пристрій змінюються, метод знову з'являється
| | <div style="width: 100%; display: flex; justify-content: space-between; gap: 16px; box-sizing: border-box; padding: 8px 0;"> |
| <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/system/createApp</span>
| |
| </p>
| |
| '''Request'''<syntaxhighlight line="1" lang="json">
| |
| headers:
| |
|
| |
|
| "PartnerKey": "partnerName",
| | <!-- Ліва кнопка --> |
| "locale": "ua"
| | <div style=" |
| | | position: relative; |
| | | flex: 1; |
| | | min-width: 150px; |
|
| | background: rgba(135, 206, 250, 0.1); |
| </syntaxhighlight>'''Response'''<syntaxhighlight lang="json-object" line="1">
| | padding: 8px 14px; |
| body:
| | border-radius: 8px; |
| | | border: 1px solid #007BFF; |
| {
| | color: #007BFF; |
| "logoPath": "https://cdn.easypay.ua/logo/",
| | font-weight: bold; |
| "hintImagesPath": "https://cdn.easypay.ua/hint_images/",
| | font-size: 1em; /* пропорційний розмір */ |
| "apiVersion": "1.0",
| | display: flex; |
| "appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
| | align-items: center; |
| "pageId": "f3f2b678-a3c4-45ba-a865-a136fe4a62bd",
| | justify-content: center; |
| "error": null | | text-align: center; |
| }
| | cursor: pointer; |
| | | "> |
| </syntaxhighlight>'''Характеристика параметрів'''<table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;"> '''Параметри''' <table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
| | <!-- Текст у кутку --><span style="position: absolute; top: 6px; left: 8px;">← Назад</span> |
| <!-- Перший рядок - заголовок -->
| | <!-- Основний текст --> |
| <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>AppId</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;">за замовчуванням, якщо не було активності за запитами,
| |
| час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується.
| |
| </td>
| |
| </tr> | |
| | |
| <!-- Шостий рядок -->
| |
| <tr>
| |
| <td style="border: none; padding-right: 10px; text-align: left;">'''<code>PageId</code>'''</td>
| |
| <td style="border: none; padding-right: 10px; text-align: left;">ідентифікатор сесії </td>
| |
| <td style="border: none; text-align: left;">параметр валідний протягом 20 хв. Для кожного запиту CreateOrder потрібно використовувати унікальний PageID</td>
| |
| </tr> | |
| </table>
| |
| | |
| <br>
| |
| | |
| == Створення сесії ==
| |
| ==== Створення сесії ====
| |
| ----Даний метод створює новий екземпляр сеансу для користувача , <code>PageId</code>.
| |
| <p style="border: 1px solid #9ACD32; background-color: rgba(144, 238, 144, 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/system/createPage</span> | |
| </p>'''Request'''<syntaxhighlight line="1" lang="json">
| |
| headers
| |
| | |
| "PartnerKey": "partnerName"
| |
| "locale": "ua"
| |
| "AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1"
| |
| | |
| </syntaxhighlight>'''Response'''<syntaxhighlight lang="json" line="1">
| |
| 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
| |
| }
| |
| | |
| </syntaxhighlight>'''Характеристика параметрів''' <table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;"> <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>AppId</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;">за замовчуванням, якщо не було активності за запитами,
| |
| час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується.
| |
| </td>
| |
| </tr>
| |
| | |
| <!-- Шостий рядок --> | |
| <tr>
| |
| <td style="border: none; padding-right: 10px; text-align: left;">'''<code>PageId</code>'''</td>
| |
| <td style="border: none; padding-right: 10px; text-align: left;">ідентифікатор сесії </td>
| |
| <td style="border: none; text-align: left;">За замовчуванням, якщо не було активності за запитами, час життя PageId - 20 хвилин. З кожним запитом життя PageId автоматично продовжується.</td>
| |
| </tr>
| |
| </table>
| |
| <br> | | <br> |
| | <span>[[Загальні відомості]]</span> |
|
| |
|
| == Створення замовлення ==
| | </div> |
| ==== Створення замовлення для холдованих платежів ====
| |
| Перед використанням методу потрібне додаткове налаштування терміналів зі сторони техпідтримки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>"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])''
| |
| | |
| Сповіщення партнеру при цьому '''не надсилається'''.
| |
| | |
| == Створення замовлення для холдованих платежів ==
| |
| ==== Створення замовлення для холдованих платежів ====
| |
| Перед використанням методу потрібне додаткове налаштування терміналів зі сторони техпідтримки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>"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])''
| |
| | |
| Сповіщення партнеру при цьому '''не надсилається'''.
| |
|
| |
|
| == Розхолдування платежу == | | <!-- Права кнопка --> |
| | <div style=" |
| | position: relative; |
| | flex: 1; |
| | min-width: 150px; |
| | background: rgba(135, 206, 250, 0.1); |
| | padding: 8px 14px; |
| | border-radius: 8px; |
| | border: 1px solid #007BFF; |
| | color: #007BFF; |
| | font-weight: bold; |
| | font-size: 1em; /* пропорційний розмір */ |
| | display: flex; |
| | align-items: center; |
| | justify-content: center; |
| | text-align: center; |
| | cursor: pointer; |
| | "> |
|
| |
|
| == Параметри BrowseInfo при 3DS оплаті ==
| |
|
| |
|
| == Підтвердження платежу клієнтом. Введення смс. Проходження 3DS перевірки == | | <span style="position: absolute; top: 6px; right: 8px;">Далі →</span> |
| | <!-- Основний текст --> |
| | <span>[[Реєстрація точки та створення сесії#Вступ|Реєстрація точки та створення сесії]]</span> |
| | </div> |
|
| |
|
| == Перевірка статусу платежу ==
| | </div> |