Подключение магазина на MODX Revolution + miniShop2 к ILFF
Смотрите также: Виджет доставки для корзины · API ILFF · Все модули для CMS
Скачать модуль ilff-1.0.0-pl.transport.zip
Модуль «ILFF» связывает ваш магазин на MODX Revolution с miniShop2 с сервисом ILFF:
- в оформлении заказа появляются способы доставки ILFF: курьер до двери, пункт выдачи с выбором на карте и Почта России, с ценой и сроком;
- заказ с доставкой ILFF сам уходит в ILFF, когда получает выбранный вами статус;
- трек-номер и статус заказа возвращаются в магазин;
- остатки и вес товаров передаются из ILFF в магазин;
- отмена заказа в магазине отменяет заявку в ILFF.
Обмен всегда начинает магазин: модуль сам обращается к сервису ILFF по ключу API, открывать магазин для нас не нужно.
Нужны:
- MODX Revolution 2.8 (MODX 3 пока не поддерживается: miniShop2 4 работает только на MODX 2);
- miniShop2 4 и pdoTools (ставятся вместе с miniShop2);
- PHP 7.2 или новее с расширением curl (проверено на PHP 8.2);
- валюта магазина — российский рубль: ILFF считает доставку и суммы заказа в рублях;
- оформление заказа сниппетом
msOrder(стандартное оформление miniShop2, подробнее — в шаге 4); - доступ к админке MODX с правами администратора, к cron сервера (или хостинга) и к личному кабинету ILFF.
Подключение занимает 20–30 минут.
Шаг 1. Подключение в личном кабинете ILFF
Личный кабинет → вкладка Интеграции → раскройте блок Интернет-магазин.
- Платформа — выберите MODX (miniShop2).
- Адрес магазина — адрес сайта, например
shop.ru. - Флажок Заказ с несвязанным товаром ждёт привязки: если он включён, заказ с товаром, который ещё не связан с вашим товаром в ILFF, не принимается, пока вы его не свяжете (шаг 6). Рекомендуем оставить флажок включённым.
- Нажмите Подключить. Кабинет создаст подключение. К магазину он при этом не обращается: связь проверит модуль на шаге 3.
Вверху вкладки Интеграции показан Ключ API. Если его нет, нажмите Сгенерировать. Ключ понадобится на шаге 3. Никому его не пересылайте: по нему сервис ILFF узнаёт ваш магазин. Там же — код клиента для виджета выбора пункта; добавьте домен магазина в список доменов виджета.
Шаг 2. Установка модуля
- Скачайте пакет
ilff-1.0.0-pl.transport.zipсо страницы модуля на сайте ILFF или получите его у менеджера. Распаковывать пакет не нужно. - В админке MODX откройте Пакеты → Установщик, нажмите стрелку рядом с кнопкой Загрузить пакеты → Загрузить пакет, выберите файл и нажмите Загрузить.
- В списке пакетов у строки ilff нажмите Установить и подтвердите установку.
Установщик сам:
- создаёт таблицу очереди заказов;
- добавляет плагин ILFF, системные настройки ILFF и пункт меню Приложения → ILFF;
- создаёт три способа доставки miniShop2: Курьер ILFF, Пункт выдачи ILFF, Почта России (ILFF) — и разрешает для них все включённые способы оплаты.
Шаг 3. Настройки модуля
Настройки → Системные настройки, в фильтре пространства имён выберите ilff. Значение меняется двойным щелчком по ячейке.
Подключение
- Ключ API ILFF — ключ из шага 1.
- Адрес сервиса ILFF — уже заполнен, менять не нужно.
- Код клиента для виджета — код из личного кабинета. Без кода выбор пункта выдачи на карте не работает и способ «Пункт выдачи ILFF» не рассчитывается.
- Вариант настроек калькулятора — код варианта из личного кабинета ILFF, например
site2, если для этого сайта заведены свои настройки доставки. Пусто — настройки по умолчанию. Пороги бесплатной доставки («Бесплатно для получателя от суммы товаров») задаются в личном кабинете ILFF: когда сумма товаров дошла до порога, модуль показывает доставку как «Бесплатно». - Адрес подсказки городов — необязательно. Пусто — берётся с сервиса ILFF рядом с адресом сервиса.
Заказы и статусы. Статусы и способы оплаты указываются номерами (ид) из Магазин → Настройки (вкладки «Статусы» и «Способы оплаты»), несколько — через запятую:
- Статусы отправки заказа в ILFF — по умолчанию
2(«Оплачен»). Заказ уходит при переходе в этот статус. Если вы проверяете заказ вручную, укажите статус, в который переводите заказ после проверки. - Статусы отмены — по умолчанию
4(«Отменён»). Переход отправленного заказа в такой статус отменяет заявку в ILFF. - Способы оплаты при получении — по умолчанию
1. Такие заказы уходят в ILFF с наложенным платежом, остальные считаются предоплаченными.
Статусы заказа по статусам ILFF. Пусто — статус заказа не меняется:
| Настройка | Статусы ILFF | По умолчанию |
|---|---|---|
| Статус «Передан в доставку» | Передан в КС | 3 («Отправлен») |
| Статус «Доставлен» | Доставлен клиенту, Выдан, Частичная выдача | не менять |
| Статус «Отменён» | Отменен, Аннулирован | 4 («Отменён») |
| Статус «Возврат» | Возврат принят, Полный отказ | не менять |
Статуса «Доставлен» в miniShop2 по умолчанию нет: добавьте его на вкладке «Статусы» и укажите его номер. Письма покупателю при смене статуса отправляет miniShop2 по настройкам самого статуса.
Остатки и вес
- Получать остатки из ILFF — в поле «Остаток» товара записывается свободный остаток: остаток на складе ILFF за вычетом резерва и заказов, которые ещё не дошли до ILFF. Товар в зоне приёмки склада в остаток не входит, пока его не разместили.
- Получать вес товаров из ILFF — вес, измеренный на складе ILFF, записывается в поле «Вес» товара (в килограммах), только там, где он у нас заполнен.
- Получать вес и габариты заказа — вес, габариты и число мест собранного заказа сохраняются в свойствах заказа.
После настройки откройте Приложения → ILFF и нажмите Проверить связь: появится «Связь с ILFF есть». Затем нажмите Передать товары в ILFF: товары уйдут в ILFF для привязки (шаг 6).
Шаг 4. Способы доставки и оформление заказа
Способы доставки. Магазин → Настройки → Доставка:
- Курьер ILFF — доставка до двери самой дешёвой службой с ценой и сроком, например «Курьер ILFF — 603 ₽, СДЭК (от 2 до 3 дней)». Если покупатель выбрал службу на вкладке «Курьер» виджета, считается она.
- Пункт выдачи ILFF — пункты выдачи, постаматы и отделения Почты России с выбором на карте.
- Почта России (ILFF) — Почта по адресу покупателя (посылка в отделение по индексу или курьер Почты), если сервис ILFF считает Почту для вашего магазина.
Название, описание, порядок и логотип способа можно менять; поля Класс-обработчик (ilffDeliveryHandler) и Свойства ({"ilff":"door"}, {"ilff":"pickup"}, {"ilff":"post"}) не меняйте — по ним модуль понимает, что это доставка ILFF. Ненужный способ выключите. Цену, «Стоимость за единицу веса» и «Бесплатно от» у способов ILFF не заполняйте: цену считает ILFF. В поле Обязательные поля указаны поля оформления, без которых способ не рассчитать; добавлять их можно, убирать город не нужно. Способы доставки магазина с фиксированной ценой выключите, если доставку выполняет ILFF.
Оформление заказа. Модуль работает со стандартной страницей оформления: ресурс со сниппетом [[!msOrder]] и формой #msOrder из чанка miniShop2 (поля «Город», «Область», «Индекс», список способов доставки #deliveries с полями delivery). На такой странице модуль сам подключает свой скрипт и стили. В шаблоне сайта должен быть подключён jQuery (его использует и miniShop2). Если форма оформления у вас переделана, сохраните у способов доставки поле <input name="delivery" id="delivery_<номер>"> внутри <label> и поля адреса с теми же именами.
Шаг 5. Что видит покупатель
- Покупатель заполняет город (и, если есть, область и индекс). Цена курьера и пунктов выдачи считается по городу, улица в расчёт не идёт: она уходит в ILFF вместе с заказом. Цены у способов ILFF обновляются после изменения города, области или индекса.
- Курьер ILFF — цена, служба (срок).
- Пункт выдачи ILFF — выберите пункт на карте: от N ₽: до выбора пункта показывается нижняя граница цены по городу. Под способом — заметная синяя кнопка Выбрать пункт на карте. Выбор этого способа тоже сам открывает карту.
- В окне виджета ILFF покупатель выбирает пункт выдачи, постамат или отделение Почты на карте или в списке. После выбора под способом появляется адрес пункта, у способа — точная цена и срок, итог заказа пересчитывается. Кнопка под ним — Изменить пункт выдачи.
- На вкладке «Курьер» виджета можно выбрать службу курьера и ввести адрес: выберется способ «Курьер ILFF» этой службы, а адрес подставится в поле «Улица».
- Если покупатель сменил город, выбранный пункт сбрасывается, и способ снова предлагает выбрать пункт на карте.
- Оформить заказ с пунктом выдачи без выбранного пункта нельзя: появится сообщение «Выберите пункт выдачи». Если по адресу доставка ILFF не считается, у способа написано «не доставляем по этому адресу», и заказ с ним не оформится.
Если в городе покупателя нет пунктов выдачи или отделений Почты, виджет открывает карту в точке адреса и показывает ближайшие пункты соседних городов с расстоянием; цена считается до выбранного пункта.
Пункт выдачи, тариф и код пункта сохраняются в заказе. Оформите пробный заказ с доставкой ILFF, переведите его в статус отправки и убедитесь, что заказ пришёл в ILFF.
Шаг 6. Привязка товаров
В личном кабинете ILFF кнопка Товары магазина в блоке «Интернет-магазин» показывает товары магазина, переданные модулем, и их связь с вашими товарами в ILFF. Связь подбирается сначала по штрихкоду, затем по артикулу:
- штрихкод — ТВ-параметр
ilff_barcode(илиbarcode,ean), если он есть у товаров. В miniShop2 нет поля штрихкода: создайте ТВilff_barcode(тип «Текст»), откройте ему доступ к шаблону товаров и заполните; - артикул — поле Артикул товара miniShop2.
| Статус | Что делать |
|---|---|
| Связан | Ничего, связь сохранена |
| Подобран | Проверьте и подтвердите |
| Несколько совпадений | Выберите нужный товар вручную |
| Не найден | Выберите товар вручную или заполните в магазине штрихкод или артикул |
Опции товара miniShop2 (цвет, размер) отдельными товарами в ILFF не передаются: если размеры — это разные товары на складе, заведите их отдельными товарами магазина со своими артикулами.
Если заказ ждёт привязки, вверху вкладки Интеграции появляется плашка с числом таких заказов, а в блоке «Интернет-магазин» — таблица с заказами и товарами. После привязки модуль досылает заказ сам.
Заказ в магазине
В окне заказа (Магазин → Заказы) на вкладке «Заказ» в поле Комментарий менеджера появляются записи «ILFF: создана заявка …», «ILFF: заказ ждёт привязки товаров …», «ILFF: трек-номер …» и ответ на отмену. Номер заявки ILFF, состояние обмена, статус ILFF, трек-номер со ссылкой, пункт выдачи и тариф хранятся в свойствах заказа (ключ ilff).
Отмена заказа
Переход заказа в статус отмены (шаг 3) отменяет заявку в ILFF, пока её не передали в службу доставки; собранный заказ вернётся на хранение. Если заявка уже у службы доставки, которая принимает отмену (Dalli, 5Post), отмена передаётся ей, а заказ возвращается на склад. У других служб заявка в работе сама не отменяется: в комментарии менеджера появится запись «ILFF: Заявка уже в работе…», свяжитесь с менеджером.
Задание cron
У MODX нет своего планировщика: добавьте задание в cron сервера (или в планировщик хостинга) раз в 15–60 минут, от пользователя, которому принадлежат файлы сайта. Точная команда — на странице Приложения → ILFF, например:
*/15 * * * * php /var/www/shop/core/components/ilff/cron/cron.php
Задание:
- досылает заказы, которые не ушли сразу (после сбоя связи или из ожидания привязки): через 1, 5, 15, 60 и 180 минут, но не чаще запуска задания;
- забирает трек-номера и статусы заказов: трек записывается в комментарий менеджера и свойства заказа, статус меняется по таблице из шага 3;
- обновляет остатки и вес;
- раз в сутки передаёт список товаров и сверяет все остатки.
Заказы уходят в ILFF сразу при смене статуса и без задания. Время последних запусков видно на странице Приложения → ILFF; там же кнопка Выполнить обмен сейчас.
Обновление модуля
Загрузите новый пакет так же, как при установке (Пакеты → Установщик → Загрузить пакет) и нажмите Установить у новой версии. Настройки, способы доставки, очередь заказов и данные заказов сохраняются.
Удаление модуля
Пакеты → Установщик → у строки ilff Удалить пакет. Плагин, настройки и пункт меню удаляются, способы доставки ILFF выключаются (не удаляются: на них ссылаются заказы), номера заявок, трек-номера и пункты выдачи в заказах остаются. Строку задания из cron сервера удалите сами.
Если что-то не работает
| Сообщение или симптом | Причина и решение |
|---|---|
| «Нет связи с ILFF: Неверный ключ API» | Ключ введён с ошибкой или заменён. Скопируйте ключ из личного кабинета в настройку «Ключ API ILFF» |
| «Нет связи с ILFF: В личном кабинете ILFF не подключён магазин» | Не выполнен шаг 1: выберите платформу MODX и нажмите «Подключить» |
| «Нет связи с ILFF: Сервис ILFF не ответил» | Сервер магазина не может обратиться к ILFF: проверьте исходящие соединения по HTTPS на порт 8443 (хостинг может их закрывать) и расширение curl в PHP |
| У способов ILFF нет цены, написано «укажите город доставки» | В форме не заполнен город, или поле города названо не city |
| У способов ILFF нет никаких надписей | Страница оформления без сниппета msOrder, не подключён jQuery, или в форме нет блока #deliveries; проверьте ключ API (без ключа модуль не подключает скрипт) |
| Нет кнопки «Выбрать пункт на карте» | Не указан код клиента для виджета (шаг 3) |
| Карта открывается, но пункты не загружаются | Домен магазина не добавлен в список доменов виджета в личном кабинете ILFF |
| «Не доставляем по этому адресу» | Службы ILFF не возят в этот город с вашими настройками доставки, или в адресе нет города |
| Заказ не пришёл в ILFF | Проверьте статус заказа и настройку «Статусы отправки заказа в ILFF», комментарий менеджера заказа (ошибка обмена) и блок «ждут привязки» в кабинете. Заказ должен быть со способом доставки ILFF |
| Трек-номер и статус не приходят | Не настроено задание cron: смотрите время последних запусков на странице Приложения → ILFF |
| Остаток в магазине не совпадает с остатком в кабинете | В магазин уходит свободный остаток: без резерва, неотправленных заказов и товара в приёмке |
| Цены доставки странные | Валюта магазина не рубль: модуль рассчитан на магазин в рублях |
Ошибки обмена модуль пишет в журнал ошибок MODX (Отчёты → Журнал ошибок, строки с [ILFF]) — без ключа API и данных покупателей. По остальным вопросам обращайтесь к вашему менеджеру ILFF.