# Вебхуки доставки в рабочей среде

> Проверяйте подпись, быстро подтверждайте приём, обрабатывайте асинхронно, удаляйте дубликаты, учитывайте порядок событий и следите за ошибками.

Обновлено 2026-07-09. Уровень: Продвинутый. Автор: SMSMeteor.

## Главное

- Проверяйте подпись необработанного тела до разбора.
- Подтверждайте приём за секунды, обрабатывайте событие из очереди.
- Удаляйте дубликаты по идентификатору события.
- Учитывайте created_at и приоритет статуса.

## Сначала проверьте подпись

Вычислите HMAC от строки, состоящей из временной метки, точки и необработанного тела запроса, используя секрет конечной точки. Сравните результат со значением заголовка `X-Meteor-Signature` алгоритмом с постоянным временем выполнения и отклоняйте временные метки старше пяти минут. Проверяйте подпись до разбора JSON: после повторной сериализации тело изменится, и подпись не совпадёт.

## Как можно быстрее подтвердите приём

У вас есть 5 секунд, чтобы ответить любым кодом 2xx. Не выполняйте основную работу внутри запроса: сохраните событие в очереди или таблице и верните 200. Обработчик, который синхронно обновляет три системы, превысит время ожидания, как только одна из них замедлится, а повторные попытки лишь увеличат нагрузку.

## Удаляйте дубликаты

Повторные попытки нормальны: их может быть 6 попыток в течение 24 часов, и каждая содержит одно и то же событие. Храните обработанные идентификаторы с уникальным индексом и отвечайте на дубликат как на успешный запрос. Для идемпотентной обработки достаточно одной таблицы.

## Порядок по времени

Порядок доставки не гарантируется, а повторное событие может прийти через несколько дней. Сохраняйте последний статус с учётом `created_at` и приоритета: окончательный статус нельзя перезаписывать более ранним Отправлено. Если учитывать только последнее полученное событие, повторное Отправлено может затереть Доставлено.

## Контроль и повторная отправка

Настройте оповещения о росте доли ответов 5xx от вашей системы и времени обработки свыше двух секунд. Панель показывает долю успешных запросов для каждой конечной точки и хранит недоставленные события 30 дней. После сбоя исправьте конечную точку и повторно отправьте события пакетом. Секрет можно сменить в панели; старый и новый секреты действуют одновременно 24 часа, поэтому простой не требуется.

---
Источник: https://smsmeteor.com/ru/guides/webhooks-in-production (HTML). Создано SMSMeteor на основе тех же данных, что и страница. Сводка всего сайта: https://smsmeteor.com/ru/llms.txt
