Верификация и идемпотентность подписи Webhook
Верификация и идемпотентность подписи Webhook
Проверьте 6MM Agent webhooks с помощью исходного тела запроса и обрабатывайте повторные процессы, тайм-ауты и повторяющиеся события без дублирования бизнес-действий.
Вебхуки уведомляют партнёрский бэкенд о асинхронных изменениях бизнес-состояния. Поскольку доставка может быть повторно проверена, каждый получатель должен проверять подпись перед анализом доверенных данных и обрабатывать событие идемпотенциально.
Заголовки Webhook
При восстановлении знакового значения используйте точное исходное тело запроса, полученное HTTP . Сначала парсинг и повторная сериализация JSON могут изменить пробелы или ордер поля и получить другую подпись.
Поток верификации
- Прочитайте временную метку, nonce и заголовки подписи.
- Захватить немодифицированное исходное тело запроса.
- Постройте
timestamp + nonce + rawBody. - Вычислите HMAC-SHA256 с партнёром API секрет.
- Сравните рассчитанные и полученные подписи с помощью сравнения с постоянным временем.
- Примените утверждённые проверки на актуальность и неповторное использование.
- Проанализировать и обработать событие только после успешной проверки.
Когда доступен официальный Agent SDK -верификатор, используйте его вместо самостоятельного кода подписи.
Орденная идемпотентность
Рекомендуемая запись идемпотентности
Сохраняйте достаточно информации, чтобы распознать повторную доставку и безопасно восстановить:
Фиксируйте запись бизнес-изменения и идемпотентности в одной и той же транзакции, где это возможно. Повторяющееся событие должно возвращать уже известный результат вместо повторного применения баланса, ордера или пользовательского изменения.
Правило тайм-аута и повторных попыток
Тайм-аут HTTP не доказывает, что первоначальный запрос не был выполнен. Запросите операцию с помощью исходного agentOrderNoили дождитесь его вебхука, прежде чем решать, требуется ли другое действие. Создание нового номера бизнес-заказа после каждого тайм-аута может привести к дублирующимся перемещениям средств.
Чек-лист производства
- Проверять подпись перед JSON парсингом или бизнес-обработкой.
- Сохранять исходное тело независимо от парсированной полезной нагрузки.
- Отклонять устаревшие или повторные запросы в соответствии с утверждённой политикой интеграции.
- Сделать обработку событий безопасной для повторной и вне ордера доставки.
- Идентификаторы событий журнала, номера заказов партнёров, результаты обработки и время запроса.
- Скрыть секреты и значения подписей из логов и поддерживающих вложений.