Callback - це повідомлення клієнта про те, що сталась якась подія за допомогою HTTP запиту. Система UAPAY робить HTTP запит з методом POST на вказаний клієнтом URL. Формат переданих даних - JSON. Запит підписується за допомогою JWT-токена, докладніше про це тут.
Обов'язково! Для отримання callback з продуктового середовища необхідно передати вашому персональному менеджеру UAPAY URL, на який ви хочете їх отримувати, і після підтверждення, ваш URL буде внесено в список дозволених для отримання callback.
Також є гарантований механізм доставки callback - крім першої спроби доставки, є ще 5 спроб протягом наступної доби з інтервалами між запитами - 5 с, 5 хв, 1 год, 2 год, 24 год.
Callback вважається доставленим, якщо у відповідь на запит прийшов HTTP status code 200.
Приклад підписаного тіла запиту callback у вигляді JWT-токена:
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXltZW50SWQiOiI2MWI5YTVkNS1kNDI5LTQ4ZmEtYjAxYy0yZjhkYzc1ZjIwMjMiLCJpbnZvaWNlSWQiOiIxY2ZkZWE0My0xMGYwLTQwYzgtOWZlOC01NWQzOGY0OGI5YmMiLCJleHRlcm5hbElkIjoiMGY5MWJiOTAtODhlZS00ZjJhLThiNzUtOTNiZGNiNjE0NGVjIiwicGF5bWVudE51bWJlciI6MjQ5NTAzLCJjYXJkRnJvbU1hc2tlZCI6IjQxMTExMTExMTEiLCJjYXJkVG9NYXNrZWQiOm51bGwsImFtb3VudCI6MTAwMDAwLCJzdGF0dXMiOiJGSU5JU0hFRCIsInR5cGUiOiJQQVkiLCJzeXN0ZW1UeXBlIjoiRUNPTSIsInBheW1lbnRTdGF0dXMiOiJGSU5JU0hFRCIsInJlY2VpcHRQYXRoIjoiaHR0cHM6Ly9hcGkuc3RhZ2UudWFwYXkudWEvYXBpL2FjcXVpcmluZy9yZWNlaXB0cy92Mi82MWI5YTVkNS1kNDI5LTQ4ZmEtYjAxYy0yZjhkYzc1ZjIwMjMucGRmIiwiZXh0cmFJbmZvIjoie1wiZG9jSWRcIjpcIjA5OTQ3ODA0MDJcIixcInNwcm90b2NvbFwiOlwi0KLQldCh0KJcIixcIm5wcm90b2NvbFwiOlwiMjQyMzg1MlwiLFwibGljZW5zZVBsYXRlXCI6XCJmaW5lU2VyaWVzXCJ9IiwiY3JlYXRlRGF0ZSI6IjIwMjEtMDQtMTJUMTA6MDM6MTAuMDAwWiIsInBheURhdGUiOiIyMDIxLTA0LTEyVDEwOjAzOjMxLjg3NFoiLCJpYXQiOjE2MTgyMjE4MTF9.qfbEOHLPka3YW6z0J0FygRx4Sw5R5g6jyjFF6bFhU2g" }
Callback зміни статусу платежу інвойсу
Для отримання callback з інформацією про зміни статусу платежу інвойсу потрібно передати URL в поле callbackUrl на створення інвойсу.
Поля тіла callback:
Ключ | Тип | Опис |
---|---|---|
paymentId | uuid | ID платежу |
invoiceId | uuid | ID інвойсу |
externalId | string | зовнішній ID інвойсу |
paymentNumber | integer | номер платежу |
cardFromMasked | string | маскований номер картки списання |
cardToMasked | string | маскований номер картки зарахування |
holderName | string | ім'я та прізвище тримача карти |
amount | integer | сума платежу |
reversalAmount | integer | сума повернення платежу |
status | string | статус платежу |
type | string | тип інвойсу |
systemType | string | тип платіжного сервісу |
paymentStatus | string | детальний статус платежу в платіжному сервісі |
receiptPath | string | посилання на квитанцію |
extraInfo | string | додаткова інформація інвойсу |
createDate | string | дата створення платежу |
payDate | string | дата успішного завершення платежу |
holdDate | string | дата холда платежу |
Приклад:
{ "paymentId": "61b9a5d5-d429-48fa-b01c-2f8dc75f2023", "invoiceId": "1cfdea43-10f0-40c8-9fe8-55d38f48b9bc", "externalId": "0f91bb90-88ee-4f2a-8b75-93bdcb6144ec", "paymentNumber": 249503, "cardFromMasked": "4111111111", "cardToMasked": null, "cardFromHolderName": "CARDHOLDER NAME", "amount": 100000, "reversalAmount": 0, "status": "FINISHED", "type": "PAY", "systemType": "ECOM", "paymentStatus": "FINISHED", "receiptPath": "https://api.stage.uapay.ua/api/acquiring/receipts/v2/61b9a5d5-d429-48fa-b01c-2f8dc75f2023.pdf", "extraInfo": "{\"docId\":\"0994780402\",\"sprotocol\":\"ТЕСТ\",\"nprotocol\":\"2423852\",\"licensePlate\":\"fineSeries\"}", "createDate": "2021-04-12T10:03:10.000Z", "payDate": "2021-04-12T10:03:31.874Z", "iat": 1618221811 }
Callback зміни статусу P2P платежу
Для отримання callback з інформацією про зміни статусу P2P платежу потрібно передати URL в поле callbackUrl на створення P2P платежу.
Поля тіла callback:
Ключ | Тип | Опис |
---|---|---|
paymentSystem | string | тип платіжного сервісу |
paymentId | uuid | ID платежу |
operationId | uuid | ID операції |
operationType | string | тип операції |
operationStatus | string | статус операції |
paymentType | string | тип платежу |
paymentNumber | string | номер платежу |
paymentAmount | integer | сума платежу |
paymentCommission | integer | сума комісії |
paymentStatus | string | статус платежу |
postbackTime | string | час формування запиту |
cardFromMasked | string | маскований номер картки списання |
cardFromId | uuid | ID картки списання |
cardToMasked | string | маскований номер картки зарахування |
cardToId | uuid | ID картки зарахування |
operationExternalId | string | зовнішній ID платежу |
reason | object | об'єкт з деталями помилки |
confirmation | object | об'єкт з деталями підтвердження |
lookupAttempts | integer | кількість спроб на підтвердження платежу з типом LOOKUP |
key | string | ключ, який потрібен для підтвердження платежу |
Приклад:
{ "paymentSystem": "p2p", "paymentId": "e6edab68-da39-4a99-8fcb-e6974f6d3078", "operationId": "47106586-63ef-45ef-8560-038f646fc709", "operationType": "SEND", "operationStatus": "FINISHED", "paymentType": "BUCKET", "paymentNumber": "17639513", "paymentAmount": 1000, "paymentPendingAmount": 1000, "paymentCommission": 200, "paymentStatus": "PAYED", "postbackTime": 1618311873588, "cardFromMasked": "4111111111", "cardFromId": "f68484b7-9f85-4c94-8b91-c364cd5b6d0b", "cardToMasked": null, "cardToId": null, "operationExternalId": "985293a9-4b8b-411d-9e61-d82e8e8bb239", "iat": 1614370565 }