Что такое webhook

Как сервер получает события и почему получение уведомления требует проверки.

Обновлено:

Webhook — это уведомление, которое один сервис отправляет на адрес другого приложения при наступлении события. Например, Cryptanio может сообщить серверу магазина об изменении состояния криптоплатежа. Приложению не нужно постоянно запрашивать один и тот же статус, чтобы узнать об этом изменении.

Для такой интеграции нужен доступный серверный HTTPS-адрес получателя. Он отличается от готовых уведомлений в Telegram или Discord: ваш сервер получает данные и выполняет собственную логику. Секрет проверки хранится на сервере и не публикуется в коде браузера, переписке или журналах.

Перед обработкой проверяйте подпись по исходным байтам запроса и допустимость времени сообщения. Затем определите событие, найдите связанный инвойс и проверьте его состояние. Корректная подпись подтверждает происхождение сообщения, но не отменяет бизнес-проверки суммы, актива и заказа.

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

В Cryptanio используйте закреплённый публичный контракт API v1. Не выдавайте товар по одному факту получения HTTP-запроса: найденная транзакция, подтверждённый перевод и полностью оплаченный заказ — разные условия. Порядок обработки должен предусматривать откат транзакции и исключения оплаты.