БесплатноБесплатный аудит сайта и кода на 1С-Битрикс при заказе доработки или поддержки

Webhook'и и API: как связать магазин со сторонними сервисами

Webhook'и и API на 1С-Битрикс: связь магазина со сторонними сервисами через REST и события D7

Современный магазин не остров. Заказ должен уйти в CRM, оплата — в бухгалтерию, статус доставки — прийти от службы, остаток — обновиться со склада, лид — попасть в систему маркетинга. Всё это живёт в разных сервисах, и связывают их две технологии: API и вебхуки. Когда они настроены плохо, данные теряются молча, а об этом узнают от разгневанного клиента, а не из системы.

В этой статье разберём, как связать магазин на 1С-Битрикс со сторонними сервисами через API и вебхуки: чем они отличаются, как использовать REST и события D7, как строить входящие и исходящие интеграции надёжно и безопасно, с повторами, идемпотентностью и мониторингом. Материал опирается на нашу практику поддержки API-обменов и webhook-интеграций.

Коротко

  • API — вы обращаетесь к чужому сервису; вебхук — чужой сервис уведомляет вас о событии.
  • В Битриксе исходящие вебхуки строят на событиях D7, не выполняя долгих запросов прямо в обработчике.
  • Надёжность держится на повторах, идемпотентности и очереди — сеть и чужие сервисы ненадёжны.
  • Входящие вебхуки аутентифицируют и валидируют; без этого интеграция становится дырой в безопасности.

Зачем магазину связь со сторонними сервисами

По мере роста магазина вокруг него появляется экосистема сервисов, и каждый решает свою задачу. Ручной перенос данных между ними быстро становится узким местом: менеджеры копируют заказы в CRM, сверяют оплаты, вбивают трек-номера. Интеграции убирают эту рутину и ошибки.

Типичные направления связи:

Общий смысл — данные текут между системами сами, в реальном времени или по расписанию, без ручного переноса. Именно это делает магазин управляемым при росте объёма заказов.

API и вебхуки: в чём разница

Эти два понятия часто путают, хотя разница принципиальна и определяет архитектуру интеграции.

КритерийВызов API (pull)Вебхук (push)
Кто инициируетВы обращаетесь к сервисуСервис обращается к вам
КогдаКогда вам нужны данныеКогда произошло событие
АналогияВы спрашиваетеВам сообщают
ПримерЗапросить список ПВЗ у службыЭквайринг сообщил об оплате

На практике направления сочетаются. Оплату вы узнаёте вебхуком от эквайринга (push), а детали заказа при необходимости запрашиваете через его API (pull). Понимание, кто инициатор в каждом обмене, — основа проектирования интеграции.

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

REST и события D7 в Битрикс

В 1С-Битрикс есть два ключевых механизма для интеграций, и важно не путать их роли.

Связка обычно такая: событие D7 ловит изменение внутри сайта и запускает отправку вебхука наружу, а REST API принимает входящие обращения внешних систем. Про то, как устроена система событий и работа с данными на D7, мы подробно пишем в статье про D7 ORM в Битрикс.

Исходящие вебхуки на события

Исходящий вебхук — это когда ваш сайт сам уведомляет внешний сервис о событии. Строят его на событиях D7, но с важной оговоркой: нельзя выполнять долгий HTTP-запрос прямо в обработчике события, иначе пользователь будет ждать ответа стороннего сервиса при оформлении заказа.

Правильная схема отправки:

  1. Подпишитесь на событие. Обработчик на нужное событие (например, оплата заказа) фиксирует факт.
  2. Поставьте задачу в очередь. Событие складывается в очередь на отправку, а пользователь не ждёт.
  3. Отправьте асинхронно. Агент или фоновый обработчик берёт задачу и шлёт вебхук во внешний сервис.
  4. Обработайте результат. Успех — отметить, ошибка — запланировать повтор.
Не блокируйте пользователя: отправка вебхука в обработчике события синхронно — частая и болезненная ошибка. Если внешний сервис тормозит, тормозит и оформление заказа. Выносите отправку в фон.

Входящие вебхуки и API

Входящее направление — когда внешние сервисы обращаются к вашему сайту: эквайринг сообщает об оплате, служба доставки — о смене статуса, CRM — об изменении заказа. Здесь главное правило: не доверять входящим данным.

Открытый вход без проверки подписи — прямая уязвимость: через него можно подделать оплату или заказ. Тему безопасности входящих обращений мы подробно разбираем в статье про REST, вебхуки и безопасность в Битрикс.

Надёжность: повторы и идемпотентность

Главная иллюзия начинающих интеграций — что сеть и чужие сервисы всегда доступны. На деле запросы теряются, случаются таймауты, сервисы падают. Интеграция обязана переживать это без потери данных.

Без идемпотентности повтор доставки «заказ оплачен» может создать вторую отгрузку или списать бонусы дважды. Поэтому её закладывают с самого начала, а не прикручивают после первого инцидента с дублями.

Безопасность интеграций

Интеграции — это дополнительные двери в систему, и каждую нужно запирать. Безопасность здесь не опция, а условие.

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

Онлайн или пакетный обмен

Не всё нужно синхронизировать в реальном времени — выбор между онлайн и пакетным обменом определяется задачей.

ПодходКогда уместенПример
Онлайн (вебхуки)Важна оперативностьСтатусы оплат, срочные остатки
Пакетный (по расписанию)Большие объёмы, секунды не критичныНочная выгрузка каталога, сверка
ГибридБаза пакетом, срочное — онлайнCommerceML с 1С + вебхуки на события

Частая рабочая схема — гибрид: базовый обмен каталогом и заказами идёт пакетно (например, CommerceML с 1С), а срочные события вроде оплаты доставляются вебхуками. Так система остаётся и надёжной на объёме, и оперативной там, где это важно.

Мониторинг и отладка

Интеграции ломаются тихо — в отличие от упавшего сайта, сбой обмена не виден пользователю сразу. Поэтому мониторинг для них обязателен.

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

Типичные сценарии интеграций

Чтобы теория стала практикой, вот частые связки, которые встречаются почти в каждом магазине:

Каждый сценарий — это комбинация направлений (API и вебхуки), надёжности (повторы, идемпотентность) и безопасности. Собранные по единым принципам, они образуют устойчивую экосистему вокруг магазина.

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

Чек-лист интеграции

  1. Направления определены. Ясно, где API (pull), где вебхуки (push) и кто инициатор.
  2. События настроены. Обработчики D7 на нужные события ставят отправку в фон.
  3. Отправка асинхронна. Долгие запросы не блокируют пользователя.
  4. Надёжность заложена. Повторы с задержкой, идемпотентность, очередь необработанных.
  5. Вход защищён. Аутентификация, подпись, валидация входящих запросов, HTTPS.
  6. Секреты в безопасности. Минимальные права токенов, безопасное хранение, ротация.
  7. Обмен спроектирован. Онлайн и пакет распределены по задачам осознанно.
  8. Мониторинг работает. Журнал обменов, алерты на ошибки и очередь.

Вывод

API и вебхуки — это нервная система магазина, по которой данные текут между сайтом, учётом, платежами, доставкой и CRM. На 1С-Битрикс исходящие интеграции строят на событиях D7 с асинхронной отправкой, входящие принимают через REST с обязательной аутентификацией, а надёжность держат на повторах и идемпотентности.

Ключевое — относиться к интеграциям как к инженерной системе, а не к «скрипту, который отправляет запрос»: закладывать отказоустойчивость, безопасность и мониторинг с самого начала. Тогда данные не теряются, а сбои ловятся раньше клиентов. Если нужно настроить и сопровождать такие интеграции надёжно, доверьте это поддержке API-обменов и webhook-интеграций от команды, которая делает это ежедневно.

Частые вопросы

Чем вебхук отличается от вызова API?

Вызов API — это когда ваша система сама обращается к чужой и запрашивает данные или отправляет команду (модель pull, инициатор — вы). Вебхук — обратное: чужой сервис сам уведомляет вас о событии, отправляя запрос на ваш URL (модель push, инициатор — событие). Грубо: API — вы спрашиваете, вебхук — вам сообщают. В реальных интеграциях обычно используются оба направления.

Что такое REST API в 1С-Битрикс?

REST API — это программный интерфейс, через который сторонние системы обращаются к данным и функциям сайта по HTTP: получают товары, заказы, создают сущности. В Битриксе REST предоставляется модулем и позволяет как входящие вызовы (кто-то обращается к вашему сайту), так и работу с внешними API. Для внутренних событий сайта используются события D7, которые запускают вашу логику при изменениях.

Как реагировать на события в Битриксе для отправки вебхуков?

Через систему событий D7. Вы подписываетесь на нужное событие (например, оформление или оплату заказа) обработчиком, и при его наступлении отправляете исходящий вебхук во внешний сервис. Важно не выполнять долгие HTTP-запросы прямо в обработчике события, чтобы не тормозить пользователя, а ставить их в очередь или отправлять через агент, обрабатывая ошибки и повторы.

Как обеспечить надёжность доставки вебхуков?

Сеть и чужие сервисы ненадёжны, поэтому нужны повторы с нарастающей задержкой, идемпотентность (повторная доставка не должна создавать дубль), очередь необработанных событий и логирование каждой попытки. Если внешний сервис недоступен, событие не теряется, а откладывается и повторяется. Без этих механизмов интеграция будет молча терять данные при первом же сбое.

Как защитить входящие вебхуки и API?

Входящие запросы аутентифицируют: секретный токен, подпись тела запроса, ограничение по IP, HTTPS обязательно. Нельзя доверять входящим данным — их валидируют и обрабатывают как потенциально враждебные. Токены хранят безопасно и выдают с минимальными правами. Открытый вебхук без проверки подписи — это дыра, через которую можно подделать заказы или испортить данные.

Что такое идемпотентность и зачем она нужна?

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

Стоит ли синхронизировать данные онлайн или пакетно?

Зависит от задачи. Онлайн через вебхуки нужен там, где важна оперативность: статусы заказов, оплаты, остатки в реальном времени. Пакетный обмен по расписанию проще и надёжнее для больших объёмов, где секунды не решают: ночная выгрузка каталога, сверка. Часто их комбинируют: базовый обмен пакетный (например, CommerceML с 1С), а срочные события — через вебхуки.

Как отлаживать и мониторить интеграции?

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

Поделиться:

Нужно надёжно связать магазин с внешними сервисами?

Настроим вебхуки и API-интеграции на 1С-Битрикс с повторами, идемпотентностью, безопасностью и мониторингом — данные не теряются, сбои видны сразу.

Поддержка API-обменов

Игорь Воскресенский

Команда B2Bsite. С 2014 года разрабатываем и сопровождаем интеграции на 1С-Битрикс: REST, вебхуки, обмен с 1С, CRM и платёжными сервисами с упором на надёжность и безопасность.

← Все статьи блога