Webhook
Коротко
HTTP-запрос, который сервис сам отправляет на заданный адрес другой системы, как только у него что-то произошло: пришла оплата, сменился статус, появилось сообщение.
Что такое «Webhook»
Обычный способ узнать об изменениях — регулярно спрашивать сервис: «есть новые заказы?». Это опрос, и большая часть таких запросов уходит впустую. Вебхук переворачивает схему: вы один раз указываете сервису адрес своего обработчика, а он сам сообщает о событии в момент, когда оно случилось. Обычно это POST-запрос с телом в JSON.
Так работают уведомления платёжных систем об оплате, Telegram-боты (метод setWebhook задаёт адрес, куда Telegram отправляет новые сообщения), исходящие вебхуки Битрикс24 и GitHub, службы доставки со сменой статуса посылки.
Как принять вебхук на PHP
Принимающая сторона — обычный URL на сайте. Главное — убедиться, что запрос пришёл от настоящего сервиса. Многие сервисы подписывают тело секретным ключом; имя заголовка и алгоритм указаны в их документации:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $payload, WEBHOOK_SECRET);
if (!hash_equals($expected, $signature)) {
http_response_code(403);
exit;
}
$event = json_decode($payload, true);
save_to_queue($event); // тяжёлую работу — потом
http_response_code(200);
Если подписи нет, проверяют IP-адреса отправителя по списку из документации или запрашивают статус объекта обратно через API сервиса.
Надёжность: повторы и идемпотентность
- Отвечать быстро. Сервис ждёт ответа несколько секунд; долгую обработку выносят в очередь или фоновую задачу.
- Готовиться к повторам. Если ответ не пришёл, сервис пришлёт то же событие ещё раз. Обработчик хранит идентификаторы уже обработанных событий и не проводит оплату дважды.
- Не доверять порядку. События могут прийти не по очереди, поэтому статус лучше сверять с данными, а не с последним полученным уведомлением.
- Логировать входящие запросы — без этого разбирать спорные случаи почти невозможно.
Вебхуки — основа большинства интеграций сайта с CRM, оплатой и мессенджерами; их проектированием занимается разработка API и интеграций.

