Как защититься от повторной обработки одного вебхука

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

Как защититься от повторной обработки одного вебхука — тематическая фотография

Внешние сервисы иногда отправляют один и тот же вебхук дважды — например, если ваш сервер ответил медленно и не подтвердил получение вовремя. Без защиты это создаёт дубли заказов, писем или записей в CRM.

Идемпотентный ключ — основной инструмент

Большинство сервисов передают в вебхуке уникальный идентификатор события. Перед обработкой проверяйте, не встречался ли этот ID раньше — если встречался, просто подтвердите получение (200 OK) и ничего не делайте повторно.

Где хранить список обработанных ID

Для небольшого объёма подойдёт таблица в базе данных с уникальным индексом на ID события — попытка вставить дубль вызовет ошибку, которую легко обработать как «уже было». Для высокой нагрузки быстрее подходит Redis с истечением срока хранения через несколько дней.

Отвечайте быстро, обрабатывайте отдельно

Сначала быстро подтвердите получение вебхука (200 OK), а тяжёлую обработку вынесите в очередь — если сервис не получает быстрый ответ, он с большей вероятностью решит, что запрос не дошёл, и отправит повтор.

Проверяйте подпись, если сервис её предоставляет

Многие сервисы подписывают вебхуки секретным ключом — проверка подписи защищает не только от дублей, но и от поддельных запросов, которые кто-то мог отправить на ваш адрес напрямую.

FAQ

Частые вопросы по теме

01Можно применить рекомендации из статьи к существующему проекту?

Да. Если сайт, реклама или интеграция уже работают, сначала проверяем текущую реализацию и предлагаем изменения без обязательной полной переделки.

02Сколько стоит связанная работа?

Стартовая стоимость услуги «Вебхуки и событийные интеграции» — От 15 000 ₽. Точная оценка зависит от текущего проекта и объёма изменений.

03Что прислать для оценки?

Ссылку на сайт или сервис, короткое описание проблемы и пример ожидаемого результата. Доступы и подробное ТЗ для первого ответа обычно не нужны.

Дальше

Ещё материалы по теме

Техническое задание на API-интеграцию: практический шаблон — фотография к материалу
CRM и интеграции2 мин

Техническое задание на API-интеграцию: практический шаблон

Хорошее ТЗ описывает события, данные, ответственность систем и поведение при сбоях, а не только список методов. В статье — практические точки проверки, ошибки и состав результата.

Читать статью →

Вопрос по проекту

Покажите текущую ситуацию

Ссылка и короткое описание обычно полезнее длинного ТЗ. Мы увидим тему статьи в источнике заявки и не заставим повторять контекст.

Связаться

Старт

Можно прийти
просто с задачей.

Без готового ТЗ. Достаточно описать, что нужно запустить, исправить или связать.

Получить оценку

Коротко опишите задачу