Скасування платежу: відмінності між версіями
Рядок 100: | Рядок 100: | ||
* на суму меншу від суми спліту (Часткова скасування спліту) | * на суму меншу від суми спліту (Часткова скасування спліту) | ||
<br> | <br> | ||
===== Скасування повної суми платежу (замовлення зі Splitting параметрами) ===== | |||
---- | |||
* Для скасування повної суми Splitting транзакції необхідно виконати запит статусу транзакції згідно з розділом "[[MerchantAPI#Перевірка статусу платежу|Перевірка статусу платежу]]'''"''' використовуючи основний <code>OrderID</code> | |||
* Отриманий у відповіді кореневий <code>transactionID</code> використовувати у запиті [[MerchantAPI#Скасування платежу|<code>cancelOrder</code>]] | |||
* У відповідь на запит [[MerchantAPI#Скасування платежу|<code>cancelOrder</code>]] буде отримано відповідь зі статусом скасування, а також буде отримано коллбек по кожній транзакції, яка входила до Splitting транзакції. | |||
* Коллбек на загальну суму Splitting транзакції не надходить. | |||
<br> | |||
<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/cancelOrder</span> | |||
</p> | |||
'''Request'''<syntaxhighlight lang="json" 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=" | |||
body | |||
{ | |||
"serviceKey": "easypay-test", | |||
"orderId": "full_split_11", | |||
"transactionId": 991379504, | |||
} | |||
</syntaxhighlight> | |||
'''Response'''<syntaxhighlight lang="json" line="1"> | |||
headers | |||
відсутній | |||
body | |||
{ | |||
"merchantKey":"easypay-test", | |||
"transactionId": 991379504, | |||
"refundTransactionId":913141464, | |||
"orderId":"full_split_11", | |||
"amount":1.000000, | |||
"paymentState":"accepted", | |||
"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>transactionId</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">номер транзакції, що скасовується, приходить при отриманні коллбека за оплаченим замовленням (параметр payment_id)</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>transactionId</code>'''</td> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">оригінальна транзакція, яка була відправлена у запиті cancelOrder</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>refundTransactionId</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> | |||
<!-- Cьомий рядок--> | |||
<tr> | |||
<td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>paymentState</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;">'''Можливі значення:''' | |||
* '''accepted''' - скасування успішне. Створено транзакцію рефанду з негативною сумою | |||
* '''declined''' - скасування пройшло неуспішно | |||
* '''Pending''' або будь-який інший статус – вимагає перевірки статусу основної транзакції перед повторним запитом скасування. | |||
</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> | |||
<!-- П'ятий рядок --><!-- П'ятий рядок --><!-- П'ятий рядок --></table>Якщо скасування пройшло успішно, запит статусу оригінальної транзакції повинен тепер повертати <code>"paymentState"''':"'''declined'''"'''</code> як для основної так і для окремих транзакцій, а запит статусу транзакції скасування - <code>"paymentState":"accepted".</code> | |||
При успішному скасуванні платежу, якщо налаштована HTTP - нотифікація '''(див.''' [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]]''')''', на Merchant.UrlNotify буде '''одноразово''' надіслано POST - запит із параметром <code>"action": "refund"</code> та сумою (<code>amount</code>), яка була скасована. Нотифікація надсилається одноразово без повторних спроб, статус у відповідь код нами не перевіряється. |
Версія за 10:24, 13 серпня 2025
Вступ
Метод викликається лише для платежів у статусі "accepted". Для успішного скасування має бути достатньо суми прийнятих платежів у день скасування. Можна скасовувати платежі, які не старші 30 днів. Успішне повернення після цього терміну – не гарантується, залежить від умов банків-еквайєрів.
Повернення суми на картку відбувається в строк 0-3 робочих дні, в окремих випадках – до 30 робочих днів. Це залежить від умов банку-еквайєра, через який пройшов основний платіж, а також банку-емітента.
Скасування звичайного платежу
POST /api/merchant/cancelOrder
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
{
"serviceKey": "MERCHANT-TEST",
"orderId": "test_20210217-121843",
"transactionId": "913141164",
"amount":"1"
}
Response
headers
body
{
"merchantKey":"easypay-test",
"transactionId":913141164,
"refundTransactionId":913141464,
"orderId":"test_20210217-121843",
"amount":1.000000,
"paymentState":"accepted",
"error":null
}
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
amount |
скасована сума | для часткового скасування - передається із сумою, яку потрібно скасувати.
для скасування повної суми - параметр amount не передається |
transactionId |
оригінальна транзакція | магазину чи послуги
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером. |
refundTransactionId |
транзакція рефанду (скасування) | транзакція рефанду (скасування) |
paymentState |
статус транзакції рефанду (скасування). Можливі значення: | Можливі значення:
|
Якщо скасування пройшло успішно, запит статусу оригінальної транзакції повинен повертати "paymentState
":"declined
", а запит статусу транзакції скасування - "paymentState
": "accepted
"
При успішному скасуванні платежу, якщо налаштована HTTP - нотифікація (Повідомлення про платіж), на Merchant.UrlNotify буде одноразово надіслано POST - запит із параметром "action
": "refund
" та сумою (amount), яка була скасована. Нотифікація надсилається одноразово без повторних спроб, статус у відповідь код нами не перевіряється.
Скасування платежу (замовлення зі Splitting параметрами)
Скасування платежу (Замовлення) можна робити:
- на всю суму платежу (замовлення)
- на суму одного спліту (Часткова скасування платежу (замовлення))
- на суму меншу від суми спліту (Часткова скасування спліту)
Скасування повної суми платежу (замовлення зі Splitting параметрами)
- Для скасування повної суми Splitting транзакції необхідно виконати запит статусу транзакції згідно з розділом "Перевірка статусу платежу" використовуючи основний
OrderID
- Отриманий у відповіді кореневий
transactionID
використовувати у запитіcancelOrder
- У відповідь на запит
cancelOrder
буде отримано відповідь зі статусом скасування, а також буде отримано коллбек по кожній транзакції, яка входила до Splitting транзакції. - Коллбек на загальну суму Splitting транзакції не надходить.
POST /api/merchant/cancelOrder
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
{
"serviceKey": "easypay-test",
"orderId": "full_split_11",
"transactionId": 991379504,
}
Response
headers
відсутній
body
{
"merchantKey":"easypay-test",
"transactionId": 991379504,
"refundTransactionId":913141464,
"orderId":"full_split_11",
"amount":1.000000,
"paymentState":"accepted",
"error":null
}
Опис параметрів
Параметр | Характеристика | Коментарій |
---|---|---|
transactionId |
номер транзакції, що скасовується, приходить при отриманні коллбека за оплаченим замовленням (параметр payment_id) | |
amount |
сума, що скасовується:
для часткового скасування - передається із сумою, яку потрібно скасувати. |
|
transactionId |
оригінальна транзакція, яка була відправлена у запиті cancelOrder | |
refundTransactionId |
транзакція рефанду (скасування) | |
amount |
сума, яка була скасована | |
paymentState |
статус транзакції рефанду (скасування) | Можливі значення:
|
Якщо скасування пройшло успішно, запит статусу оригінальної транзакції повинен тепер повертати "paymentState":"declined"
як для основної так і для окремих транзакцій, а запит статусу транзакції скасування - "paymentState":"accepted".
При успішному скасуванні платежу, якщо налаштована HTTP - нотифікація (див. Повідомлення про платіж), на Merchant.UrlNotify буде одноразово надіслано POST - запит із параметром "action": "refund"
та сумою (amount
), яка була скасована. Нотифікація надсилається одноразово без повторних спроб, статус у відповідь код нами не перевіряється.