CDEKIntegrate

Отправка заказов в личный кабинет CDEK
Автор дополнения
Артур Шевченко
Пакетов
31
Закачек
3 567
Обычно отвечает в течение суток
Автор дополнения
Пакетов
31
Закачек
3 567
Обычно отвечает в течение суток
Версия 2.1.2-pl
Дата выпуска 17.09.2026
Загрузки 126
Просмотры 3 303
Компонент для отправки заказов в СДЭК.
ВНИМАНИЕ!!! Системные требования и инструкции по настройке на MODX 3 смотрите в документации.
Документация актуальна для вервии 3.0.0-beta и выше
ВНИМАНИЕ!!! С версии < 2.0.0 НЕЛЬЗЯ. Удалите пакет полностью и установите новую версию.

Требования:
  • Версия PHP >=7.4
  • Версия modx >=2.6 && < 3.0
  • Версия miniShop2 >=3.0.7

Зависимости:
  • ms_CDEK2 >= 2.8.2

Возможности:
  • Отправка заказов в СДЭК
  • Скачивание накладных


Быстрый старт

После установки компонента в зависимости от того как вы отправляете заказы нужно заполнить системную настройку
* `cdekintegrate_shipment_point` — если отвозите заказы на ПВЗ (код имеет формат MSK2279 и узнать его можно на сайте widget.cdek.ru/)
* `cdekintegrate_from_location` — если вызываете курьера. Адрес должен быть в формате Регион, Город, Улица, Дом.

Время отправки заказа из админки может достигать 30 секунд, не стоит паниковать и думать, что админка зависла.

Если требуется автоматическая отправка заказов, то в системной настройке `cdekintegrate_create_statuses` через запятую
укажите ID статусов заказа при которых заказ будет отправлен в СДЭК.

Если требуется автоматическое удаление заказов в СДЭК при отмене на сайте
(будет работать только для новых заказов не попавших в обработку СДЭК),
то в системной настройке `cdekintegrate_cancel_status` укажите ID статуса отменённого заказа.

Для автоматического создания и автоматической отмены заказов добавьте в планировщик заданий сервера следующую команду
*/5 * * * * {path/to/php} {path/to/site-root}core/components/cdekintegrate/cron/run.php
{path/to/php} — путь к php на вашем хостинге
{path/to/site-root} — полный путь до корня вашего сайта

При необходимости можете изменить папку для сохранения накладных `cdekintegrate_invoice_path`.

Если на вашем сайте доступна оплата наличными и необходимо, чтобы покупатель оплачивал заказ при получении,
то в системной настройке `cdekintegrate_cash_payment_ids` через запятую укажите ID способов оплаты наличными.
А так же в системной настройке `ms_cdek2_nds_percent` укажите размер НДС, если есть.

2.1.2-pl

  • FIX: действия карточки заказа выполняются в контексте mgr после проверки сессии; исправлен отказ доступа для менеджеров без sudo.
  • UI: уменьшена высота окна заказа, содержимое вкладки CDEK прокручивается.
  • UI: убран дублирующий пункт выдачи на вкладке заказа; адрес сохранён на вкладке CDEK.
  • REQUIRE: для корректной отмены доставки и вызова курьера необходим ms_CDEK2 2.10.2+.
  • TEST: добавлены проверки интерфейса и состава transport, дефолтов настроек и секретов.

2.1.1-pl

  • FIX: подтверждённая отмена REMOVED очищает активный UUID доставки, сохраняя номер и историю заказа; поля адреса и свойства заказа синхронизируются.
  • SECURITY: webhook получает номер и актуальный статус через авторизованный API СДЭК и сверяет UUID с сохранённой доставкой, включая историю отменённого заказа.
  • SECURITY: общий guard проверяет сессию менеджера и права miniShop2 до запуска процессоров, в том числе через стандартный connector.
  • FIX: задания очереди подтверждаются только после успешного выполнения; исключения и ошибки сохраняют задания для следующего запуска.
  • FIX: сохранены задания finalizeOrder и все действия карточки версии 2.1.0. Устранены коллизии ключей очереди и параллельные запуски cron на одном сервере.
  • TEST: добавлены регрессионные проверки webhook, очереди и прав доступа.
  • BUILD: из transport исключены резервные копии, инструменты разработки и тесты стенда.

2.1.0-pl

  • FEATURE: календарь исключений склада на dashboard: диапазоны дат и массовые действия; таблица календаря используется при расчёте даты забора.
  • FIX: установщик регистрирует событие забора и создаёт таблицу заявок при первой установке.
  • FEATURE: на вкладке CDEK отображаются статусы, номера и дата обновления доставки; данные сохраняются в properties.cdekDelivery.
  • FEATURE: добавлены рабочий календарь склада и настройка интервала забора курьером; дату можно переопределить карточкой заказа или событием cdekOnBeforeIntakeCreate.
  • FEATURE: отмена и повторный вызов заявки на забор выполняются асинхронно без ожидания в AJAX; для курьера доступна отдельная кнопка проверки заявки.
  • FEATURE: накладная и штрих-код формируются асинхронно: запрос возвращает pending, а PDF доступен после статуса READY.
  • FEATURE: добавлено событие cdekOnBeforeIntakeCreate для изменения или отмены payload заявки на забор.
  • FIX: данные заявок сохраняются в properties.cdekIntake с номером, статусом и датой; существующий cdekOrderUuid сохраняется для совместимости.
  • FIX: webhook сохраняет статусы доставки даже без сопоставления (mapping).
  • FIX: очередь cron нужна для автоматического завершения регистрации доставки и создания заявки на забор после перехода операции из pending.
  • FIX: повторная отправка заказа в СДЭК на тестовом контуре больше не падает на guard «заказ не найден»: принимаются оба кода СДЭК — v2_entity_not_found (prod) и v2_entity_not_found_im_number (edu).
  • FIX: отмена заказа больше не возвращает ложное «СДЭК не подтвердил приём запроса отмены», когда асинхронный DELETE ответил без отдельной DELETE-записи; повторная отмена уже удалённого заказа идемпотентна.
  • FIX: отмена заявки на забор, уже отклонённой СДЭК (асинхронная валидация: тариф, день недели), считается отменой, а не ошибкой.

2.0.6-pl

  • FEATURE: на вкладке CDEK добавлены действия отправки заказа, вызова/проверки/отмены заявки на забор, отмены заказа, скачивания накладной и штрих-кода.
  • FEATURE: действия вкладки переведены на manager-процессоры MODX 2; проверка заявки выполняется отдельным запросом без ожидания sleep() в AJAX.
  • ADD: в карточку заказа miniShop2 добавлена отдельная вкладка CDEK: действия отправки и накладной перенесены туда же, CDEK-поля доставки вынесены из общей вкладки заказа.
  • FEATURE: добавлены тонкие обёртки CDEK Intake API для создания, получения статуса и отмены заявки на забор курьером.
  • FEATURE: добавлена xPDO-модель cdekIntake и схема таблицы cdekintegrate_intakes для хранения текущей заявки, параметров вызова и последнего ответа СДЭК.
  • FEATURE: добавлены системные настройки режима забора курьером, рабочего графика склада, cut-off, лага в рабочих днях, дефолтного окна, комментария и прозвона.
  • FEATURE: добавлен расчёт дефолтной даты забора по рабочему календарю склада, лагу и cut-off без хардкода выходных.
  • FEATURE: после успешного создания заказа СДЭК и успешной проверки статуса заявка на забор курьером создаётся автоматически только в режиме delivery_with_intake.
  • FEATURE: перед автосозданием заявки вызывается событие cdekOnBeforeIntakeCreate, позволяющее изменить payload или отменить создание без ошибки заказа.
  • FIX: результат создания, отмены или пропуска заявки сохраняется в msOrder.properties (cdekIntake) и используется для идемпотентности повторных вызовов.
  • FIX: исправлено сохранение результата проверки webhook в кеш MODX 2. Значение передаётся в xPDOCacheManager::set() через переменную, как требует его сигнатура со вторым параметром по ссылке; регистрация больше не завершается ошибкой Cannot pass parameter 2 by reference после успешного ответа СДЭК.

2.0.5-pl

  • FIX: API-клиент заказов и webhook теперь расширяет клиент ms_CDEK2 и использует его единые HTTP-транспорт, OAuth и кеш токена; дублирующие реализации удалены.
  • FIX: ORDER_STATUS обрабатывается напрямую из attributes webhook, без обязательного обратного запроса заказа в СДЭК; старый формат уведомления поддерживается fallback-запросом.
  • FIX: статус заказа меняется штатным miniShop2::changeOrderStatus(), поэтому выполняются журналирование, события и уведомления miniShop2.
  • FIX: обработчик webhook возвращает JSON и ошибочный HTTP-код при сбое, чтобы СДЭК мог повторить доставку уведомления.
  • FIX: регистрация webhook фактически перепроверяется раз в сутки, а сохранённый флаг больше не скрывает удалённую или неуспешную подписку.
  • BUILD: ключ шифрования transport-пакета удалён из исходников и читается из переменной окружения MODSTORE_API_KEY.
  • BUILD: отключена заведомо невозможная автоустановка ещё не опубликованного зашифрованного transport; проверка на dev выполняется до публикации исходниками, затем опубликованный архив устанавливается штатно.
  • BUILD: сборщик больше не выдаёт предупреждение при отсутствии необязательной xPDO-схемы компонента.

2.0.4-pl

  • Логирование переведено на mxLogger (единственный приёмник). Класс Helpers\Logger больше не пишет в файлы (services/custom/logs/*) — делегирует записи сервису mxLogger, а если он не установлен, один раз предупреждает в журнале MODX и молчит.
  • Новые гейты: cdekintegrate_debug (вкл/выкл, включено из коробки) + новая настройка cdekintegrate_log_level (минимальный уровень debug|info|warning|error, по умолчанию error). Консистентно с mxlogger.min_level. Раньше cdekintegrate_debug по умолчанию был выключен.
  • Тэги: базовые cdekintegrate + delivery, этапные api / webhook / http / queue / order. Воронка process_uid обработки вебхука = «cdekintegratewebhook»+md5(uuid).
  • Ранее негейтнутые вызовы $modx->log (ошибки конфигурации API, токена, регистрации вебхука) переведены в логгер с уровнем error/нужным тэгом.
  • Конструктор Logger получил $modx; сигнатура write(array $params) сохранена, добавлены ключи level и tags (поддерживается также ключ message наряду с msg).

2.0.3-pl

  • Добавил передачу комментария из адреса заказа (msOrderAddress.comment) в поле comment запроса на создание заказа в СДЭК. Длина обрезается до 255 символов согласно лимиту API. При пустом комментарии поле в запрос не добавляется.

2.0.2-pl

  • Добавлена синхронизация статусов заказов через webhook СДЭК
  • Добавлены системные настройки для webhook:
    • cdekintegrate_webhook_url - URL обработчика webhook
    • cdekintegrate_webhook_registered - флаг регистрации webhook
    • cdekintegrate_status_mapping - сопоставление статусов СДЭК и miniShop2
  • Добавлена автоматическая регистрация webhook при инициализации компонента
  • Добавлен обработчик webhook для получения уведомлений от СДЭК
  • Добавлены методы API для работы с webhook в СДЭК
  • По умолчанию настроено сопоставление статусов: REMOVED → 4 (отменён), CREATED → 3 (создан)

2.0.1-pl

  • Добавил возможность указать название компании отправителя и продавца в системных настройках.

2.0.0-pl

  • Исправил путь к сервису в файле запускаемом по cron.

2.0.0-rc

  • Добавил подключение JS на фронте.

2.0.0-beta1

  • Добавил возможность отправки заказов, которые были созданы до обновления ms_CDEK2 до версии 2.8.2

2.0.0-beta

  • Update API v2.0

1.1.10-beta

  • Add system setting cdekintegrate_recipient_cost

1.1.9-beta

  • Add vendor directory in package

1.1.8-beta

  • Add delivery_recipient_cost to order

1.1.7-beta

  • Add package_size setting

1.1.6-beta

  • Prevent creating order if it already exists

1.1.5-beta

  • Fix inner_cdek_id saving

1.1.4-beta

  • Fix weight sending in order create method

1.1.3-beta

  • Fill PVZ code if set

1.1.2-beta

  • Index does not required for PVZ search

1.1.1-beta

  • Direct downloading if file exists

1.1.0-beta

  • Set API v2.0

1.0.3-beta

  • Fix production request credentials

1.0.2-beta

  • Fix request URLs

1.0.1-beta

  • Add encryption

1.0.0-beta

  • First release

Последние обсуждения в сообществе MODX.pro