Уведомление о статусе операции в выписке
Доступно только для набора «Компаниям»
Вебхук позволяет получать финальные статусы операций в выписке. Данное событие предназначено для информирования об итоговом результате обработки документа.
Событие возникает, когда операция проведена, изменена (удалена, отредактирована) на стороне банка, система отправляет уведомление на ваш endpoint.
Полезные ссылки:
Определение актуальной версии события
У каждого события есть version (монотонно растущий номер). Есть специальная версия 9223372036854775807 = Long.MAX_VALUE. Она используется как маркер «удалено».
- Если операция не была удалена, т.е. версия события не была равна
"version": 9223372036854775807, то нужно всегда брать последнюю версию события, как актуальную. - Если операция была удалена, то версия события равна
"version": 9223372036854775807. - Если операция была восстановлена после удаления, то версия события ниже, чем
"version": 9223372036854775807— считать актуальной версию события ту, которая пришла последней.
Дедупликация
При получении событий через вебхук необходимо учитывать возможность дублирования по одной операции по одному operationId. Рекомендуется следующий алгоритм обработки:
1. Проверка наличия ранее полученных сообщений
Если для данного operationId ранее не было получено ни одного события — обработать сообщение как новое.
2. Если получено два и более сообщений с одинаковым operationId
Необходимо проанализировать значение version:
| Случай | Действие |
|---|---|
version совпадает с ранее полученным | Сообщение считается дублирующим. Игнорировать. |
version отличается от ранее полученного | Определить актуальное сообщение по version. Актуальным считается то, у которого version больше. |
Пример обработки
| № | operationId | version | Решение |
|---|---|---|---|
| 1 | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 3 | Принять |
| 2 | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 3 | Игнорировать (дубль) |
| 3 | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 4 | Принять (более поздний version, статус изменен) |
В отдельных случаях возможны ситуации, когда сообщение не было доставлено (например, при временных сетевых проблемах). Рекомендация по обработке таких ситуаций:
- Для обеспечения полноты данных по всем переданным в обработку рекомендуется реализовать регулярную сверку — запросить итоговую выписку за предыдущий день.
Рекомендуется хранить в вашей системе историю полученных (operationId, version) для корректной дедупликация и актуального состояния операции в выписке.
Рекомендуется настроить периодический (например, ежедневный) фоновый процесс сверки операций в выписке.
Ответ на вебхук
Для подтверждения получения события необходимо вернуть 2xx без тела. Если возвращен один из статусов: 408, 409, 429, 500, 502, 503, 504, 507, 508 или 509, Банк сочтет доставку неуспешной и предпримет повторную попытку.
Обработка недоставленных событий
Если сообщение не было доставлено (например, при временных сетевых проблемах), рекомендуется запросить итоговую выписку за предыдущий день.
Запрос
Ответы
Успешное получение и обработка вебхука.
Для подтверждения получения события необходимо вернуть HTTP статус 2xx. Тело ответа может быть пустым.
Таймаут запроса. Банк предпримет повторную попытку доставки.
Конфликт при обработке. Банк предпримет повторную попытку доставки.
Слишком много запросов. Банк предпримет повторную попытку доставки.
Внутренняя ошибка сервера получателя. Банк предпримет повторную попытку доставки.
Ошибка шлюза. Банк предпримет повторную попытку доставки.
Сервис недоступен. Банк предпримет повторную попытку доставки.
Таймаут шлюза. Банк предпримет повторную попытку доставки.
Недостаточно места на диске. Банк предпримет повторную попытку доставки.
Обнаружено зацикливание. Банк предпримет повторную попытку доставки.
Превышен лимит трафика. Банк предпримет повторную попытку доставки.