Повідомлення про платіж: відмінності між версіями
Немає опису редагування |
|||
(Не показані 3 проміжні версії цього користувача) | |||
Рядок 1: | Рядок 1: | ||
{{APINav}} | |||
=== Повідомлення про платіж === | |||
---- | |||
# Партнер обов'язково вибирає 1 або кілька способів сповіщення та повідомляє його в EasyPay. Партнер зазначає платіж успішним на своїй стороні лише після отримання цього повідомлення | |||
# Ми надсилаємо HTTP - колек з IP 93.183.196.26 методом POST з інформацією про платіж. | |||
# Запит надсилає EasyPay партнеру після того, як транзакція набула фінального статусу (Accepted, Declined). | |||
# URL для повідомлень '''(UrlNotify)''' партнер направляє у запиті '''createOrder''' у параметрі: | |||
<br> | |||
<syntaxhighlight lang="json" line="1"> | |||
"order":{ | |||
"additionalItems":{ | |||
"Merchant.UrlNotify":"https://notify.url" | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
"Merchant.UrlNotify" Параметр не може бути порожнім і має відповідати формату URL. | |||
<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;">HTTP StatusCode 200</span>, запит нотифікації буде надіслано повторно протягом <strong>1-10 хвилин</strong>. | |||
Повторення може продовжуватися визначену кількість разів (за замовчуванням – <strong>50 разів</strong>), поки не буде отримано статусу <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #198754;">"200 ОК"</span>. | |||
</p> | |||
'''Request'''<syntaxhighlight lang="json" line="1"> | |||
headers | |||
"Sign": "Bq2d0oaqVGMRWpX5wsGpOlpqLg42pBdDO7TfTPYVmnU=" | |||
body | |||
{ | |||
"OperationType": "Payment", | |||
"PartnerKey": "groshi-com", | |||
"ServiceKey": "GROSHI-COM-GOOGLEPAY", | |||
"TransactionStatus": "Accepted", | |||
"MerchantOrderId": "3127194_28_450866", | |||
"DateTime": "2023-12-09T14:00:48", | |||
"Amount": 2059.08, | |||
"Commission": 28.83, | |||
"TransactionId": 1336448544, | |||
"AdditionalItems": { | |||
"Merchant.Inn": "3178404189", | |||
"Merchant.Details": ";0;0;;4;", | |||
"Merchant.UrlNotify": "https://testpartner.ua/callback", | |||
"Merchant.ClientFullName": "Іванов Дмитро" | |||
"Acquirer.MerchantId":"12345678" | |||
"Acquirer.TerminalId":"E1234567" | |||
"Card.BrandType":"Visa" | |||
"AuthCode":"012345" | |||
} | |||
} | |||
</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>OperationType</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;">'''Можливі значення:''' | |||
'''payment -''' про успішний платіж (повторюється, якщо у відповідь не отримано статусу 200) | |||
'''refund -''' про успішне скасування платежу (відправляється разово) | |||
</td> | |||
</tr> | |||
<!-- Третій рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>PartnerKey</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> | |||
</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;">ІД сервісу партнера у системі EasyPay </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>TransactionStatus</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>MerchantOrderId</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">номер замовлення партнера із запиту createOrder </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td> | |||
</tr> | |||
<!-- Cьомий рядок--> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Acquirer.MerchantId</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>Acquirer.TerminalId</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>Card.BrandType</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>AuthCode</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>DateTime</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;">якщо партнер не відповість статусом 200 на запит з action:payment, то в наступному запиті час буде новим</td> | |||
</tr> | |||
<!-- П'ятий рядок --> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>TransactionId</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ID транзакції на стороні EasyPay </td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td> | |||
</tr> | |||
<!-- П'ятий рядок --></table> | |||
<br>Необхідно перевіряти підпис у нашому HTTP notify, налаштувати прийом лише для наших IP 93.183.196.26. | |||
Для правильного обчислення підпису, тіло з нотифай потрібно брати як є, без перетворень та форматувань. | |||
У випадку, якщо підпис notify не перевірено, всі фінансові ризики перекладаються на партнера. | |||
Рядок 150: | Рядок 318: | ||
</syntaxhighlight>Також буде надіслано нотифікацію у разі успішного платежу. Створення рекурентного платежу на операцію, у структурі якої є спліт – не підтримується. | </syntaxhighlight>Також буде надіслано нотифікацію у разі успішного платежу. Створення рекурентного платежу на операцію, у структурі якої є спліт – не підтримується. | ||
==== Видалення рекурентного платежу ==== | |||
---- | |||
<p style="border: 1px solid rgba(255, 0, 0, 0.5); background-color: rgba(255, 0, 0, 0.2); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; position: relative; padding-left: 100px;"> | |||
<span style="position: absolute; top: 50%; left: 10px; background-color: #FF0000; color: #FFFFFF; padding: 2px 12px; border-radius: 4px; font-size: 14px; font-weight: bold; border: 2px solid #FF0000; transform: translateY(-50%);">DELETE</span> | |||
<span style="margin-left: 5px; font-weight: bold; font-size: 16px; color: #333333;">/api/merchant/reccurent/delete/{id}</span> | |||
</p> | |||
'''Request''' <syntaxhighlight lang="json" line="1"> | |||
headers | |||
"PartnerKey": "partnerName" | |||
"locale": "ua" | |||
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1" | |||
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d" | |||
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=" | |||
body | |||
відсутній | |||
</syntaxhighlight>'''Response'''<syntaxhighlight lang="json" line="1"> | |||
headers | |||
- | |||
body | |||
- | |||
</syntaxhighlight> | |||
<br> | <br> | ||
Поточна версія на 12:43, 14 серпня 2025
Merchant API
Головна сторінка- Загальні_відомості
- Заголовки запитів
- Основні запити та відповіді
- Реєстрація точки та створення сесії
- Створення замовлення
- Розхолдування платежу
- Параметри BrowseInfo при 3DS оплаті
- Підтвердження платежу клієнтом. Введення смс. Проходження 3DS перевірки
- Перевірка статусу платежу
- Скасування платежу
- Повідомлення про платіж
- Робота з токенізованими картами
(Токенізація з передачею даних картки у запиті
- Токенізація за допомогою введення даних картки користувачем на сторінці
- Отримання списку токенізованих карт
- Видалення токенізованих карт
- Видача кредиту (переказ на картку користувача)
- Нотифікації (колбеки) щодо операцій поповнення карток
- Інтеграція з ApplePay та GooglePay
- Створення підпису
- Можливі варіанти інструментів оплати
- SDK
Повідомлення про платіж
- Партнер обов'язково вибирає 1 або кілька способів сповіщення та повідомляє його в EasyPay. Партнер зазначає платіж успішним на своїй стороні лише після отримання цього повідомлення
- Ми надсилаємо HTTP - колек з IP 93.183.196.26 методом POST з інформацією про платіж.
- Запит надсилає EasyPay партнеру після того, як транзакція набула фінального статусу (Accepted, Declined).
- URL для повідомлень (UrlNotify) партнер направляє у запиті createOrder у параметрі:
"order":{
"additionalItems":{
"Merchant.UrlNotify":"https://notify.url"
}
}
"Merchant.UrlNotify" Параметр не може бути порожнім і має відповідати формату URL.
⚠️ Важливо! Якщо у відповіді не отримано HTTP StatusCode 200, запит нотифікації буде надіслано повторно протягом 1-10 хвилин. Повторення може продовжуватися визначену кількість разів (за замовчуванням – 50 разів), поки не буде отримано статусу "200 ОК".
Request
headers
"Sign": "Bq2d0oaqVGMRWpX5wsGpOlpqLg42pBdDO7TfTPYVmnU="
body
{
"OperationType": "Payment",
"PartnerKey": "groshi-com",
"ServiceKey": "GROSHI-COM-GOOGLEPAY",
"TransactionStatus": "Accepted",
"MerchantOrderId": "3127194_28_450866",
"DateTime": "2023-12-09T14:00:48",
"Amount": 2059.08,
"Commission": 28.83,
"TransactionId": 1336448544,
"AdditionalItems": {
"Merchant.Inn": "3178404189",
"Merchant.Details": ";0;0;;4;",
"Merchant.UrlNotify": "https://testpartner.ua/callback",
"Merchant.ClientFullName": "Іванов Дмитро"
"Acquirer.MerchantId":"12345678"
"Acquirer.TerminalId":"E1234567"
"Card.BrandType":"Visa"
"AuthCode":"012345"
}
}
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
OperationType |
тип оповіщення | Можливі значення:
payment - про успішний платіж (повторюється, якщо у відповідь не отримано статусу 200) refund - про успішне скасування платежу (відправляється разово) |
PartnerKey |
ІД партнера у системі EasyPay | |
ServiceKey |
ІД сервісу партнера у системі EasyPay | |
TransactionStatus |
статус платежу | |
MerchantOrderId |
номер замовлення партнера із запиту createOrder | |
Acquirer.MerchantId |
ідентифікатор торговця | |
Acquirer.TerminalId |
ідентифікатор платіжного пристрою | |
Card.BrandType |
найменування платіжної системи, платіжний інструмент якої використовується | |
AuthCode |
Код авторизації | |
DateTime |
час надання платежу статусу на стороні EasyPay | якщо партнер не відповість статусом 200 на запит з action:payment, то в наступному запиті час буде новим |
TransactionId |
ID транзакції на стороні EasyPay |
Необхідно перевіряти підпис у нашому HTTP notify, налаштувати прийом лише для наших IP 93.183.196.26.
Для правильного обчислення підпису, тіло з нотифай потрібно брати як є, без перетворень та форматувань.
У випадку, якщо підпис notify не перевірено, всі фінансові ризики перекладаються на партнера.
Отримання інформації про рекурентний платіж
GET /api/merchant/reccurent/info
Request
headers
"PartnerKey": "partnerName"
"locale": "ua"
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1"
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d"
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4="
queryParams
"serviceKey": "string"
"orderId": "string"
"reccurentId": "0"
"dateFrom": 2025-03-10
"dateTo": 2025-03-17
"isEnabled": true|false
"pageNumber": 1
"countPerPage": 3
Response
headers
body
{
"merchantReccurentPaymentDetails":[
{
"recurrentId":14433854,
"orderDescription":"Easy payment",
"serviceName":"Мерчант Тест UA",
"serviceKey":"MERCHANT-TEST",
"orderId":"test_20250312-153601+url",
"amount":1.000000,
"croneRule":"* 17 * * *",
"dateCreate":"2025-03-12T16:38:02+02:00",
"dateRun":"2025-03-13T17:00:00+02:00",
"dateLastPayment":"2025-03-12T19:47:05+02:00",
"isEnabled":true,
"dateExpire":"2025-03-12T21:37:42+02:00",
"properties":{
"failedCount":"1",
"urlNotify":"http://109.251.205.8:9987/merch/notifysigncheckexample.php"
}
},
{
"recurrentId":14433852,
"orderDescription":"Easy payment",
"serviceName":"Мерчант Тест UA",
"serviceKey":"MERCHANT-TEST",
"orderId":"test_20250312-153601",
"amount":1.000000,
"croneRule":"* 17 * * *",
"dateCreate":"2025-03-12T16:37:25+02:00",
"dateRun":"2025-03-13T17:00:00+02:00",
"dateLastPayment":"2025-03-12T19:47:05+02:00",
"isEnabled":true,
"dateExpire":"2025-03-12T21:37:03+02:00",
"properties":{
"failedCount":"1"
}
}
],
"totalCount":2,
"totalFilteredCount":2,
"pageFilteredCount":2,
"currentPageNumber":1,
"numberOfPages":1,
"error":null
}
Параметр | Характеристика |
---|---|
serviceKey |
ІД сервісу партнера у системі EasyPay |
orderId |
номер замовлення партнера із запиту createOrder |
reccurentId |
номер рекурента |
dateFrom |
дата створення рекурента з.. |
dateTo |
дата створення рекурента по.. |
isEnabled |
відобразити лише активні / або неактивні рекуренти |
pageNumber |
відобразити сторінку номер.. |
countPerPage |
кількість записів на сторінці |
templateId |
номер рекуренту (reccurentId) |
Виклик рекурентного платежу
POST /api/merchant/reccurent/payment
Request
headers
"Content-Type": "application/json"
"PartnerKey": "partnerName"
"locale": "ua"
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1"
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d"
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4="
body
{
"reccurentId": 0,
"amount": 0
}
Response
headers
body
{
"reccurentId": 0,
"transactionId": 0,
"transactionStatus": "None",
"error": {
"errorCode": "string",
"title": "string",
"description": "string",
"errorMessage": "string",
"fieldErrors": [
{
"fieldName": "string",
"errorCode": "string",
"errorMessage": "string"
}
]
}
}
Також буде надіслано нотифікацію у разі успішного платежу. Створення рекурентного платежу на операцію, у структурі якої є спліт – не підтримується.
Видалення рекурентного платежу
DELETE /api/merchant/reccurent/delete/{id}
Request
headers
"PartnerKey": "partnerName"
"locale": "ua"
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1"
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d"
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4="
body
відсутній
Response
headers
-
body
-
← Назад
Скасування платежу
Далі →
Токенізація карти