Асинхронный режим обработки транзакций
Асинхронный режим позволяет экономить ваши ресурсы, потому что вам не нужно держать постоянное соединение c UnonaPay, а запрос статуса вы можете сделать в любое время в фоновом режиме.
Также асинхронный режим работы позволяет избежать ошибок тайм-аута, если платежная система или банк обрабатывают запрос длительное время.
Описание процесса работы с асинхронным режимом
- Отправить запрос на URL асинхронного режима обработки транзакций
- Получить ответ со статусом асинхронной задачи и
status_url
,response_url
- Проверить статус и/или запросить результат выполнения асинхронной задачи
- Обработать Webhooks или запросить статус выполнения транзакции по
tracking_id
.
Параметры запроса
Параметры запроса для асинхронного режима обработки транзакций такие же, как и для синхронных (стандартных) запросов:
- Оплата
- Авторизация
- Токенизация
- Списание средств
- Отмена авторизации
- Возврат средств
- Выплата средств
- Оспоренный платеж
- Проверка
- Запрос статуса
- Запрос баланса
Единственное отличие в URL адресах - они содержат дополнительную секцию async
:
Пример URL для запроса авторизации в синхронном режиме:
https://gateway.unonapay.com/transactions/authorizations
Пример URL для запроса авторизации в асинхронном режиме:
https://gateway.unonapay.com/async/transactions/authorizations
Параметры ответа
Параметр | Тип | Описание |
---|---|---|
status | string | Статус выполнения асинхронной задачи (не путать со статусом транзакции) |
request_id | string | ID для поиска задачи. |
status_url | string | URL для получения статуса выполнения задачи. |
response_url | string | URL для получения результата выполнения задачи. |
Пример ответа
{
"status": "processing",
"request_id": "a2ac9f8e-1b22-486b-be46-528e48be6c76",
"status_url": "https://gateway.unonapay.com/async/status/a2ac9f8e-1b22-486b-be46-528e48be6c76",
"response_url": "https://gateway.unonapay.com/async/result/a2ac9f8e-1b22-486b-be46-528e48be6c76"
}
Проверка статуса выполнения асинхронной задачи
Для проверки статуса выполнения асинхронной задачи необходимо выполнить GET
запрос на status_url
, который был получен в ответе на отправку асинхронного запроса.
Info
В зависимости вашей реализации интеграции, данный шаг можно пропустить и запрашивать сразу результат выполнения асинхронной задачи через запрос на response_url
.
Пример ответа для асинхронной задачи, которая в процессе выполнения
{
"status": "processing",
"request_id": "a2ac9f8e-1b22-486b-be46-528e48be6c76"
}
Пример ответа для асинхронной задачи, которая выполнена
{
"status": "completed",
"request_id": "a2ac9f8e-1b22-486b-be46-528e48be6c76",
"response_url": "https://gateway.unonapay.com/async/result/a2ac9f8e-1b22-486b-be46-528e48be6c76"
}
Пример ответа в случае, если request_id
не найден в системе
{
"status": "unknown",
"request_id": "a2ac9f8e-1b22-486b-be46-528e48be6c76"
}
Пример ответа в случае ошибки в процессе выполнения асинхронной задачи
{
"message": "We're sorry, but something went wrong"
}
Получение результата выполнения асинхронной задачи
Для получения результата выполнения асинхронной задачи выполнить GET
запрос на response_url
, который был получен в ответе на отправку асинхронного запроса.
Успешное выполнение асинхронной задачи
Асинхронная задача считается успешно выполненной, если в ответ на запрос на response_url
возвращается стандартный ответ обрабатываемой транзакции.
Если статус транзакции incomplete
, то далее для проверки статуса и получения результата выполнения транзакции использовать запрос статуса по tracking_id
или Webhooks.
Пример ответа для асинхронной задачи, если request_id
не найден в системе
{
"status": "unknown",
"request_id": "a2ac9f8e-1b22-486b-be46-528e48be6c76"
}
Пример ответа для асинхронной задачи, которая в процессе выполнения
{
"status": "processing",
"request_id": "a2ac9f8e-1b22-486b-be46-528e48be6c76"
}
Доступность результата выполнения асинхронной задачи
Если результат выполнения асинхронной задачи, запрашиваемый по status_url
или response_url
, имеет статус код ответа 200, то он будет храниться в системе в течение 24 часов с момента создания асинхронной задачи. Через 24 часа результат выполнения асинхронной задачи станет недоступен и на повторные запросы будет возвращаться статус код 404 и ответ:
{
"status":"unknown",
"request_id":"10203"
}
Если ответ асинхронной задачи имеет статус код отличный от 200, то ответ с описанием ошибки будет возвращен один раз и далее на повторные запросы будет возвращаться статус код 404 и ответ:
{
"status":"unknown",
"request_id":"52168"
}