Webhook

Hadisə baş verdikdə məlumatların bir sistemdən digərinə avtomatik göndərilməsi mexanizmi. Məsələn, yeni sifariş daxil olduqda webhook Telegram-a bildiriş göndərə bilər. API-dən fərqli olaraq webhook-lar pull deyil, push rejimində işləyir.

В чём разница с обычным запросом

При обычном обращении к API ваша система спрашивает: «появились новые заказы?» — и так каждые несколько секунд. Webhook переворачивает схему: как только событие произошло, отправитель сам стучится по заданному адресу и приносит данные. Для доставки это и есть разница между «статус обновляется примерно» и «статус обновляется сразу». Опрос по расписанию всегда опаздывает ровно на интервал опроса.

Где это важно в доставке

Четыре события, которые должны приходить мгновенно. Оплата прошла — иначе заказ висит неоплаченным, пока кто-то не проверит. Позиция попала в стоп-лист — иначе её продолжают продавать. Курьер забрал заказ — от этого зависит, что видит гость. Внешняя служба доставки приняла или отклонила вызов — иначе заказ стоит. На всех четырёх опрос по таймеру даёт задержку, которую гость замечает.

Как это устроено в Delever

События в Delever передаются между контурами по мере возникновения: оплата из платёжного шлюза, статус из кассы, смена статуса курьером в приложении, ответ внешней службы доставки. Глубина и мгновенность обмена зависят от того, что отдаёт конкретная система: часть касс и шлюзов из пятидесяти с лишним интеграций присылают события сами, часть приходится опрашивать — тогда задержка определяется их стороной, и мы не выдаём её за мгновенную.

Частые ошибки

Первая — не обрабатывать повторы. Отправитель при сбое присылает событие заново, и без защиты один заказ попадает в кассу дважды. Вторая — не проверять подпись запроса: адрес webhook открыт в интернет, и без проверки туда можно прислать что угодно. Третья — отвечать на webhook долго: отправитель считает это сбоем и начинает повторять.