Реализация Webhook-системы для интеграций сайта

Webhook-система для сайта: приём, отправка и мониторинг событий

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Реализация Webhook-системы для интеграций сайта
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Webhook-система для сайта: приём, отправка и мониторинг событий

Отметим: когда платёжный шлюз отправляет уведомление о транзакции, таймаут соединения редко превышает 10 секунд. Если сервер не успевает вернуть 200 OK, провайдер повторяет запрос, а данные могут задвоиться или потеряться. За пять лет мы реализовали более 20 webhook-интеграций с разными сервисами: Stripe, GitHub, CRM-системы. Каждая деталь — от HMAC-верификации до dead letter queue — отработана на десятках проектов. Мы знаем, как избежать синхронной обработки, игнорирования дубликатов и слабой верификации.

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

Почему webhooks лучше polling?

Критерий Webhook Polling (опрос)
Задержка Мгновенно До интервала опроса (1–60 с)
Нагрузка на сервер Минимальная (только при событиях) Постоянная (каждый запрос)
Риск пропуска событий Низкий (retry, очередь) Возможен при большом интервале
Сложность реализации Средняя (верификация, идемпотентность) Проще, но дороже в эксплуатации

Webhook — очевидный выбор для real-time-уведомлений. Он требует правильной обработки: верификации, дедупликации и повторных попыток. Экономия времени и ресурсов при использовании webhook'ов оправдывает затраты на реализацию.

Как мы реализуем безопасный приём webhook’ов?

Строим архитектуру на Laravel с очередями Redis. Ключевой момент — верификация подписи до любой бизнес-логики. Каждый провайдер использует свой алгоритм:

Stripe / HMAC-SHA256:

$secret = config('services.stripe.webhook_secret'); $sigHeader = $request->header('Stripe-Signature'); $payload = $request->getContent(); list($t, $v1) = parseStripeSignature($sigHeader); $signed = hash_hmac('sha256', "{$t}.{$payload}", $secret); if (!hash_equals($signed, $v1)) { throw new InvalidSignatureException(); } 

Всегда используем hash_equals — защита от тайминг-атак. После верификации задача отправляется в очередь, чтобы не блокировать ответ (таймаут провайдера — 3–10 с).

Дедупликация: Назначаем уникальность задачи на час через uniqueFor. В БД проверяем external_id, пропускаем повторы. Это исключает двойное списание платежа или дублирование заказа.

Что делает систему отказоустойчивой?

Отправка исходящих событий управляется подписками: каждый запрос подписывается HMAC, а при ошибках срабатывает экспоненциальный backoff. После 10 неудач подписка автоматически деактивируется — вы получаете уведомление в Telegram. Dead letter queue собирает необработанные задачи, инженеры алертятся.

Попытка Задержка
1 10 с
2 30 с
3 2 мин
4 10 мин
5+ 30 мин (максимум 10)

Экспоненциальный backoff с джиттером снижает нагрузку на внешний сервис и увеличивает шанс успешной доставки.

Что входит в разработку webhook-системы «под ключ»

  • Приём входящих webhook’ов: регистрация маршрутов, верификация подписи, логирование, постановка в очередь.
  • Отправка исходящих событий: управление подписками, подпись, retry-логика, деактивация.
  • Дашборд мониторинга: просмотр входящих/исходящих запросов, статусы, payload, ошибки. Интеграция с Laravel Telescope по желанию.
  • Dead letter queue: необработанные задачи попадают в отдельную очередь с алертом.
  • Документация и обучение: описание API, инструкция для вашей команды.
  • Гарантия: поддержка в течение месяца после запуска.
Пример типичных метрик (на основе 20+ проектов) - 99,9% событий доставляются с первой попытки после внедрения очередей. - Среднее время обработки одного события — 200 мс (без учёта внешних вызовов). - Доля дубликатов после дедупликации — менее 0,01%.

Процесс работы и сроки

  1. Аналитика — обсуждаем провайдеров, события, требования к безопасности.
  2. Проектирование — выбираем очередь, схему подписей, структуру таблиц.
  3. Реализация — пишем код, покрываем тестами основные сценарии.
  4. Тестирование — прогоняем интеграционные тесты, симулируем события.
  5. Деплой и мониторинг — разворачиваем на вашем сервере, подключаем алерты.

Базовая система (один провайдер, верификация, очередь) — от 1 рабочего дня. Полноценная платформа с подписками, дашбордом и retry — 3–5 дней. Стоимость зависит от количества интеграций и сложности — свяжитесь, мы подготовим предложение.

Типичные ошибки при реализации webhook’ов

  • Синхронная обработка — ответ клиенту дольше 10 с, провайдер считает событие не доставленным.
  • Игнорирование дубликатов — повторные запросы приводят к двойным операциям.
  • Слабая верификация — любой может вызвать ваш эндпоинт и подделать данные.
  • Отсутствие мониторинга — ошибки остаются незамеченными, подписки «виснут».

Stripe использует HMAC-SHA256 для подписи — такой же подход применяем мы. Laravel queues предоставляют встроенные очереди с поддержкой уникальности. Эти технологии проверены тысячами проектов.

Мы учитываем риски на этапе проектирования — это гарантирует стабильную работу интеграций. Закажите разработку webhook-системы: обсудим детали вашего проекта и подготовим предложение.