Повідомлення про платіж: відмінності між версіями
Немає опису редагування |
|||
(Не показано 15 проміжних версій цього користувача) | |||
Рядок 1: | Рядок 1: | ||
== | {{APINav}} | ||
=== Повідомлення про платіж === | |||
---- | ---- | ||
# Партнер обов'язково вибирає 1 або кілька способів сповіщення та повідомляє його в EasyPay. Партнер зазначає платіж успішним на своїй стороні лише після отримання цього повідомлення | # Партнер обов'язково вибирає 1 або кілька способів сповіщення та повідомляє його в EasyPay. Партнер зазначає платіж успішним на своїй стороні лише після отримання цього повідомлення | ||
Рядок 167: | Рядок 168: | ||
Для правильного обчислення підпису, тіло з нотифай потрібно брати як є, без перетворень та форматувань. | Для правильного обчислення підпису, тіло з нотифай потрібно брати як є, без перетворень та форматувань. | ||
У випадку, якщо підпис notify не перевірено, всі фінансові ризики перекладаються на партнера. | У випадку, якщо підпис notify не перевірено, всі фінансові ризики перекладаються на партнера. | ||
==== Отримання інформації про рекурентний платіж ==== | ==== Отримання інформації про рекурентний платіж ==== | ||
Рядок 315: | Рядок 318: | ||
</syntaxhighlight>Також буде надіслано нотифікацію у разі успішного платежу. Створення рекурентного платежу на операцію, у структурі якої є спліт – не підтримується. | </syntaxhighlight>Також буде надіслано нотифікацію у разі успішного платежу. Створення рекурентного платежу на операцію, у структурі якої є спліт – не підтримується. | ||
==== Видалення рекурентного платежу ==== | |||
==== | |||
---- | ---- | ||
<p style="border: 1px solid | <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: | <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;">/api/merchant/reccurent/ | <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"> | '''Request''' <syntaxhighlight lang="json" line="1"> | ||
headers | headers | ||
Рядок 330: | Рядок 332: | ||
"PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d" | "PageId": "2ce7dba6-4600-456e-b9c8-f13cacf1c85d" | ||
"Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=" | "Sign": "e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4=" | ||
</syntaxhighlight> | body | ||
відсутній | |||
</syntaxhighlight>'''Response'''<syntaxhighlight lang="json" line="1"> | |||
headers | |||
- | |||
body | body | ||
- | |||
</syntaxhighlight> | |||
<br> | |||
<div style="width: 100%; display: flex; justify-content: space-between; gap: 16px; box-sizing: border-box; padding: 8px 0;"> | |||
<!-- Ліва кнопка --> | |||
<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; | |||
"> | |||
<!-- Текст у кутку --><span style="position: absolute; top: 6px; left: 8px;">← Назад</span> | |||
<!-- Основний текст --> | |||
<br> | |||
<span>[[Скасування платежу#Вступ|Скасування платежу]]</span> | |||
</div> | |||
< | <!-- Права кнопка --> | ||
<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; | |||
"> | |||
</ | <span style="position: absolute; top: 6px; right: 8px;">Далі →</span> | ||
<!-- Основний текст --> | |||
<span>[[Робота з токенізованими картами|Токенізація карти]]</span> | |||
</div> | |||
< | </div> |
Поточна версія на 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
-
← Назад
Скасування платежу
Далі →
Токенізація карти