
msCDEK
Внимание
Данная документация актуальна для версии компонента 3.0.0 и выше (MODX 3 + MiniShop3).
Требования
- MODX 3.x
- PHP >= 8.1
- MiniShop3 >= 1.8.0-beta1
Возможности
- Расчёт стоимости доставки в соответствии с указанными тарифами.
- Выбор ПВЗ из списка или на карте (нужно получить ключ для JavaScript API и HTTP Геокодер).
- Подсказки при вводе адреса от сервиса DaData.
- Сортировка ПВЗ по расстоянию от адреса покупателя с отображением дистанции.
- Вкладка СДЭК в карточке заказа в админке: просмотр выбранного ПВЗ, смена ПВЗ и пересчёт стоимости доставки без перезагрузки страницы.
Порядок работы
Для расчёта стоимости доставки компоненту требуется почтовый индекс, который следует указать в поле [name="index"]. Пользователь может ввести его сам или вы можете настроить подсказки при вводе адреса, и тогда при выборе одной из подсказок индекс заполнится автоматически.
После получения индекса работает стандартная логика MiniShop3, которая приводит к вычислению стоимости доставки. Затем, если выбран способ доставки до ПВЗ, получаем список ПВЗ, и, в любом случае, получаем статус доставки (всю информацию, которую вернул API СДЭК), чтобы показать его пользователю, если на странице есть соответствующий блок (подробности ниже).
Если получали список ПВЗ и на странице есть блок для отрисовки карты, то рисуем карту. При выборе ПВЗ в списке, карта будет перемещена по координатам ПВЗ, а маркер обведёт в кружок. При выборе ПВЗ на карте, значение в списке также поменяется.
Информация
Компонент умеет учитывать страну, для этого нужно добавить поле [name="country"]. Страна учитывается при предоставлении подсказок, при получении списка ПВЗ и при расчёте стоимости.
Быстрый старт
Информация
Ни один из HTML-блоков, которые будут упомянуты ниже, не является обязательным для расчёта стоимости доставки, кроме поля ввода почтового индекса.
После установки компонента ОБЯЗАТЕЛЬНО выполнить первые 6 пунктов из списка ниже:
- Перейдите в системные настройки и выберите пространство имён
mscdek; - Установите свои значения в поля с ключами
mscdek_main_loginиmscdek_main_password; - Установите индекс отправителя в поле
mscdek_main_sender_index; - Убедитесь, что в поле
mscdek_main_deliveriesустановлены правильные ID способов доставки (door — доставка до двери, pvz — доставка в ПВЗ);Подробнее
Например ID доставки до двери у вас 2, а до ПВЗ 3, тогда значение этой настройки будет выглядеть так
{"door":"2","pvz":"3"}. При установке пакета способы доставки создаются автоматически, а их ID прописываются в эту настройку. - Убедитесь, что в поле
mscdek_main_tariffsустановлены правильные ID способов доставки и ID тарифов СДЭК (доставка до двери для ИМ тариф 137, доставка в ПВЗ - 136);Подробнее
Например ID доставки до двери у вас 2, а до ПВЗ 3, тогда значение этой настройки будет выглядеть так
{"2":"137","3":"136"}. - Установите номера шаблонов (через запятую) с формой оформления заказа в поле
mscdek_main_templates(чтобы скрипты фронтенда подключались только на страницах с этим шаблоном); - Если используете доставку до ПВЗ, то в чанке с формой оформления заказа добавьте код
<div data-mscdek-list></div>Информация
Если отправка будет не из РФ, укажите корректный код страны отправителя в системной настройке mscdek_main_sender_country.
Внимание
Список ПВЗ должен выводиться в элементе select как в чанке mscdekListWrap или не выводиться вовсе.
Информация
Если решили не выводить список ПВЗ, вставляйте вместо
<div class="hide" data-mscdek-list></div>скрытое поле
<input type="hidden" name="point">Вывод карты со списком ПВЗ
- Получите ключ для JavaScript API и HTTP Геокодер;
- Установите полученный ключ в системную настройку
mscdek_main_yandex_map_api_key; - В шаблон с формой оформления заказа вставьте код
<div class="hide" data-mscdek-map></div>Подсказки при вводе адреса
- Получите токен в сервисе DaData;
- Установите полученный токен в системную настройку с ключом
mscdek_main_dadata_token; - Полю, в которое пользователь будет вводить адрес, добавить атрибут
data-mscdek-suggest-field; - В шаблон с формой оформления заказа вставьте код
<ul class="hide" data-mscdek-suggest-list></ul>Вывод информации о сроках доставки
- В шаблон с формой оформления заказа вставьте код
<div class="hide" data-mscdek-status></div>Расчёт количества пакетов
Компонент может рассчитывать количество пакетов разными способами. Способ расчёта определяется системной настройкой mscdek_packages_packages_calc_type. Возможные значения:
0- при этом способе расчёта будет добавлен один пакет (метод по умолчанию);1- будет добавлено столько пакетов, сколько уникальных позиций товаров есть в корзине;2- будет добавлено столько пакетов, сколько товаров есть в корзине;3- количество пакетов будет рассчитано исходя из объема одного пакета, объем одного пакета рассчитывается по значению системной настройкиmscdek_packages_default_size; Например, если в корзине лежит товар с размерами20х30х10и весом 1 кг в количестве 3 штуки, аmscdek_packages_default_sizeимеет значение20х30х20, то будет добавлено два пакета:
$packages = [
[
'weight' => 2,
'length' => 20,
'width' => 30,
'height' => 20
],
[
'weight' => 1,
'length' => 20,
'width' => 30,
'height' => 10
],
];4- количество вообще не рассчитывается, а берётся один пакет с размерами и весом из системных настроек.5- будет добавлен один пакет с размерами из системных настроек и весом равным сумме весов всех товаров в корзине.
Отдельными системными настройками можно управлять учётом количества (mscdek_packages_use_product_count), индивидуальных размеров товаров (mscdek_packages_use_individual_sizes) и индивидуального веса товаров (mscdek_packages_use_individual_weight) при расчёте количества пакетов. По умолчанию все настройки имеют значение false, т.е. при расчёте количества пакетов не учитывается ни реальное количество, ни индивидуальные размеры, ни вес, а берутся значения по умолчанию (из системных настроек и количество = 1).
Внимание
Для способов расчёта количества пакетов 0,1,2,3 в системной настройке mscdek_packages_default_size следует указывать размер упаковки одного товара, а для способов 4,5 - размеры всего пакета. Это же касается и настройки mscdek_packages_package_default_weight.
Информация
Для способов расчёта количества пакетов 0,1,3 вес пакета складывается из суммы весов товаров умноженных на их количество, длина и ширина - максимальное значение из всех длин и ширин товаров, высота - сумма высот всех товаров. Это можно представить как складывание маленьких коробок (товаров) в большую коробку (пакет) стопкой (т.е. одна на другую). Для способа 2 размеры пакета соответствуют размерам товара. Для способов 4,5 - размеры пакета берутся из системных настроек.
Расчёт доставки в другие страны
СДЭК поддерживает расчёт доставки в Казахстан и Беларусь. Чтобы это работало на вашем сайте, нужно передать в заказ информацию о стране получателя через поле country.
Если в системных настройках не указан токен сервиса DaData, то код страны получателя следует передавать в формате ISO 3166-1 alpha 2. В противном случае - нужно передавать название страны на русском языке.
