new

CDEKIntegrate

Отправка заказов в личный кабинет CDEK
Автор дополнения
Артур Шевченко
Пакетов
31
Закачек
3 606
Обычно отвечает в течение суток
Автор дополнения
Пакетов
31
Закачек
3 606
Обычно отвечает в течение суток
Версия 3.1.0-beta
Дата выпуска 16.10.2026
Загрузки 133
Просмотры 3 351
Компонент для отправки заказов в СДЭК.
ВНИМАНИЕ!!! Системные требования и инструкции по настройке на 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` укажите размер НДС, если есть.

CdekIntegrate 3.1.0-beta

Логика приведена к cdekIntegrate 2.

  • Тело заказа: тариф берётся из расчёта на чекауте (запрос msCDEK сохраняется в адресе заказа), затем подбирается через calculator/tarifflist, затем по способу доставки. Если тариф не определён, заказ не отправляется и возвращается ошибка.
  • Места и товары строятся через msCDEK по текущим позициям заказа: одно место получает номер заказа, несколько мест - номер-1, номер-2. ware_key берётся из артикула.
  • В заказ передаются sender.company, seller.name, комментарий до 255 символов и телефон получателя из одних цифр. Получатель, если в адресе нет данных, берётся из покупателя или профиля пользователя.
  • ПВЗ передаётся как delivery_point, курьерская доставка как to_location. Отправитель задаётся через shipment_point либо from_location (JSON или строка адреса); точки отправления по умолчанию больше нет.
  • Исправлено: наложенный платёж определялся по несуществующему полю payment и не применялся никогда. Теперь он определяется по payment_id.
  • Создание и отмена по смене статуса выполняются через очередь и cron (cron/run.php, flock). Перед созданием заказ ищется в СДЭК по номеру; без подтверждения создания проверка повторяется через очередь, до 10 раз. Отмена выполняется через DELETE с ожиданием подтверждения.
  • Новая кнопка «Проверить доставку». Ошибки СДЭК показываются менеджеру текстом.
  • Вебхук: статус подтверждается запросом GET orders/{uuid}, ответы 400/500/200, история пишется только при смене статуса. Подписка проверяется и регистрируется раз в сутки.
  • Маппинг статусов использует строковые коды СДЭК: {"DELIVERED":3}. Числовые ключи 3.0.x продолжают работать как запасной вариант: если для кода ключа нет, берётся attributes.status_code из тела вебхука, когда attributes.code совпадает со статусом из GET.
  • Подписка регистрируется на адрес из cdekintegrate_webhook_url, а если он пуст - на адрес по умолчанию. Если подписка в 3.0.x создавалась вручную на другой адрес, впишите его в cdekintegrate_webhook_url, иначе появится вторая подписка.
  • Права: API панели доступен только в контексте mgr с правами msorder_list и msorder_save или msorder_view (ранее требовалась группа Administrator).
  • Накладная и штрихкод: одно задание печати на заказ, PDF возвращается в base64 без сохранения на диск. Настройка cdekintegrate_invoice_path больше не используется; при обновлении она остаётся в системных настройках, её можно удалить вручную.
  • Списки ID в настройках принимаются через запятую или JSON-массивом. На новой установке автосоздание и автоотмена выключены.
  • Журнал перенесён в mxLogger, добавлена настройка cdekintegrate_log_level.
  • cron/run.php нужно запускать от пользователя веб-сервера (PHP-FPM).
  • Кнопки панели заказа работают через маршруты менеджера MiniShop3 /api/mgr/cdekintegrate/order/... (ms3.routes.d/manager). MiniShop3 1.13 не пропускает маршруты /api/v1 через connector.php, поэтому статус, история и действия панели отвечали 404. Публичным остаётся только вебхук.
  • Требуется msCDEK 3.4.2 и выше (в 3.4.1 у позиций заказа пустые названия и одинаковый ware_key) и MiniShop3 1.8 и выше.

CdekIntegrate 3.0.5-beta

  • Наложенный платёж: для предоплаченных заказов (способ оплаты не в cdekintegrate_cash_payment_ids) payment.value товаров обнуляется — раньше СДЭК брал стоимость товаров с получателя повторно.

CdekIntegrate 3.0.4-beta

  • Тарифы «Сборный груз» (748–751): в заказ СДЭК передаётся дополнительный тип заказа 2, объявленная стоимость товара поднимается до 1. Без этого СДЭК создавал заказ, но не брал его в работу.
  • Вес и объявленная стоимость товара в посылке передаются за единицу, как требует API СДЭК; раньше они умножались на количество.

CdekIntegrate 3.0.3-beta

  • Маппинг webhook-статусов документирован и протестирован как сопоставление ID статуса СДЭК с ID статуса MiniShop3; исправлены подсказка настройки и ошибочные примеры с символьными названиями.

CdekIntegrate 3.0.2-beta

  • Composer-autoloader пакета получил фиксированный уникальный suffix CdekIntegrate3 и больше не конфликтует с autoloader зависимости msCDEK.

CdekIntegrate 3.0.1-beta

  • Удалена собственная реализация OAuth: авторизация, кеширование токена и разбор HTTP-ответов выполняются единым API-клиентом msCDEK 3.1.4-pl.
  • В боевом режиме CdekIntegrate и msCDEK используют общий кеш OAuth-токена; для тестового API сохранён отдельный кеш.
  • Статус заказа по webhook теперь меняется через штатный OrderStatusService MiniShop3 и поле status_id, с журналом, событиями и уведомлениями.
  • Добавлена защита от обратного создания или отмены заказа в СДЭК при обработке входящего статуса.
  • Ошибка штатной смены статуса или сохранения свойств заказа теперь прерывает обработку webhook и попадает в лог.

CdekIntegrate 3.0.0-beta

  • Первоначальный выпуск
  • Создание заказа в API CDEK
  • Отмена заказа
  • Обработка вебхуков с отслеживанием статуса
  • Генерация PDF-файлов накладной и штрихкода
  • Сопоставление статусов (CDEK → MS3)
  • Автоматическое создание/отмена при изменении статуса в MS3
  • Интеграция с панелью менеджера (события плагина)
  • История действий в таблице cdekintegrate_history

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