Webhook — HTTP-уведомление, которое одна система отправляет другой при событии, не дожидаясь периодического опроса. Получатель открывает endpoint, поэтому должен проверять источник, целостность, свежесть и повторную доставку сообщения.
Для webhook создают отдельный URL, проверяют HMAC или подпись по исходному телу, ограничивают размер и время, используют idempotency key и очередь. Секреты ротируют, ответы возвращают быстро, а обработку выполняют асинхронно.
Платёжный провайдер сообщает об оплате. Сервис проверяет подпись и timestamp до JSON-парсинга, отклоняет повтор по event_id, помещает событие в очередь и отвечает 2xx, не меняя статус заказа дважды.
Это дополнительный сигнал, но не замена криптографической подписи и проверки TLS.
Почему подпись проверяют по raw body?Повторная сериализация может изменить байты и сломать проверку либо создать расхождение между проверенным и обработанным содержимым.
Что отвечать webhook-отправителю?Быстрый успешный код после безопасного принятия в очередь; долгая бизнес-операция не должна удерживать соединение.