CMS: Opencart 2.3.0.2
Предлагается разделить интеграцию сайта с API «Маршрут» на функциональные блоки, в соответствии с возможностями и функциями, поддерживаемыми API.
Мы видим реализацию блоков как отдельные модули (подмодули) для cms, управление которыми осуществляется из админки сайта. Однако, готовы обсудить все возможные варианты реализации.
Блок 1. Склад
В API раздел «Склад» - «Получить товары и остатки».
Возможность актуализации количества товара на сайте в соответствии с наличием товара, готового к продаже на складе компании «Маршрут».
Требования к функционалу:
- Модуль позволяет автоматически (например, настройкой cron) и в ручном режиме формировать запрос к серверу компании «Маршрут» и получать перечень доступного к продаже товара.
В API: cnt | Свободный остаток на складе
Раздел | data | object array | |
Поле | Тип данных | Пример заполнения | Описание поля |
stock_a | integer | Кол-во годного товара | |
stock_q | integer | Кол-во товара в карантине склада | |
stock_d | integer | Кол-во поврежденного товара | |
cnt | integer | Свободный остаток на складе |
- Модуль осуществляет поочередное сравнение полученных данных по «item_id» в API (Идентификатор товара ИМ) с полем «Модель» товара в БД сайта.
- При совпадении значений указанных полей – корректируется кол-во доступного товара на сайте.
- Иначе, если какой-то полученный идентификатор «item_id» не совпадает ни с одним из значений поля «Модель» товара в БД сайта – соответствующее сообщение отображается в логе.
Дополнительно в логе отражается кол-во полученных «item_id» и количество измененных полей «Модель» товара, а также ошибки, которые могут возникнуть при обмене.
Блок 2. Доставка
В API раздел «Доставка» - «Расчет стоимости доставки» и «Полный список ПВЗ»
- На сайте используется модуль GeoIP для определения региона пользователя по IP-адресу (база ФИАС).
- На сайте используется модуль Simple для представления страницы оформления доставки/оплаты.
https://opencartforum.com/files/file/324-modul-simple-uproschennaya-registraciya-i-zakaz/
https://opencartforum.com/files/file/888-opredelenie-goroda-po-ip-geo-ip/
Возможность получения с сервера «Маршрут» возможных вариантов доставки заказа и стоимости доставки в выбранный клиентом регион.
Возможность вносить наценку на каждый из вариантов доставки.
Полученные варианты доставки отображаются клиенту в зависимости от возможности доставки (предлагает API «Маршрут» в зависимости от адреса) и выбранных и настроенных «географических зон» в cms.
Необходимо иметь возможность отключения/включения некоторых вариантов доставки для определенных регионов.
Например: для Москвы – отображать помимо стандартного самовывоза, доставку курьером «Маршрут» и самовывоз Boxberry, IML.
Принцип реализации представлен в API, частично описан на странице компании «Маршрут» в github: https://github.com/marschroute/html-widget
Желательна классическая реализация выбора способа доставки для Opencart и Simple:
Для варианта доставки «Почта РФ», «Почта РФ наложенный платеж», «КазПочта», «Курьерская служба» необходимо подхватывать значения полей улица, индекс, дом, стр/корп, кв/оф и комментария из соответствующих полей opencart (simple).
Для варианта доставки «Курьерская служба Маршрут» необходимо выводить обязательное поле «дата и время доставки»:
Для вариантов доставки «Самовывоз» и «Курьерская служба Маршрут» в письме об успешном совершении заказа необходимо выводить поле с дополнительными данными о выбранной доставке: Адрес ПВЗ, дату забора заказа и дополнительную информацию.
Реализация возможности выбора ПВЗ с помощью API яндекс, как это реализовано на виджите.
Отсутствие лого «Marschroute» | либо использование лого Интернет-магазина.
Расчет массы и габаритов заказа и передача в запросе API для определения точной стоимости доставки.
Необходимо предусмотреть возможность задать способ оплаты в зависимости от выбранного метода доставки (посредством simple).
Например:
- Для СДЭК возможно оплатить заказ при получении наличными;
- Для почты РФ доступен наложенный платеж (за наценку).
Блок 3. Заказы
В API раздел «Заказы» - «Передать заказ», «Статусы заказов», «Данные заказа»
Передача заказа на сервер «Маршрут» осуществляется с необходимыми заполненными полями, представленными в API с дополнительным параметром: «Не собирать и не отгружать заказ со склада до дополнительного подтверждения».
Раздел | order[options] | object | |||
Поле | Тип данных | Пример заполнения | Описание поля | Проверки | Действия по ошибкам |
manual_confirm | integer | Не собирать и не отгружать заказ со склада до дополнительного подтверждения | Возможные значения: 1, 0 | Подтверждение не требуется |
Оператор магазина связывается с клиентом, подтверждает заказ в ЛК отправляя в работу, либо отменяет.
Задачи, описанные ниже носят второстепенный характер – просьба оценить трудозатраты по ним отдельно.
Создание заказа на сайте и получение его данных, если он оформлен вручную из ЛК «Маршрут» - тут необходима консультация по возможности реализации подобного варианта средствами API.
Актуализация статусов заказов на сайте происходит автоматически (например, настройкой cron) и в ручном режиме.
- Модуль осуществляет изменение поля «Статус заказа» товара в БД сайта в соответствии с полученными параметрами поля «id» заказа API.
Используемые статусы заказов «Маршрут» представлены в файле – «Соответствие статусов в ЛК и АПИ.xlsx»
При получении статуса заказа «Отгружено на почту» происходит запрос «post_barcode» (API-Данные заказа) - при изменении статуса на сайте добавляется комментарий с текстом, содержащий почтовый идентификатор из поля «post_barcode».
При получении статуса заказ «Принят перевозчиком» происходит периодический запрос (раз в сутки) «sms» -> «Date, text» (API - Данные по контактам с клиентом) и при изменении статуса на сайте добавляется комментарий с текстом, содержащим время и текст смс-уведомления клиенту из указанных полей.
Обновление всех статусов на сайте заканчивается при достижении статусов: 35 Отказ, 36 Возврат, 50 Выполнен, 51 Компенсирован.