Вебхук немного похож на API наоборот. Вместо отправки запросов к службе вы настраиваете конечную точку для прослушивания запросов. В этой статье мы будем использовать JavaScript, Node.js и Express, но эти концепции широко применимы к любому языку программирования.

Зачем использовать вебхуки?

Чтобы использовать реальный пример (и беззастенчиво подключите наш сервис), скажем, вы используете сторонний сервис, такой как Nextform, для сбора налоговых форм от ваших пользователей. Вы хотите знать, когда пользователь заполнил свою налоговую форму, но все это происходит на серверах, которые вы не контролируете. Как вы узнаете, что они закончили с формой?

Одним из решений было бы настроить задание cron и делать повторные запросы к API, однако это решение немного неуклюже. Если вы делаете слишком много запросов, вы теряете пропускную способность и вычислительную мощность. Если вы сделаете слишком мало запросов, в процессе регистрации возникнут задержки. Было бы неплохо, если бы ваше веб-приложение каждый раз получало данные сразу после заполнения формы?

Введите: вебхуки. Вместо того, чтобы делать запросы к API, вы настраиваете конечную точку, которая прослушивает события.

Как создать конечную точку веб-перехватчика?

Прочтите документацию веб-перехватчика службы и убедитесь, что вы понимаете, как запросы будут отправляться на вашу конечную точку. Будет ли метод HTTP GET, POST или что-то еще? Требуется ли HTTPS? Как будут форматироваться данные? Вам нужно отправить код состояния обратно на вебхук? Документация должна содержать ответы на все эти вопросы.

Вот пример конечной точки, настроенной для получения запросов POST от службы сбора налоговых форм Tax ID Pro:

Что, если я пропущу вебхук?

Большинство служб веб-перехватчиков ожидают от вашей конечной точки HTTP-ответ «200 OK». Если возвращается ответ 4XX или 5XX или время ожидания запроса истекло, большинство служб будут повторять запрос в течение установленного периода времени, пока, наконец, не будет возвращен ответ 200.

Как обеспечить безопасность конечной точки?

Вы должны держать свои URL-адреса веб-перехватчиков в секрете, однако ничто не заменит фактическую проверку того, что запросы исходят из надежного источника.

Одним из распространенных методов проверки запросов является использование кода проверки подлинности хэшированного сообщения (HMAC). HMAC создается с использованием секрета подписи, который известен только вам и вашему поставщику. Вы используете свой секрет подписи, чтобы пересчитать HMAC и убедиться, что он совпадает.

Основываясь на предыдущем примере, эта конечная точка теперь использует криптобиблиотеку Node.js для пересчета HMAC, отправленного Nextform.

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

Если вы хотите узнать больше о том, как полностью автоматизировать процесс сбора налоговых форм, проверить идентификационные номера налогоплательщика или найти номера НДС, ознакомьтесь с нашим API форм на Nextform.