new

ms_CDEK2

Добавляет методы доставки СДЭК, расчет цены и времени доставки по индексу и городу
Автор дополнения
Артур Шевченко
Пакетов
31
Закачек
3 517
Обычно отвечает в течение суток
Автор дополнения
Пакетов
31
Закачек
3 517
Обычно отвечает в течение суток
Версия 2.10.2-pl
Дата выпуска 17.09.2026
Загрузки 1 395
Просмотры 20 152
Внимание, этот компонент несовместим с MODX 3.
ВНИМАНИЕ Не обновляйте компонент, если текущая версия ниже 2.х.х Удалите текущую версию полностью и установите новую.
ВНИМАНИЕ При использовании SendIt 2.4.0+ на странице оформления заказа должен быть хотя один ЛЮБОЙ html-элемент с атрибутом data-si-form
ВНИМАНИЕ Компонент не работает с PHP 8
Данный компонент не реализует функционал отправки заказов в личный кабинет CDEK — только расчёт стоимости!

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

Зависимости:
  • miniShop2
  • SendIt
  • pdoTools

ВАЖНО
Если вы обновляете компонент ОБЯЗАТЕЛЬНО укажите коды тарифов для используемых способов доставки в описании способа доставки или на вкладке Параметры.
Если вы устанавливаете компонент впервые убедитесь, что коды способов доставки соответствуют вашему договору со СДЭК.

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

После установки компонента ОБЯЗАТЕЛЬНО выполнить первые 6 пунктов из списка ниже:

1. Перейдите в системные настройки и выберите пространство имён ms_cdek2;
2. Установите свои значения в поля с ключами ms_cdek2_login и ms_cdek2_password;
3. Установите индекс отправителя в поле ms_cdek2_sender_index;
4. Убедитесь, что в поле ms_cdek2_deliveries установлены правильные ID способов доставки (door — доставка до двери, pvz — доставка в ПВЗ);
5. Убедитесь, что в поле ms_cdek2_tariffs установлены правильные ID способов доставки и ID тарифов СДЭК (доставка до двери для ИМ тариф 137, доставка в ПВЗ — 136);
6. Установите номер шаблона с формой оформления заказа в поле ms_cdek2_template (чтобы скрипты фронтэнда подключались только на страницах с этим шаблоном);
7. Если используете доставку до ПВЗ, то в чанке с формой оформления заказа добавьте код
<div data-mscdek-list></div>
Для того, чтобы сработал расчёт стоимости доставки, пользователь должен ввести почтовый индекс.
8. Для вывода выбранного ПВЗ в письме, добавьте в чанк
{$address.properties.point}


Вывод карты со списком ПВЗ

Начиная с версии 2.9.0 поддерживаются два провайдера карт. Выбор задаётся системной настройкой ms_cdek2_map_provider (значения osm по умолчанию или yandex), а ключ хранится в унифицированной
настройке ms_cdek2_map_api_key (нужен только для Яндекса).

К пунктам из быстрого старта выполнить следующие действия:
Вариант 1. OpenStreetMap + Leaflet (по умолчанию, без ключа)
1. Убедитесь, что ms_cdek2_map_provider имеет значение osm (так и стоит после чистой установки).
2. В шаблон с формой оформления заказа вставьте код .
Leaflet и плагин leaflet.markercluster подтягиваются с публичного CDN (cdn.jsdelivr.net) автоматически — никаких дополнительных подключений в шаблоне делать не нужно.

Вариант 2. Яндекс.Карты
1. Получите ключ для JavaScript API и HTTP Геокодер на developer.tech.yandex.ru.
2. В системной настройке ms_cdek2_map_provider укажите yandex.
3. Установите полученный ключ в системную настройку ms_cdek2_map_api_key.
4. В шаблон с формой оформления заказа вставьте код .
ВНИМАНИЕ Если карта Яндекса с ПВЗ не выводится, проверьте настройки ключа в ЛК Яндекса: если есть привязка к домену — уберите, если нет — сделайте. Если это не помогло, попробуйте создать новый
ключ. Также может помочь ограничение по HTTP Referer для домена cdek.ru. Если и это не помогло, пишите в ТП Яндекс.Карт.

Миграция со старых версий
До 2.9.0 ключ Яндекс.Карт хранился в настройке ms_cdek2_yandex_map_api_key. При обновлении пакета значение автоматически переносится в ms_cdek2_map_api_key, а ms_cdek2_map_provider выставляется в
yandex. Если ключа не было — провайдер останется osm. Старая настройка удаляется.

Лицензия OpenStreetMap
Карта в режиме osm рендерится на бесплатных тайлах tile.openstreetmap.org. Согласно лицензии ODbL и OSM Tile Usage Policy, требуется видимое указание авторства данных. В пакетных стилях стандартный
блок атрибуции Leaflet скрыт (для аккуратности UI), поэтому разместите в шаблоне рядом с картой или в подвале страницы текст «© OpenStreetMap contributors». Кроме того, OSM Tile Usage Policy не
рекомендует высоконагруженное коммерческое использование с публичных тайлов — при росте трафика подключите свой кеш/прокси тайлов или платный тайл-сервис.

Подсказки при вводе адрес

К пунктам из быстрого старта выполнить следующие действия:
1. Получить токен в сервисе DaData и установить его в системную настройку с ключом ms_cdek2_dadata_token;
2. Полю, в которое пользователь будет вводить адрес добавить атрибут data-mscdek-suggest-field;
3. В шаблон с формой оформления заказа вставить код
<ul class="hide" data-mscdek-suggest-list></ul>
для вставки подсказок.

2.10.2-pl

  • FIX: HTTP-клиент явно передаёт метод запроса в cURL. Отмена доставки и забора отправляет DELETE, а не GET; ранее запрос отмены фактически только читал объект.
  • TEST: реальные локальные HTTP-проверки DELETE, GET, POST и бинарного PDF.
  • BUILD: тестовые сценарии и резервные файлы исключены из transport без удаления исходников.

2.10.1-pl

  • FIX: печатные формы СДЭК (накладные и штрих-коды, endpoints print/orders и print/barcodes) снова скачиваются: транспорт отдаёт бинарное тело PDF как есть, а не теряет его при json_decode. Раньше скачивание всегда завершалось ошибкой «некорректный PDF», хотя СДЭК отдавал валидный файл. Бинарное тело больше не попадает в отладочный лог — фиксируются только размер и content-type.
  • FIX: отладочная запись сырого ответа API в лог не выполняется для бинарных тел.

2.10.0-pl

  • FEATURE: адрес API СДЭК вынесен из кода в системную настройку ms_cdek2_api_url (по умолчанию https://api.cdek.ru/v2/). Тестовый контур включается сменой URL на https://api.edu.cdek.ru/v2/ вместе с тестовыми значениями ms_cdek2_login и ms_cdek2_password.
  • Кеш токена авторизации теперь изолируется по адресу API и идентификатору клиента: при переключении между боевым и тестовым контурами чужой токен больше не переиспользуется.

2.9.3-pl

  • Полный объект выбранного ПВЗ (pointData) теперь надёжно сохраняется в msOrderAddress.properties: фронт передаёт его вместе с формой заказа, сервер сверяет код и выбранное значение, рекурсивно очищает строки и сохраняет объект.
  • Пересчёт стоимости больше не удаляет pointData из session-state.
  • Сохранение данных ПВЗ работает и без блока карты; асинхронный запрос сохранения ожидается перед завершением обработчика выбора.
  • В карточке заказа miniShop2 рядом с выбранным ПВЗ выводится его полный адрес (location.address_full, с fallback на location.address). Карта в админку не добавлялась.

2.9.2-pl

  • FIX: клик по маркеру ПВЗ на карте падал с "Cannot read properties of null (reading 'tagName')" в Map.choosePoint, когда поле выбора ПВЗ (