Найти в Дзене
HowToSchool

SD-EP47: Что такое Webhook?

Проведем сравнение между обычным опросом (Polling) и webhook.

Как пример возьмем сайт электронной коммерции (Ozon). Клиенты отправляют заказы в сервис заказов через API-шлюз, который в последствии обращается к платежному сервису. Затем платежный сервис обращается к внешнему поставщику платежных услуг (PSP) для завершения транзакций.

Существует два способа связи с внешним PSP.

Короткий опрос

После отправки платежного запроса на PSP платежный сервис продолжает запрашивать у PSP статус платежа. После нескольких раундов PSP наконец возвращает конечный статус.

У короткого опроса есть два недостатка:

1. Постоянный опрос статуса требует ресурсов платежного сервиса.

2. Внешний сервис взаимодействует напрямую с платежным сервисом, создавая уязвимости в системе безопасности.

Webhook

Мы можем зарегистрировать webhook во внешнем сервисе. Это означает: сообщите мне по определенному URL-адресу, когда у вас появятся обновления по запросу. Когда PSP завершит обработку, он вызовет HTTP-запрос с указанным URL адресом для обновления статуса платежа.

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

Webhook часто называют обратными API или push-API, поскольку сервер отправляет HTTP-запросы клиенту. При использовании webhook нам нужно обратить внимание на 3 вещи:

- разработать правильный API для вызова внешней службы;

- настроить правильные правила в шлюзе API из соображений безопасности;

- зарегистрировать правильный URL-адрес на внешней службе.

P.S. Что делать, если PSP никогда не вызовет webhook?