Основні запити та відповіді: відмінності між версіями
Немає опису редагування |
|||
Рядок 108: | Рядок 108: | ||
* [[MerchantAPI#Реєстрація точки та створення сесії|CreateApp]] | * [[MerchantAPI#Реєстрація точки та створення сесії|CreateApp]] | ||
* [[MerchantAPI#Створення сесії|CreatePage]] | * [[MerchantAPI#Створення сесії|CreatePage]] | ||
* [[MerchantAPI#Реєстрація точки та створення сесії|CreateApp]] | |||
* [[MerchantAPI#Створення сесії|CreatePage]] | |||
<br> | |||
<p style="border: 1px solid #FFA500; background-color: rgba(255, 165, 0, 0.1); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; color: #333; position: relative;"> | |||
⚠️ <strong>Важливо!</strong> Для кожного нового запиту <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #D63384;">CreateOrder</span> потрібно використовувати унікальний <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #D63384;">PageID</span>. | |||
</p> | |||
<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/merchant/createOrder</span> | |||
</p> | |||
</p><syntaxhighlight lang="markdown" line="1"> | |||
headers | |||
'Content-Type': 'application/json' | |||
'PartnerKey': 'partnerName' | |||
'locale': 'ua' | |||
'AppId': 'a5806a5f-dbb8-496a-a23f-aab6d2fcbce1' | |||
'PageId': '2ce7dba6-4600-456e-b9c8-f13cacf1c85d' | |||
'Sign': 'e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=' | |||
<br> | |||
</syntaxhighlight><syntaxhighlight lang="json" line="1"> | |||
{ | |||
"userInfo": { | |||
"phone": "string" | |||
}, | |||
Обов'язкові параметри: | |||
"order": { | |||
"serviceKey": "string", | |||
"orderId": "string", | |||
"description": "string", | |||
"amount":1.01, (decimal) | |||
Необов'язкові параметри: | |||
"paymentOperation":"PaymentTokenization", | |||
"additionalItems": {}, | |||
"expire": "2019-04-15T07:49:20", | |||
"isOneTimePay": true, | |||
"fields": [ | |||
{ | |||
"fieldName": "string", | |||
"fieldValue": "string", | |||
"fieldKey": "string", | |||
} | |||
] | |||
}, | |||
"urls": { | |||
"success": "string", | |||
"failed": "string", | |||
"back": "string", | |||
}, | |||
"bankingDetailsId": "string", | |||
"bankingDetails": { | |||
"payee": { | |||
"id": "string", | |||
"name": "string", | |||
"bank": { | |||
"name": "string", | |||
"mfo": "string", | |||
"account": "string" | |||
} | |||
}, | |||
"payer": { | |||
"name": "string", | |||
"id": "string" | |||
}, | |||
"narrative": { | |||
"name": "string" | |||
} | |||
}, | |||
"reccurent": { | |||
"cronRule": "string", | |||
"dateExpire": "2019-01-21T08:24:38.741Z", | |||
"dateRun": "2019-01-20T08:24:38.741Z", | |||
"properties": | |||
{ | |||
"failedCount":0, | |||
"failedRule":"string", | |||
"amount":1.0, | |||
"UrlNotify":"http://notify.url" | |||
} | |||
}, | |||
"splitting": { | |||
"items": [ | |||
{ | |||
"serviceKey": "string", | |||
"orderId": "string” | |||
"bankingDetailsId": "string", | |||
"bankingDetails": { | |||
"payee": { | |||
"id": "string", | |||
"name": "string", | |||
"bank": { | |||
"name": "string", | |||
"mfo": "string", | |||
"account": "string" | |||
} | |||
}, | |||
"payer": { | |||
"name": "string" | |||
}, | |||
"narrative": { | |||
"name": "string" | |||
} | |||
}, | |||
"unit": "Amount|Percent", | |||
"value": 0, | |||
"withCommission": false|true | |||
} | |||
] | |||
}, | |||
"userPaymentInstrument": { | |||
"instrumentType": "Card", | |||
"cardGuid": "guid", | |||
"pan": "string", | |||
"expire": "MM/YY", | |||
"cvv": "string", | |||
}, | |||
"partnerInfo": { | |||
"id": "string", | |||
"name": "string", | |||
"account": "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> | |||
<th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th> | |||
<!-- Другий рядок --> | |||
<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;">ідентифікатор послуги мерчанта (видає EasyPay)</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.</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> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">магазину чи послуги | |||
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. | |||
</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;">опис замовлення (до 120 символів)</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">відомий лише торговцю та EasyPay | |||
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. | |||
</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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</tr> | |||
<!-- Шостий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>paymentOperation</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;">Можливі значення: | |||
* '''PaymentTokenization -''' використовується для токенізації картки, якою буде сплачено це замовлення. | |||
* '''Працює лише для інструмента “карта”'''. Повинен бути заповнений ідентифікатор клієнта '''"userInfo": { "phone": "string"}''' | |||
* Якщо передано URL для колбеку, то після успішної оплати відправляється колбек про платіж та колбек про токенізацію (приклади колбеків про оплату - в [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]], про [[MerchantAPI#Токенізація за допомогою введення даних картки користувачем на сторінці (сертифікація PCI:DSS не потрібна)|токенізацію]]. | |||
</td> | |||
</tr> | |||
<!-- Cьомий рядок--> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>userInfo/phone</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;">Номер телефону необхідний: | |||
* для отримання списку токенізованих карток (інформація буде в масиві StoredCards) | |||
* при оплаті із зазначенням токена картки | |||
* для токенізації картки після успішної оплати разом із параметром | |||
</td> | |||
</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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</table> | |||
<!-- Десятий рядок-> | |||
<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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</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;">Після закінчення заданого часу замовлення сплатити неможливо. Час життя сторінки може відображатися на платіжній сторінці у вигляді таймера (за замовчуванням таймер вимкнено). Значення має бути більшим за поточний час на 6 хвилин. | |||
'''Значення за замовчуванням - 3 дні'''</td> | |||
</tr> | |||
<!-- Дванадцятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>sOneTimePay</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">включає можливість успішно оплатити замовлення лише 1 раз за конкретним forwardUrl </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Значення: | |||
* True - за замовчуванням; | |||
* False - оплатити замовлення по тому самому ''forwardUrl'' можна буде кілька разів;</td> | |||
</tr> | |||
<!-- Тринадцятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>urls</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;"> | |||
*'''back -''' URL для повернення на вказану сторінку з фінальної сторінки успіху EasyPay. | |||
* '''success -''' URL сторінки успіху, для редиректу клієнта у разі успішної оплати. | |||
* '''failed -''' URL сторінки помилки для редиректу клієнта у разі неуспішної оплати</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"> | |||
* '''back -''' На фінальній сторінці EasyPay вгорі зліва з'явиться кнопка “Повернутись назад” з посиланням на вказану URL-адресу. Параметр не може бути порожнім і повинен відповідати формату URL. | |||
* '''success''' - у разі, якщо не було передано urls{success,failed} для редиректу після оплати. Після оплати клієнт може не дочекатися редиректу на цей url, тому редирект не можна використовувати як індикатор успішної оплати, отримання оповіщення про успішний платіж - '''див.''' [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]] | |||
* '''faild -''' приклад get-параметрів, які приходять на '''url.failed та url.succes''' (те ж, але без ''errorCode''): | |||
<code>?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> | |||
</table> | |||
<br> | |||
'''Необов'язкові додаткові поля''' | |||
'''<code>additionalItems</code> –''' необов'язкові додаткові параметри, наприклад: | |||
<br> | |||
<syntaxhighlight lang="json" line="1"> | |||
"additionalItems":{ | |||
"PayerEmail":"[email protected]", | |||
"PayerPhone":"380930007603", | |||
"Merchant.UrlNotify":"https://notify.url", | |||
"Merchant.Param1":"CustomValue", | |||
"CurrencyAmountLabel":"123.56$" | |||
}, | |||
</syntaxhighlight>'''Опис параметрів<br>''' | |||
<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>PayerEmail</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">емейл клієнта для оповіщення його у разі неоплаченого замовлення та для автоматичного заповнення поля “Надіслати квитанцію на email” на сторінці оплати. </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо параметр передається – він не може бути порожнім і має відповідати формату email.</td> | |||
</tr> | |||
<!-- Третій рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>PayerPhone</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">телефон клієнта, на який протягом 15-20 хв після виклику CreateOrder відправиться нагадування про неоплачене замовлення (смс або вайбер). </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>Merchant.UrlNotify</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">URL для надсилання нотифікації за успішним платежем (callback), див. [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]]. </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Параметр не може бути порожнім і має відповідати формату URL. | |||
</td> | |||
</tr> | |||
<!-- П'ятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Merchant.Param1</code>''' </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">індивідуальний параметр партнера Param1 узгоджується з EasyPay </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td> | |||
</tr> | |||
</table> | |||
<br> | |||
'''<code>reccurentPayment</code> -''' інформація для створення рекурентного платежу на основі поточного. Рекурентний платіж буде створений за розкладом, якщо основний платіж виконаний за допомогою інструментів card, Rcard, Vcard, LifeMoney | |||
<br><syntaxhighlight lang="json-object" line="1"> | |||
"reccurent": { | |||
"cronRule": "string", | |||
"dateExpire": "2019-01-21T08:24:38.741Z", | |||
"dateRun": "2019-01-20T08:24:38.741Z", | |||
"properties": | |||
{ | |||
"failedCount":0, | |||
"failedRule":"string", | |||
"amount":1.0, | |||
"UrlNotify":"http://notify.url" | |||
} | |||
</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>cronRule</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">правило у cron-форматі, з якою періодичністю повторювати рекурентний платіж, наприклад 10 20 15 * * (кожного 15 числа місяця о 20:10). </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо ця властивість порожня, значить рекурентний платіж виконуватиметься на вимогу продавця. | |||
'''Плануйте перше виконання рекуренту щонайменше 20 хвилин від дати успішного платежу.'''</td> | |||
</tr> | |||
<!-- Третій рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>dateExpire</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;">магазину чи послуги | |||
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. | |||
</td> | |||
</tr> | |||
<!-- Четвертий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>dateRun</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;">Якщо не заданий, перший запуск розраховується за '''recurrent/cronRule''' | |||
</td> | |||
</tr> | |||
<!-- П'ятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>properties</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;"> | |||
* '''reccurent/properties/amount -''' сума кожного рекурентного платежу, наступного після основної оплати (опціонально) | |||
* '''reccurent/properties/failedCount -''' ккількість поспіль неуспішних викликів рекурентних оплат, після чого рекурентний платіж видаляється (опціонально). За замовчуванням - 4 спроби: при неуспіху - повторюється спроба кожні 20-30 хвилин, 4 неуспішних спроби поспіль по одному recurrentId - і рекурент відключається. Якщо після 3 неуспішних спроб була 1 успішна, то лічильник неуспішних для цього рекурента скидається. | |||
* '''reccurent/properties/failedRule -''' cron-правило (період) повтору при неуспішному виклику рекурента (опціонально) | |||
* '''reccurent/properties/UrlNotify''' - URL для надсилання нотифікації за успішним '''рекурентним''' платежем (callback), див. [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]] | |||
</td> | |||
</table> | |||
<br> | |||
'''<code>bankingDetails</code> -''' передача банківських реквізитів для перерахування коштів у випадку, якщо банківські реквізити можуть змінюватися щодо різних платежів одного сервісу продавця. На стороні EasyPay має бути увімкнено режим "Отримувати реквізити із запиту". | |||
<br> | |||
<syntaxhighlight lang="json" line="1"> | |||
{ | |||
"bankingDetails": { | |||
"payee": { | |||
"id": "123664578", | |||
"name": "департамент патрульної поліції", | |||
"bank": { | |||
"name": "пат пумб", | |||
"mfo": "330556", | |||
"account": "123654778889" | |||
} | |||
}, | |||
"payer": { "name": "Иванова Мария" }, | |||
"narrative": { "name": "Переказ коштів згідно договору з ФК № 111/11-П від 11.11.1111 р. за виключенням винагороди за їх переказ згідно реєстру від [work_date]р." } | |||
} | |||
} | |||
</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> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>payee/ID</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>payee/Name</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;">до 38 символів | |||
</td> | |||
</tr><tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payee/Bank/Name</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;">до 38 символів | |||
</td> | |||
</tr><tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payee/Bank/Mfo</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;">може не заповнюватися, якщо Payee/Bank/Account містить IBAN</td> | |||
</tr><tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payee/Bank/Account</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">р/р одержувача або IBAN </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>Payer/Name</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>Narrative/Name</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;">до 157 символів</td> | |||
</tr><tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>bankingDetailsId</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">повну структуру bankingDetails можна не передавати, для цього достатньо передати </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>bankingDetailsId</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;"> | |||
ідентифікатор банківських реквізитів із довідника, який узгоджений із конкретним партнером та перебуває в системі EasyPay. | |||
</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"> | |||
</td> | |||
</table> | |||
'''Splitting''' - інформація щодо сплітування (розщеплення) платежу. | |||
Частина загальної суми з order/amount розподіляється відповідно до інформації в splitting/items/value, а залишок - йде на основні реквізити з bankingDetails (або bankingDetailsId). На стороні EasyPay має бути увімкнено режим “Отримувати реквізити із запиту | |||
Структура '''items''' це масив. Основний платіж буде розщеплений стільки платежів, скільки міститься у цьому масиві плюс залишок. Кожен розщеплений платіж буде надіслано на відповідні банківські реквізити <code>items/bankingDetails</code>. Залишок коштів буде надіслано на реквізити основного платежу з <code>BankingDetails</code> або <code>bankingDetailsId,</code> які потрібно обов'язково вказувати під час сплітування. | |||
<br> | |||
<syntaxhighlight lang="json" line="1"> | |||
}, | |||
"splitting": { | |||
"items": [ | |||
{ | |||
"serviceKey": "string", | |||
"orderId": "string" | |||
"bankingDetailsId": "string", | |||
"bankingDetails": { | |||
"payee": { | |||
"id": "string", | |||
"name": "string", | |||
"bank": { | |||
"name": "string", | |||
"mfo": "string", | |||
"account": "string" | |||
} | |||
}, | |||
"payer": { | |||
"name": "string" | |||
}, | |||
"narrative": { | |||
"name": "string" | |||
} | |||
}, | |||
"unit": "Amount|Percent", | |||
"value": 0, | |||
"withCommission": false|true | |||
</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>items/serviceKey</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;">Якщо параметр відсутній, використовується значення ServiceKey з тіла запиту CreateOrder'''.''' | |||
</td> | |||
</tr> | |||
<!-- П'ятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/orderId</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;">Якщо параметр відсутній, використовується значення OrderId, передане в тілі запиту CreateOrder.</td></tr> | |||
<!-- П'ятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/bankingDetails</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>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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</table> | |||
<!-- Десятий рядок-> | |||
<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;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td> | |||
</tr> | |||
<!-- П'ятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/unit</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">може бути '''Amount''' (сума розщепленого платежу в грн.) або '''Percent''' (сума розщепленого платежу вважається відсотком від загального). </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>items/value</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>items/withCommission - true/false</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;">Сума комісії розраховується із загальної суми платежу, а утримується - з першого одержувача зі '''splitting,''' у якого '''withCommission=true'''. Якщо ні в кого з '''splitting''' не зазначено '''withCommission=true''', то комісія втікає з “основного” одержувача, вказаного в bankingDetails. | |||
Якщо у всіх значення '''withCommission=false''' (або не передали), то комісія утримається з "основного одержувача", вказаного в параметрі '''bankingDetails''' | |||
Якщо всі значення '''withCommission=true,''' то комісія утримається з першого одержувача, зазначеного в splitting. Залишок буде надіслано на реквізити основного платежу з '''bankingDetails''' або '''bankingDetailsId.''' | |||
При встановленому сервісом Типі розрахунків “За актами", одержувачам перераховується повна сума, без відрахування комісії, незалежно від значення WithComission. | |||
</td> | |||
</tr> | |||
<!-- П'ятий рядок --></table> | |||
<br> | |||
Після виконання сплітування під кожен спліт (частини) платежу на стороні EasyPay створюється фінансова транзакція з унікальним transactionID. | |||
<br> | |||
* Якщо списання грошей з картки пройшло успішно і всі реквізити для спліту вказані корректно (доступні) - всі транзакції набувають успішного статусу і по кожній транзакції відправляється колбек. | |||
* Якщо списання грошей з картки пройшло неуспішно – запит відхиляється з кодом фінансової помилки; | |||
* Якщо списання грошей з картки пройшло успішно, але хоча б один із реквізитів зазначено неправильно – всі транзакції спліту (частини) платежу – будуть відхилені. | |||
<br> | |||
Після проведення успішного списання та сплітування по кожній фінансовій транзакції в рамках спліту направляється колбек (нотифікація) про успішний платіж. Приклад коллбека (нотифікації) вказаний у [[MerchantAPI#Повідомлення про платіж|повідомлення про платіж]]'''''.''''' | |||
<p style="border: 1px solid #4A90E2; background-color: rgba(74, 144, 226, 0.1); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; color: #333; position: relative;"> | |||
Якщо параметр <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #D63384;">userPaymentInstrument</span> не є порожнім, створення платежу буде відбуватися автоматично. | |||
</p> | |||
Для різних інструментів передаються такі параметри: | |||
'''userPaymentInstrument –''' інструмент оплати. | |||
'''*Картка (PCI DSS)'''<syntaxhighlight lang="json" line="1"> | |||
"userPaymentInstrument": { | |||
"instrumentType": "Card", | |||
"pan": "5168123456780123", | |||
"expire": "MM/YY", | |||
"cvv": "string" } | |||
</syntaxhighlight> | |||
'''*Токенізована Карта'''<syntaxhighlight lang="json" line="1"> | |||
{"userInfo":{"phone":"380935207603"}, /Phone,під яким токенізована карта/ | |||
… | |||
"userPaymentInstrument": { | |||
"instrumentType": "Card", | |||
"cardGuid": "guid", /токен картки/ | |||
} | |||
} | |||
</syntaxhighlight> | |||
'''Kyivstar Money/Life Money /VodafoneMoney'''<syntaxhighlight lang="json" line="1"> | |||
"userPaymentInstrument": { | |||
"instrumentType": "KSMoney / LifeMoney / VodafoneMoney", | |||
"phone": "380xxYYYYYYY" } | |||
</syntaxhighlight>'''ApplePay/GooglePay''' | |||
<syntaxhighlight lang="json" line="1"> | |||
"userPaymentInstrument": { | |||
"instrumentType": "ApplePay / GooglePay", | |||
"token": “string”/Токен, отриманий від Apple | Google / | |||
} | |||
</syntaxhighlight> | |||
* '''partnerInfo –''' інформація про партнера | |||
* '''partnerInfo.name –''' найменування партнера | |||
* '''partnerInfo.id –''' ВД (ЄДРПОУ) партнера | |||
* '''partnerInfo.account –''' рахунок партнера (особовий рахунок/IBAN…) | |||
* | |||
<br> |
Версія за 13:55, 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 автоматично продовжується. |
Створення замовлення
Перед викликом цього методу потрібно викликати один із методів:
⚠️ Важливо! Для кожного нового запиту CreateOrder потрібно використовувати унікальний PageID.
POST /api/merchant/createOrder
headers
'Content-Type': 'application/json'
'PartnerKey': 'partnerName'
'locale': 'ua'
'AppId': 'a5806a5f-dbb8-496a-a23f-aab6d2fcbce1'
'PageId': '2ce7dba6-4600-456e-b9c8-f13cacf1c85d'
'Sign': 'e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4='
<br>
{
"userInfo": {
"phone": "string"
},
Обов'язкові параметри:
"order": {
"serviceKey": "string",
"orderId": "string",
"description": "string",
"amount":1.01, (decimal)
Необов'язкові параметри:
"paymentOperation":"PaymentTokenization",
"additionalItems": {},
"expire": "2019-04-15T07:49:20",
"isOneTimePay": true,
"fields": [
{
"fieldName": "string",
"fieldValue": "string",
"fieldKey": "string",
}
]
},
"urls": {
"success": "string",
"failed": "string",
"back": "string",
},
"bankingDetailsId": "string",
"bankingDetails": {
"payee": {
"id": "string",
"name": "string",
"bank": {
"name": "string",
"mfo": "string",
"account": "string"
}
},
"payer": {
"name": "string",
"id": "string"
},
"narrative": {
"name": "string"
}
},
"reccurent": {
"cronRule": "string",
"dateExpire": "2019-01-21T08:24:38.741Z",
"dateRun": "2019-01-20T08:24:38.741Z",
"properties":
{
"failedCount":0,
"failedRule":"string",
"amount":1.0,
"UrlNotify":"http://notify.url"
}
},
"splitting": {
"items": [
{
"serviceKey": "string",
"orderId": "string”
"bankingDetailsId": "string",
"bankingDetails": {
"payee": {
"id": "string",
"name": "string",
"bank": {
"name": "string",
"mfo": "string",
"account": "string"
}
},
"payer": {
"name": "string"
},
"narrative": {
"name": "string"
}
},
"unit": "Amount|Percent",
"value": 0,
"withCommission": false|true
}
]
},
"userPaymentInstrument": {
"instrumentType": "Card",
"cardGuid": "guid",
"pan": "string",
"expire": "MM/YY",
"cvv": "string",
},
"partnerInfo": {
"id": "string",
"name": "string",
"account": "string"
}
}
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
serviceKey |
ідентифікатор послуги мерчанта (видає EasyPay) | передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
orderId |
унікальний ідентифікатор номера замовлення у системі партнера | магазину чи послуги
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
description |
опис замовлення (до 120 символів) | відомий лише торговцю та EasyPay
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
amount |
сума замовлення, роздільник - точка | параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів) |
paymentOperation |
тип платіжного процесу | Можливі значення:
|
userInfo/phone |
номер телефону (або ідентифікатор) клієнта | Номер телефону необхідний:
|
expire |
час життя замовлення | Після закінчення заданого часу замовлення сплатити неможливо. Час життя сторінки може відображатися на платіжній сторінці у вигляді таймера (за замовчуванням таймер вимкнено). Значення має бути більшим за поточний час на 6 хвилин. Значення за замовчуванням - 3 дні |
sOneTimePay |
включає можливість успішно оплатити замовлення лише 1 раз за конкретним forwardUrl | Значення:
|
urls |
|
|
Необов'язкові додаткові поля
additionalItems
– необов'язкові додаткові параметри, наприклад:
"additionalItems":{
"PayerEmail":"[email protected]",
"PayerPhone":"380930007603",
"Merchant.UrlNotify":"https://notify.url",
"Merchant.Param1":"CustomValue",
"CurrencyAmountLabel":"123.56$"
},
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
PayerEmail |
емейл клієнта для оповіщення його у разі неоплаченого замовлення та для автоматичного заповнення поля “Надіслати квитанцію на email” на сторінці оплати. | Якщо параметр передається – він не може бути порожнім і має відповідати формату email. |
PayerPhone |
телефон клієнта, на який протягом 15-20 хв після виклику CreateOrder відправиться нагадування про неоплачене замовлення (смс або вайбер). | Якщо параметр передається, він не може бути порожнім і повинен відповідати формату телефону. |
Merchant.UrlNotify |
URL для надсилання нотифікації за успішним платежем (callback), див. Повідомлення про платіж. | Параметр не може бути порожнім і має відповідати формату URL. |
Merchant.Param1 |
індивідуальний параметр партнера Param1 узгоджується з EasyPay |
reccurentPayment
- інформація для створення рекурентного платежу на основі поточного. Рекурентний платіж буде створений за розкладом, якщо основний платіж виконаний за допомогою інструментів card, Rcard, Vcard, LifeMoney
"reccurent": {
"cronRule": "string",
"dateExpire": "2019-01-21T08:24:38.741Z",
"dateRun": "2019-01-20T08:24:38.741Z",
"properties":
{
"failedCount":0,
"failedRule":"string",
"amount":1.0,
"UrlNotify":"http://notify.url"
}
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
cronRule |
правило у cron-форматі, з якою періодичністю повторювати рекурентний платіж, наприклад 10 20 15 * * (кожного 15 числа місяця о 20:10). | Якщо ця властивість порожня, значить рекурентний платіж виконуватиметься на вимогу продавця. Плануйте перше виконання рекуренту щонайменше 20 хвилин від дати успішного платежу. |
dateExpire |
дата, після якої не проводити рекурентний платіж. | магазину чи послуги
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
dateRun |
дата першого запуску рекурентного платежу (опціонально). | Якщо не заданий, перший запуск розраховується за recurrent/cronRule |
properties |
додаткові параметри (опціонально) |
|
bankingDetails
- передача банківських реквізитів для перерахування коштів у випадку, якщо банківські реквізити можуть змінюватися щодо різних платежів одного сервісу продавця. На стороні EasyPay має бути увімкнено режим "Отримувати реквізити із запиту".
{
"bankingDetails": {
"payee": {
"id": "123664578",
"name": "департамент патрульної поліції",
"bank": {
"name": "пат пумб",
"mfo": "330556",
"account": "123654778889"
}
},
"payer": { "name": "Иванова Мария" },
"narrative": { "name": "Переказ коштів згідно договору з ФК № 111/11-П від 11.11.1111 р. за виключенням винагороди за їх переказ згідно реєстру від [work_date]р." }
}
}
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
payee/ID |
код одержувача | ЄДРПОУ або ІПН |
payee/Name |
одержувач | до 38 символів |
Payee/Bank/Name |
банк отримувача | до 38 символів |
Payee/Bank/Mfo |
МФО банку | може не заповнюватися, якщо Payee/Bank/Account містить IBAN |
Payee/Bank/Account |
р/р одержувача або IBAN | |
Payer/Name |
платник | |
Narrative/Name |
призначення платежу | до 157 символів |
bankingDetailsId |
повну структуру bankingDetails можна не передавати, для цього достатньо передати | |
bankingDetailsId |
|
|
Splitting - інформація щодо сплітування (розщеплення) платежу.
Частина загальної суми з order/amount розподіляється відповідно до інформації в splitting/items/value, а залишок - йде на основні реквізити з bankingDetails (або bankingDetailsId). На стороні EasyPay має бути увімкнено режим “Отримувати реквізити із запиту
Структура items це масив. Основний платіж буде розщеплений стільки платежів, скільки міститься у цьому масиві плюс залишок. Кожен розщеплений платіж буде надіслано на відповідні банківські реквізити items/bankingDetails
. Залишок коштів буде надіслано на реквізити основного платежу з BankingDetails
або bankingDetailsId,
які потрібно обов'язково вказувати під час сплітування.
},
"splitting": {
"items": [
{
"serviceKey": "string",
"orderId": "string"
"bankingDetailsId": "string",
"bankingDetails": {
"payee": {
"id": "string",
"name": "string",
"bank": {
"name": "string",
"mfo": "string",
"account": "string"
}
},
"payer": {
"name": "string"
},
"narrative": {
"name": "string"
}
},
"unit": "Amount|Percent",
"value": 0,
"withCommission": false|true
Параметр | Характеристика | Коментарій |
---|---|---|
items/serviceKey |
необов'язковий параметр. Ідентифікатор послуги, за якою ініціюється зарахування спліту (частини) платежу. | Якщо параметр відсутній, використовується значення ServiceKey з тіла запиту CreateOrder. |
items/orderId |
необов'язковий параметр. Ідентифікатор внутрішнього замовлення Мерчант для маркування конкретного спліту (частини) платежу. | Якщо параметр відсутній, використовується значення OrderId, передане в тілі запиту CreateOrder. |
items/bankingDetails |
банківські реквізити кожного розщепленого платежу. | |
items/unit |
може бути Amount (сума розщепленого платежу в грн.) або Percent (сума розщепленого платежу вважається відсотком від загального). | |
items/value |
значення у цифрах. | |
items/withCommission - true/false |
Вказує з якого з одержувачів слід утримати внутрішню комісію. | Сума комісії розраховується із загальної суми платежу, а утримується - з першого одержувача зі splitting, у якого withCommission=true. Якщо ні в кого з splitting не зазначено withCommission=true, то комісія втікає з “основного” одержувача, вказаного в bankingDetails.
Якщо у всіх значення withCommission=false (або не передали), то комісія утримається з "основного одержувача", вказаного в параметрі bankingDetails Якщо всі значення withCommission=true, то комісія утримається з першого одержувача, зазначеного в splitting. Залишок буде надіслано на реквізити основного платежу з bankingDetails або bankingDetailsId. При встановленому сервісом Типі розрахунків “За актами", одержувачам перераховується повна сума, без відрахування комісії, незалежно від значення WithComission. |
Після виконання сплітування під кожен спліт (частини) платежу на стороні EasyPay створюється фінансова транзакція з унікальним transactionID.
- Якщо списання грошей з картки пройшло успішно і всі реквізити для спліту вказані корректно (доступні) - всі транзакції набувають успішного статусу і по кожній транзакції відправляється колбек.
- Якщо списання грошей з картки пройшло неуспішно – запит відхиляється з кодом фінансової помилки;
- Якщо списання грошей з картки пройшло успішно, але хоча б один із реквізитів зазначено неправильно – всі транзакції спліту (частини) платежу – будуть відхилені.
Після проведення успішного списання та сплітування по кожній фінансовій транзакції в рамках спліту направляється колбек (нотифікація) про успішний платіж. Приклад коллбека (нотифікації) вказаний у повідомлення про платіж.
Якщо параметр userPaymentInstrument не є порожнім, створення платежу буде відбуватися автоматично.
Для різних інструментів передаються такі параметри:
userPaymentInstrument – інструмент оплати.
*Картка (PCI DSS)
"userPaymentInstrument": {
"instrumentType": "Card",
"pan": "5168123456780123",
"expire": "MM/YY",
"cvv": "string" }
*Токенізована Карта
{"userInfo":{"phone":"380935207603"}, /Phone,під яким токенізована карта/
…
"userPaymentInstrument": {
"instrumentType": "Card",
"cardGuid": "guid", /токен картки/
}
}
Kyivstar Money/Life Money /VodafoneMoney
"userPaymentInstrument": {
"instrumentType": "KSMoney / LifeMoney / VodafoneMoney",
"phone": "380xxYYYYYYY" }
ApplePay/GooglePay
"userPaymentInstrument": {
"instrumentType": "ApplePay / GooglePay",
"token": “string”/Токен, отриманий від Apple | Google /
}
- partnerInfo – інформація про партнера
- partnerInfo.name – найменування партнера
- partnerInfo.id – ВД (ЄДРПОУ) партнера
- partnerInfo.account – рахунок партнера (особовий рахунок/IBAN…)