Документация
# Описание
Компонент предназначен для:
- интеграции вариантов доставки, настроенных в сервисе eShopLogistic в minishop2 (далее MS2)
- приёма заказов от виджетов eShopLogistic
- выгрузки заказов в кабинеты транспортных компаний и печати этикеток
В настоящий момент: СДЭК, Boxberry, Яндекс.Доставка, 5POST - редактировании способа доставки в панели управления (виджет строен в интерфейс редактирования заказа MS2)
Чтобы возможно было произвести правильный расчёт доставки, для товаров вашего магазина должен быть указан вес. В настройках можно указать минимальный вес, который будет использоваться для товаров без веса, но этот вариант подходит, если все товары имеют примерно одинаковый вес.
Если вес товаров в вашем магазине не указан, но все заказы имеют примерно одинаковый вес, можно настроить дефолтный вес для каждой службы в кабинете eShopLogistic.ru (документация).
Данные о стоимости, сроке и способе доставки записываются в заказ (поле properties объекта msOrder, подробнее ниже)
и выводятся на дополнительной вкладке в панели заказов MS2
.
# Настройки модуля в корзине
Настройка модуля предельно проста и состоит из 3-х простых пунктов:
-
Указать необходимые системные настройки.
Разделы «Основные» и «Оформление заказа в корзине».
Подробнее о системных настройках смотрите в пункте «Системные настройки».
-
Включить методы доставки и связать их со способами оплаты в настройках MS2
При установке модуль создаёт новый способ доставки: «Доставка транспортной компанией»
-
Настроить чанк оформления заказа
Есть 2 варианта настройки:
-
1. Использовать чанк
tpl.eshoplogistic3.cart(в комплекте данного модуля)
Его функционал и вид идентичен примеру корзины на этом сайте: перейти в корзину. -
2. Использовать свой чанк
В нужное место чанка необходимо добавить 2 элемента:
-
Cниппет
{'!eshoplogistic3Order' | snippet}Выводит виджет расчёта доставки.
-
блок
<div id="eShopLogistic3Info"></div>Выводит блок с подробной информацией о выбранном способе доставки
(см. системную настройку «Чанк для вывода информации в корзине»).Если на вашем сайте работает какая-либо система определения местополождения, то для автоматического включения населённого пункта в расчёт доставки можно добавить в запуск сниппета eShopLogisticOrder параметры (на выбор):
fias(ФИАС-код населённого пункта) илиcity(название населённого пункта).
Также, если указан параметр city, можно добавитьregionдля более точного определения населённого пункта.
Например:
Если fias/city не указаны, то населённый пункт будет определён сервисом eShopLogistic автоматически по IP посетителя.{'!eshoplogistic2Order' | snippet : ['city' => 'Самара', 'region' => 'Самарская область']}
-
Cниппет
-
1. Использовать чанк
# Редактирование доставки в панели управления
В любой момент возможно изменить данные доставки прямо в панели управления MODX, в интерфейсе редактирования заказа.
Для этого прейдите на вкладку «Доставка» и кликните на кнопке «Изменить данные доставки» .
Выбор нового варианта доставки осуществляется с помощью модального виджета (пример на странице товара), поэтому сначала его нужно создать в кабинете eShopLogistic аналогично созданию обычного виджета.
Важно соблюсти следующие моменты:
- Виджет должен быть привязан к томуже ключу, который указан в системной настройке «Ключ API eShopLogistic»
- Ключ этого виджета необходимо указать в системной настройке «Ключ виджета для редактирования в окне заказа Minishop2»
- Для выбора ПВЗ на карте необходимо включить в настройках виджета отправку заказа. Выберите вариант «На электронную почту» и укажите любой адрес.
# Ручная выгрузка заказа в кабинет транспортной компаний
Существует очень много нюансов; чтобы не получилось, например, что неоплаченный заказ был передан клиенту без оплаты.
При необходимости доработки/исправления выявленных моментов - обращайтесь в поддержку к автору дополнения или через раздел «Поддержка» сервиса eShopLogistic!
Для выгрузки заказов в кабинет ТК, заполните разделы системных настроек: «Выгрузка заказов (общие)», а также необходимые параметры для конкретной ТК (например «Выгрузка заказов (СДЭК)», если выгружаете в СДЭК).
Перейдите на вкладку «Доставка» и кликните на кнопке «Выгрузить в кабинет службы доставки» .
Для уточнения данных по возможности выгрузки заказов можно обратиться в поддержку sShopLogistic.
В результате успешной выгрузки:
- будет отображён идентификатор заказа в системе ТК. Также он будет сохранён в properties msOrder и доступен как $order.properties.eshoplogistic3_data.order.id
- срабатывают системные события eshoplogistic3BeforeUnloadOrder и eshoplogistic3UnloadOrder.
Подробнее смотрите в разделе Системные события.
# Автоматическая выгрузка заказа в кабинет транспортной компаний
Существует очень много нюансов; чтобы не получилось, например, что неоплаченный заказ был передан клиенту без оплаты.
При необходимости доработки/исправления выявленных моментов - обращайтесь в поддержку к автору дополнения или через раздел «Поддержка» сервиса eShopLogistic!
Для автоматической выгрузки заказов в кабинет ТК, заполните разделы системных настроек: «Выгрузка заказов (общие)» и «Выгрузка заказов (автовыгрузка)», а также необходимые параметры для конкретной ТК (например «Выгрузка заказов (СДЭК)», если выгружаете в СДЭК).
Выгрузка срабатывает после перехода заказа в указанный в параметре «Статус заказа для начала автоматической выгрузки» статус.
В случае ошибок, подробная информация выводится в лог MODX.
В результате успешной выгрузки:
- идентификатор заказа в системе ТК будет сохранён в properties msOrder и доступен как $order.properties.eshoplogistic3_data.order.id
- статус заказа меняется на указанный в параметре «Статус заказа после успешной автоматической выгрузки заказа»
- срабатывают системные события eshoplogistic3BeforeUnloadOrder и eshoplogistic3UnloadOrder.
# Вывод информации о доставке в письмах MS2 и других чанках
Данные о доставке записываются в поле properties объекта msOrder.
Соответственно доступ к ним в чанках писем (и других, где есть доступ в объекту заказа) происходит следующим образом:
Доступные данные (в зависимости от стадии обработки заказа):
| Переменная | Описание |
|---|---|
$order.properties.eshoplogistic3_data.settlement |
Массив данных населённого пункта (куда доставляем). Содержит:
|
$order.properties.eshoplogistic3_data.service |
Массив данных выбранной ТК. Содержит:
|
$order.properties.eshoplogistic3_data.type |
Способ доставки: door (курьер) или terminal (самовывоз, т.е. доставка до ПВЗ/постамата) |
$order.properties.eshoplogistic3_data.price |
Массив данных по стоимости. Содержит:
|
$order.properties.eshoplogistic3_data.time |
Массив данных по стоимости. Содержит:
|
$order.properties.eshoplogistic3_data.comments |
Массив данных с комментариями (если заданы в настройках данной ТК в каюинете eShopLogistic). Содержит:
|
$order.properties.eshoplogistic3_data.data.tariff |
Массив данных о выбранном тарифе ТК (если передаётся данной ТК). Содержит:
|
$order.properties.eshoplogistic3_data.terminal |
Если доставка до ПВЗ/постамата. Содержит полную информацию о выбранном ПВЗ/постамате. Обязательно присутствуют:
|
$order.properties.eshoplogistic3_data.order |
Содержит общую информацию о заказе на доставку (если заказ выгружен в ЛК перевозчика):
|
$order.properties.eshoplogistic3_data.order.state |
Содержит полную информацию о текущем статусе заказа на доставку (если заказ выгружен в ЛК перевозчика). Обязательно присутствуют:
|
Перед выводом проверяйте наличие данных, например:
{if $order.properties.eshoplogistic3_data.name?}
Служба доставки: {$order.properties.eshoplogistic3_data.name}
{/if}
Для просмотра всех данных по доставке распечатайте массив $order.properties.eshoplogistic3_data:
{$order.properties.eshoplogistic3_data | print_r} # Информация об аккаунте, кэширование, логгирование
Интерфейс модуля позволяет:
- Видеть актуальную информацию о балансе счёта eShopLogistic, подключённых ТК, размере кэша данных
.
Время жизни кэша определяется системной настройкой «Время жизни кэша». - Видеть статистику запросов всего и в разреже API/виджеты .
Это позволяет контролировать количество запросов (например на предмет: нет ли аномально большого количества запросов от виджетов) и понимать, подходит ли текущий тариф.
Видеть лог запросов .
Полезно для отладки: видно какие именно данные уходят на расчёт доставки; включение лога определяется системными настройками «Сохранять лог запросов» и «Режим записи лога».
# Обновление статусов доставки
Обновить статус доставки выгруженного заказа можно двумя способами:
- По кнопке в интерфейсе редактирования заказа .
-
Настроить cron-задачу
Необходимо:
- Разрешить автоматическое обновление данных выгруженных заказов выставив «Да» для системной настройки
eshoplogistic3_update_data - Указать статусы заказа, для которых следует обновлять данные; системная настройка
eshoplogistic3_update_data_statuses - Настроить с нужной периодичностью запуск скрипта
{core_path}/componemts/eshoplogistic3/cron/run.phpс помощью cron.
- Разрешить автоматическое обновление данных выгруженных заказов выставив «Да» для системной настройки
При любом варианте запуска в результате успешного выполнения запроса на получение данных, срабатывает системное событие eshoplogistic3OnGetOrderStatus. Подробнее смотрите в разделе Системные события.
# Настройка виджетов
Примеры и настройка виджетов:
-
Встраиваемый виджет
Виджет для карточки товара, встраиваемый в страницу
-
Виджет во всплывающем окне
Виджет для карточки товара, во всплывающем окне
-
Простой виджет
Информационный виджет с ручным вводом параметров
# Системные настройки
# Системные события
| Событие | Описание |
|---|---|
eshoplogistic3OnGetOffers |
Выполняется после подготовки массива товаров перед отправкой запроса на рассчёт стоимости доставки. Доступны: $offers — массив отправленных товарных позиций.Необходимо вернуть: $new_offers — новый массив товарных позиций.Пример:
|
eshoplogistic3OnBeforeAPIQuery |
Выполняется перед выполнением запроса к API eShopLogistic.ru. Доступны: $method — метод;$data — массив данные в запрос (например при расчёте доставки);$raw — json-строка с данными (например при выгрузке заказа в кабинет ТК).Например, добавим кастомный параметр для срабатывания правила.
|
eshoplogistic3OnAfterAPIQuery |
Выполняется после получения данных от API eShopLogistic.ru. Доступны: $method — метод;$query_data — данные в запросе;$response — данные, полученые от API.Например, изменим срок доставки, если в запросе есть товар с id=13:
|
eshoplogistic3BeforeUnloadOrder |
Выполняется перед выгрузкой заказа в кабинет транспортной компании, можно изменить данные заказа. Доступны: $order — объект заказа msOrder;$query_data — массив данных выгружаемого заказа.Необходимо вернуть изменённый массив данных. Пример:
|
eshoplogistic3UnloadOrder |
Выполняется после выгрузки заказа в кабинет транспортной компании. Доступны: $query_data — массив данных выгружаемого заказа;$order — объект заказа msOrder;$response - массив с данными ответа.Пример:
|
eshoplogistic3OnGetOrderStatus |
Выполняется после обновления статуса доставки выгрженного заказа. Доступны: $status — массив со старым и новым значениями статуса выгрузки;$order — объект заказа msOrder;$response - массив с данными ответа.Пример:
Документация по запросу получения заказа на доставку смотрите в официальной документации . |
# Частые вопросы
Частые причины:
- Не указаны обязательные системные настройки.
- Не настроены способы доставки MS2.
-
Не указан вес для товаров и при этом не указано значение для настройки «Минимальный вес единицы товара».
При этом в личном кабинете eShopLogistic для включённых служб не указана опция «Использовать стандартную коробку / стандартный вес» . -
Не правильно указана единица веса у товаров.
Например, в настройке «Единица измерения веса» указаны килограммы, а у товаров вес хранится в граммах. -
Не правильно указаны габариты товаров.
Единица измерения для габаритов - сантиметры. Если указываются миллиметры, то получится превышение по габаритам. - Проверьте состояние баланса в кабинете eShopLogistic.
Для максимально верного расчёта стоимости доставки большинство служб требует указания габаритов груза. Соответственно, желательно учитывать габариты товаров.
1) Если у товаров вашего магазина не указаны габариты в упаковке, можно воспользоваться параметром «Стандартная коробка / стандартный вес» в настройках службы доставки личного кабинета сервиса eShopLogistic .
2) Если у товаров вашего магазина указаны габариты в упаковке, то их необходимо добавить в объект корзины MS2.
Т.к. стандартных полей под габариты MS2 не имеет, очевидно, что данные у вас содержатся либо в полях объекта msProductData, либо
в свойствах товара (объект msProductOption).
Проще всего добавить габариты / изменить вес товаров можно с помощью плагина на событие eshoplogistic3OnGetOffers:
switch ($modx->event->name) {
case 'eshoplogistic3OnGetOffers':
foreach($offers as $k => $offer) {
# Например, в поле weight_packing msProductData у нас хранятся параметры веса упаковки: возьмём её вес вместо штатного поля weight
if($productData = $modx->getObject('msProductData', $offer['article'])) {
$offers[$k]['weight'] = (int)$productData->get('weight_packing') ?? 5;
}
# Например, в поле dimensions msProductData у нас хранятся габариты товар, формат Д*Ш*В (25*15*10), в сантиметрах
if($productData = $modx->getObject('msProductData', $offer['article'])) {
$offers[$k]['dimensions'] = $productData->get('dimensions');
}
}
$modx->event->output(['offers' => $offers]);
break;
}
Наш модуль ждёт ответа от всех транспортных компаний (ТК), которые вы выбрали. Сервера ТК отвечают с разной скоростью, а также иногда не отвечают совсем. Поэтому модуль должен подождать пока будут получены все данные или выйдет таймаут запроса к не отвечающей ТК.
К сожалению, запросы к серверам ТК - единственный правильный вариант для получения актуальных данных, во всех иных случаях данные не будут верными, соответственно будет возникать много конфликтых ситуаций.
Как снизить время ожидания и риск отказа от заказа? Рекомендации:
- Ограничить количество ТК в корзине
- Убрать явно медленные ТК (среднюю скорось ответа серверов по каждой ТК можно можно посмотреть здесь)
- Чтобы пользователь понимал, что именно он ожидает, используйте осмысленное сообщение лоадера (настройка словаря
eshoplogistic3_loading_message
Внимание!
Начиная с версии 0.2.0 функционал вывода сообщений об обязательных полях для варианта «курьер»
и пункта самовывоза для варианта доставки до ПВЗ реализован в плагине eshoplogistic3 на событие msOnSubmitOrder.
Текст сообщения можно менять через словарь по ключам eshoplogistic3_need_address_message и eshoplogistic3_need_pvz_message .
Для этого можно воспользоваться функциями обратного вызова виджета.
Создадим скрипт, который будет слушать и реагировать на события выбора варианта доставки в виджете. В приведённом ниже примере при выборе варианта "Самовывоз" блокируется кнопка отправки заказа и выводится стандартное сообщение браузера, если пункт самовывоза не выбран.
document.addEventListener('DOMContentLoaded', () => {
const eslWidget = document.getElementById('eShopLogisticWidgetCart'),
btnOrder = document.querySelector('button[value="order/submit"]')
if(eslWidget && btnOrder) {
eslWidget.addEventListener('eShopLogisticWidgetCart:onSelectedService', (event) => {
//console.log('Событие onSelectedService', event.detail)
if(event.detail.typeDelivery === 'terminal') {
if(typeof event.detail.terminal === 'object') {
btnOrder.disabled = false
}
else {
btnOrder.disabled = true
alert('Не забудьте выбрать пункт самовывоза')
}
} else {
btnOrder.disabled = false
}
})
}
})
Для этого нужно внести небольшое дополнение в код процессора
core/components/minishop2/processors/mgr/orders/getlist.class.php.
В начало кода метода prepareArray добавьте следующие строки:
if(isset($data['delivery']) && !empty($data['properties'])) {
if($properties = json_decode($data['properties'],1)) {
if(is_array($properties)) {
if(!empty($properties['eshoplogistic3_data']['service']['name'])) {
$data['delivery'] = $properties['eshoplogistic3_data']['service']['name'].', '.$data['delivery']; // добавит название выбранной ТК перед названием способа доставки
}
}
}
}
Создадим плагин на событие msOnSubmitOrder:
switch ($modx->event->name) {
case 'msOnSubmitOrder':
$order_data = $order->get();
if(isset($order_data['delivery'])) {
$delivery = $modx->getObject('msDelivery', $order_data['delivery']);
if($delivery->class == 'eShopLogisticHandler') {
if(empty($order_data['eshoplogistic3_data'])) {
$modx->event->output('Пожалуйста, выберите подходящий вариант доставки');
}
}
}
break;
}
# Поддержка
Если у вас возникли какие-либо проблемы с подключением модуля или что-то не устраивает в работе сервиса eShopLogistic, вы всегда можете обратиться за поддержкой:
- написав обращение в соответствующем разделе личного кабинета eShopLogistic;
- написав в поддержку модуля через форму modstore.pro;
- отправив письмо на адрес support@eshoplogistic.ru.
# Changelog
0.3.6-pl
==============
16-10-2025
- добавлен параметр from в виджет корзины (возможность изменять город-отправитель)
- добавлено системное событие eshoplogistic3OnBeforeAPIQuery
0.3.5-pl
==============
24-09-2025
- уточнение ошибок выгрузки заказа для СДЭКа
- добавлена пауза перед проверкой выгруженного в СДЭК заказа для предотвращения блокировки запроса на стороне СДЭКа
0.3.4-pl
==============
11-07-2025
- в данные получателя заказа добавлен электронный адрес (в режиме автовыгрузки)
0.3.3-pl
==============
10-04-2025
- исправлена ошибка выгрузки заказа в СДЭК
0.3.2-pl
==============
10-04-2025
- в данные получателя заказа добавлен электронный адрес
0.3.1-pl
==============
10-04-2025
- исправлена ошибка указания веса объединённого грузового места при выгрузке заказа
0.3.0-pl
==============
15-01-2025
- исправлена ошибка объединения грузовых мест при выгрузке заказа
0.2.9-pl
==============
30-10-2024
- добавлено системное событие eshoplogistic3OnAfterAPIQuery
- добавлены параметры объединения грузовых мест для СДЭКа и Boxberry
0.2.8-pl
==============
29-10-2024
- подстановка варианта оплаты при выгрузке
- корректировка номера заказа для автовыгрузки
0.2.7-pl
==============
17-10-2024
- добавлен callback onBalloonOpen
0.2.6-pl
==============
04-10-2024
- исправлены css стили
0.2.5-pl
==============
11-09-2024
- исправление события msOnSubmitOrder в плагине eshoplogistic3
0.2.4-pl
==============
07-08-2024
- уточнено определение IP-адреса посетителя
0.2.3-pl
==============
08-07-2024
- исправлена передача артикула вместо идентификатора товара при выгрузке в кабинеты ТК
0.2.2-pl
==============
05-07-2024
- улучшена работа с индексом получателя при выгрузке заказа (для Почты России)
0.2.1-pl
==============
03-07-2024
- исправлено при выгрузке в кабинет ТК: количество товаров в заказе при выгрузке
- исправлено: сумма заказа при выгрузке
- исправлено: номер заказа вместо id при выгрузке
0.2.0-pl
==============
11-06-2024
- исправлена ситуация с зависанием, когда НП не может быть определён автоматически
- добавлено сообщение о необходимости указания адреса для курьера и пункта самовывоза для варианта доставки до ПВЗ
- исправлено определение типа оплаты в eshoplogistic3.js
0.1.9-pl
==============
20-05-2024
- дополнительные настройки для автовыгрузки (контроль выгрузки в СДЭК + уточнения)
0.1.8-pl
==============
14-05-2024
- исправлены ошибки для автовыгрузки
0.1.7-pl
==============
14-05-2024
- добавлен учёт дефолтных ВГХ для ручной выгрузки заказа
0.1.6-pl
==============
24-04-2024
- исправлены ошибки
0.1.5-pl
==============
23-04-2024
- + добавлена автоматическая выгрузка заказов
0.1.4-pl
==============
17-04-2024
- + исправлена ошибка в чанке tpl.eshoplogistic3.orderInfo
- + исправлена ошибка в js (получение offers)
0.1.3-pl
==============
01-03-2024
- + исправлена ошибка загрузкой данных заказов, сделанных до версии 0.1.2
0.1.2-pl
==============
29-02-2024
- + исправлена ошибка с обновлением чанков
0.1.1-pl
==============
28-02-2024
- + исправлена ошибка с установкой веса и габаритов по умолчанию из настроек в кабинете my.eshoplogistic.ru
0.1.0-pl
==============
21-02-2024
- + добавлен учёт веса и габаритов по умолчанию из настроек в кабинете my.eshoplogistic.ru
- + исправлена ошибка с указанием количества товара при создании места
0.0.9-pl
==============
15-02-2024
- + добавлена обработка индекса отправителя и получателя
0.0.8-pl
==============
13-01-2024
- + доработана логика js, добавлен параметр eshoplogistic3_default_delivery_id
- + дополнительная обработка ошибки запросов к API
0.0.7-pl
==============
19-12-2023 исправлена установки города доставки при запуске сниппета eshoplogistic3Order + добавлен параметр region
0.0.6-pl
==============
01-12-2023 исправлена ошибка ключа esl в properties msOrder
0.0.5-pl
==============
15-11-2023 адаптация под изменения в последних версиях minishop2
0.0.4-beta
==============
06-07-2023 добавлен partner_key
0.0.3-beta
==============
23-06-2023 добавлена проверка на доступность msDeliveryInterface
0.0.2-beta
==============
13-06-2023 добавлена выгрузка заказов в кабинете "Деловые Линии"
0.0.1-beta
==============