Перейти к содержимому

Типовые проблемы и обходные пути

Симптом → вероятная причина → что сделать. Проверяйте в порядке сверху вниз.

События не приходят вообще

СимптомПричинаРешение
Нет ни webhook, ни handlerМодуль выключен или не operationalКаталог модулей → включить; Лицензирование → проверить ключ; integrations:package:inspect
Handler молчит, webhook молчитНет подключения на точку заказаПодключения модулей → инстанс на точку или bulk «все точки», активно
Manifest-модуль настроили в ИнтеграцииНеверный разделДля новых модулей используйте Подключения + instance_form (подробнее)
Handler молчитПустой или неверный hooks.php, класс не в autoloadИсправить FQCN; composer dump-autoload; синхронизировать каталог
Webhook молчитНе настроен URL / неактивен endpointВкладка Исходящие webhooks
Всё настроено, статус pendingНет worker на integrations.*Supervisor на integrations.outbound,integrations.{Code}; queue:restart
В логе backpressure: skipped>500 pending у пакетаРазобрать очередь, ускорить handler, временно снизить события
Хук не в списке outboundФильтр хуков в endpointДобавить имя хука или очистить список (= все)

Только webhook не работает

СимптомПричинаРешение
Handler ok, POST нетНет воркера integrations.outboundОтдельная программа supervisor
Job failed в логеHTTP не 2xx, таймаутИсправить endpoint; ответ <15 с
URL rejectedHTTP вместо HTTPS, localhost на prodHTTPS публичный URL или INTEGRATIONS_DEBUG на dev
401 у васНеверная проверка подписиCanonical JSON всего тела {hook,payload,sent_at} — см. outbound

Только handler не вызывается

СимптомПричинаРешение
Webhook ok, handler нетНет воркера integrations.{Code}Добавить код модуля в --queue=
Handler not foundОпечатка в hooks.phpИсправить namespace/class
completed сразу без эффектаИдемпотентность — тот же ключ уже былНорма при повторе; для теста — другой id в simulate
Circuit breakerСерия ошибок в handlerИсправить exception в handler; подождать cooldown

Inbound

СимптомПричинаРешение
503Нет inbound_webhook_secretЗадать в credentials инстанса
401Подпись от canonical вместо raw bodyHMAC от сырых байт тела
202, но ничего не происходитНет воркера на integrations.{package}queue:work
Handler не вызываетсяНет класса в manifest capabilitiesFQCN + IntegrationInboundWebhookHandlerInterface
403Модуль не operationalЛицензия / включение

REST API

СимптомПричинаРешение
401Bearer не identifier:secretФормат из авторизации
403 scopeРоль без праваНастройка API → роль с нужным scope
403 на заказКлюч привязан к другой точкеДругой ключ или заказ этой точки
422 статусНет status_code/status_id или код не существуетНастройки → Статусы — задать code
Сменили статус, CRM не видитЖдёте только RESTПосле API уходят хуки — подпишите CRM на order.status_changed

Статусы и «лишние» хуки

СимптомПричинаРешение
Десятки order.item_status_changedОтмена заказа обновляет все позицииСлушать только order.status_changed или фильтр по status_semantic
status_code null в payloadСтатус без кода в админкеЗаполнить код статуса
Робот не меняет позицию, API можетstatus_lockedОжидаемо для robot/system; интеграция — отдельное правило

Лицензия

СимптомПричинаРешение
После деплоя «отвалилось»Ключ не сбрасывается — модуль выключили / invalidlicenses:verify --force; логи валидатора
Cron не проверяетНет schedule:runCrontab

Legacy (МойСклад и др.)

СимптомПричинаРешение
Нет hooks.php событийLegacy‑модуль без Integration Platform v1Старый синк; для событий — новый manifest‑модуль или outbound в обёртке
Заказ не в MSНет link на товар / org ID / контактСинк каталога; организация; телефон/email — см. МойСклад: если не работает
Отмена на сайте, в MS без измененийСтатус позиции не cancelled / CANCELLED_ITEMНастройки → Статусы; не путать с «Выдано» (finished)
При выдаче позиция пропала в MSСтарая версия: проверялся finished вместо отказаОбновить платформу
Синк не идётНет worker на defaultqueue:work --queue=default (не integrations.*)
Настроили в ПодключенияхМойСkлад — legacyТолько Система → Интеграции

Чеклист за 5 минут

  1. php artisan integrations:package:inspect {Code}
  2. Operational = да, есть активное подключение
  3. php artisan integrations:hooks:simulate order.created --package={Code}
  4. Очередь хуков → не зависло в pending
  5. tail storage/logs/integrations.log

Связанные разделы

База знаний для EMS-платформы PlatParts.