Интернет-магазину нужно знать, когда оплата прошла. CRM нужно знать, когда с сайта пришла новая заявка. Узнавать о событиях в другой системе можно двумя базовыми способами: регулярно спрашивать или получать сообщение.
Опрос: регулярно спрашивать
При опросе ваша система каждые несколько минут спрашивает другую: «Есть что-то новое?». Это просто сделать, и это работает почти с любым сервисом, у которого есть API. Минусы - задержка (о событии вы узнаёте только при следующей проверке) и лишняя нагрузка: большинство запросов возвращают пустоту, но всё равно расходуют лимиты и ресурсы.
Вебхуки: получать сообщение
С вебхуком другая система сама отправляет сообщение на ваш адрес, как только что-то произошло. Информация приходит почти мгновенно, и пустых запросов нет. Цена - ответственность: ваш адрес должен быть доступен, проверять, что сообщение действительно пришло от партнёра, и правильно обрабатывать его, даже если одно и то же сообщение придёт дважды.
Как сделать вебхуки надёжными
Проверяйте подпись или секрет, которые провайдер добавляет к каждому сообщению, - так никто не сможет прислать вам поддельные события. Отвечайте быстро, а тяжёлую обработку выполняйте в фоне, иначе провайдер решит, что доставка не удалась, и повторит её. Сохраняйте идентификатор каждого обработанного события и игнорируйте дубли. Ведите журнал входящих сообщений, чтобы можно было разобраться в проблемах.
Практичная комбинация
На практике самые устойчивые интеграции сочетают оба подхода. Вебхуки доставляют события в реальном времени, а периодическая проверка - например, раз в час или раз в сутки - сверяет состояние на обеих сторонах и подхватывает всё, что было пропущено, пока обновлялся ваш сервер или у провайдера был сбой.
Коротко
Опрос прост, но медленнее и расточительнее; вебхуки быстрые, но требуют аккуратности. Используйте вебхуки ради скорости, защищайте их подписями и проверкой дублей и добавьте периодическую сверку, чтобы ни одно событие не потерялось.