Webhooks
Доставка событий смены статуса операции
Webhook — асинхронное уведомление об изменении статуса операции, отправляемое платформой на URL, заданный мерчантом. Применяется в качестве основного способа получения финального состояния операции.
URL получателя
URL определяется по следующему приоритету:
- Значение
integrationMerhcnatData.webHookв теле запроса на создание операции. Действует только в пределах данной операции. - URL, сохранённый в настройках личного кабинета мерчанта. Применяется при отсутствии или невалидности значения
integrationMerhcnatData.webHook.
При отсутствии URL в обоих источниках доставка событий не выполняется. В этом случае состояние операции определяется опросом эндпойнта GET /operation/operation/platform/{idPlatform}.
Условия доставки
Событие формируется при каждом изменении статуса операции. Для типовой операции Pay In формируются события при следующих переходах:
created→in_progress;in_progress→successилиfailed.
При наличии промежуточных статусов (booking, pending_retry) формируются дополнительные события.
Финальными статусами считаются success и failed. Бизнес‑решения мерчанта о завершении операции должны приниматься исключительно по этим статусам.
Формат события
HTTP‑метод: POST.
Заголовок: Content-Type: application/json.
Тело запроса соответствует структуре ответа GET /operation/operation/platform/{idPlatform} (раздел Операции).
Pay In, финальный статус success
Pay In, финальный статус failed
Pay Out, финальный статус success
Промежуточный статус pending_retry (Pay Out)
Требования к получателю
Получатель события возвращает HTTP‑код из диапазона 2xx. Тело ответа игнорируется. Время ответа — не более 5 секунд.
При получении ответа, отличного от 2xx, при сетевом таймауте или разрыве соединения платформа выполняет повторную доставку с экспоненциальной задержкой. Гарантируется доставка каждого финального события не менее одного раза (at‑least‑once).
Идемпотентность обработки
Получатель обязан реализовать дедупликацию событий. В качестве ключа дедупликации применяется поле id (UUID операции на платформе). Допускается также дедупликация по бизнес‑идентификатору с проверкой текущего состояния заказа в системе мерчанта.
Безопасность
В текущей версии криптографическая подпись тела webhook не предусмотрена. До введения подписи рекомендуется применять следующие компенсирующие меры:
- ограничение источников запросов на уровне сетевой инфраструктуры по диапазону IP‑адресов платформы (запрашивается у менеджера);
- подтверждение состояния операции запросом
GET /operation/operation/platform/{id}с предъявлением JWT‑токена до выполнения бизнес‑логики, инициируемой событием.
Содержание события
Событие не содержит:
- сведений о провайдере, обработавшем операцию;
- текстового описания причины статуса
failed; - технических служебных полей, не влияющих на бизнес‑логику.
Уведомления об изменении служебных полей без смены статуса не формируются.