msYandexDelivery

Яндекс Доставка для MODX Revolution 3 и MiniShop3
Автор дополнения
Иван Бочкарев
Пакетов
34
Закачек
231
Обычно отвечает в течение суток
Автор дополнения
Пакетов
34
Закачек
231
Обычно отвечает в течение суток
Версия 1.0.1-pl
Дата выпуска 26.08.2026
Загрузки 0
Просмотры 64
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
msYandexDelivery — Яндекс Доставка для MODX Revolution 3 и MiniShop3

msYandexDelivery связывает магазин на MiniShop3 с Yandex Delivery Platform API («Доставка по России», other-day): расчёт на чекауте, карта ПВЗ v2, заявки из карточки заказа. Статусы через request/info, Scheduler или cron. У API нет push-webhook.


На чекауте покупатель выбирает доставку до двери или пункт выдачи. Менеджер работает с заявкой во вкладке заказа MS3: create, confirm, refresh, cancel.


Кому подойдёт
  • нужна Яндекс Доставка в MiniShop3 без правок ядра магазина
  • есть договор и Bearer-токен, platform_station_id склада отправителя
  • на чекауте нужны и курьер до адреса, и выбор ПВЗ на карте
  • заявки удобнее вести из карточки заказа, а не из отдельного CMP

Чекаут
  • Сниппеты msYandexDelivery, msydLexiconScript, контейнер
  • Установщик создаёт два способа доставки MS3: до двери и ПВЗ, класс msyandexdelivery\Delivery\YandexDelivery
  • Дверь: адрес из формы MS3, кнопка «Рассчитать», pricing-calculator
  • ПВЗ: официальный виджет v2 (widget-pvz.dostavka.yandex.net), событие YaNddWidgetPointSelected
  • Виджет слушает ms3Hooks.afterAddOrder, ms3:ready и поля адреса в form.ms3_order_form
  • Настройка msyandexdelivery_delivery_id привязывает виджет к ID доставок в MS3

Вкладка заказа
  • Yandex Delivery на карточке заказа MS3 (нужен VueTools)
  • Create → Confirm → Refresh → Cancel
  • «Пересоздать заявку», если есть offer_id без request_id
  • Данные в properties.msyandexdelivery и таблице msyandex_requests

Настройки
  • msyandexdelivery_base_url, oauth_token, platform_station_id
  • msyandexdelivery_widget_geo_id, высота карты, типы точек на карте
  • msyandexdelivery_environment (test/prod) только для подсказок в UI, host API не меняет
  • Публичный calculate не отдаёт raw_response Яндекса. list_pickup_points только для менеджера

Скриншоты




Быстрый старт
  1. Extras → Installer → установите msYandexDelivery с modstore.pro
  2. В namespace msyandexdelivery задайте base_url, токен и platform_station_id
  3. На шаблон чекаута: {'!msydLexiconScript' | snippet}, {'!msYandexDelivery' | snippet},
  4. Проверьте расчёт до двери и выбор ПВЗ. Оформите тестовый заказ, откройте вкладку заказа

{'!msydLexiconScript' | snippet}
{'!msYandexDelivery' | snippet}
<div data-msyd-widget></div>

Требования
  • MODX Revolution 3.0.3+
  • PHP 8.2+
  • MiniShop3
  • VueTools для вкладки заказа в менеджере

Документация API Яндекса: yandex.com/support/delivery-profile/ru/api/other-day/

Changelog - msYandexDelivery

Format: Keep a Changelog Versioning: Semantic Versioning

[1.0.1-pl] - 2026-08-26

Исправления после тестов чекаута и сверки заказов на стенде MiniShop3.

Fixed

  • Чекаут: хук MS3 afterAddOrder регистрируется через ms3Hooks.addHook (раньше не подключался).
  • Адрес из формы MS3: слушатели change и input, синхронизация на ms3:ready и перед «Рассчитать».
  • Fallback-адрес на тест-стенде подставляется только если поле виджета пустое.
  • Cache-busting для yandexdelivery.min.js в сниппете и плагине вкладки (?v=filemtime).
  • delivery_cost совпадает с properties.msyandexdelivery.price при сохранении опции.
  • tariff берётся из delivery_id заказа, door и ПВЗ не смешиваются в properties.
  • YandexDelivery::getCost(): tariff из ID доставки MS3, иначе price из option.
  • Карта ПВЗ: если тег widget.js уже в DOM, скрипт дожидается YaDelivery. В params карты передаётся geo_id.
  • Виджет на ms3-delivery-widgets-test: при MS3_DELIVERY_WIDGETS_TEST и пустом delivery_id показывается переключатель тарифов, smoke delivery_id для пустой корзины.
  • create_request: ответ только с request_id (без offers[]) обрабатывается как уже подтверждённая заявка, статус через request/info.
  • Вкладка заказа: кнопка «Пересоздать заявку» при offer_id без request_id.

Changed

  • Дефолты настроек без тестового Bearer и склада. environment по умолчанию prod.
  • Публичный calculate не отдаёт raw_response Яндекса.
  • list_pickup_points только для менеджера.
  • Убраны тестовые fallback-адреса на чекауте и console.warn во вкладке заказа.

Upgrade

  • Обновите пакет через Extras → Installer (modstore.pro) и очистите кэш MODX.
  • Заказы с delivery_cost = 0 и непустой price в properties не пересчитываются. На новых заказах расхождение не воспроизводится.
  • Подробности в readme.txt, секция «Обновление с 1.0.0-pl».

[1.0.0-pl] - 2026-08-21

Первый релиз msYandexDelivery для MODX 3 и MiniShop3.

Added

  • Yandex Delivery Platform API («Доставка по России»): расчёт, создание и подтверждение заявки, статус через request/info. У other-day API нет push-webhook.
  • Установщик создаёт два способа доставки (до двери и ПВЗ), класс YandexDelivery, плагины расчёта и сохранения выбора на чекауте.
  • Чекаут: сниппеты msYandexDelivery и msydLexiconScript, форма до двери, карта ПВЗ v2. В connector: calculate, select_option, list_pickup_points.
  • Вкладка заказа в менеджере: create, confirm, refresh, cancel. Статусы через Scheduler или connector sync_statuses.
  • Таблица msyandexrequests, блок properties.msyandexdelivery в заказе, настройки msyandexdelivery*, лексиконы ru и en.

Requirements

  • PHP 8.2+, MODX 3.x, MiniShop3, VueTools для вкладки заказа.

Последние обсуждения в сообществе MODX.pro