Skip to content
msYandexDelivery
msYandexDelivery
Доставка через Yandex Delivery Platform API (other-day) для MiniShop3 — расчёт, ПВЗ, заявки в менеджере
  1. Компоненты
  2. msYandexDelivery
  3. Заявки и менеджер

Заявки и менеджер

Жизненный цикл

  1. На чекауте выбор сохраняется в properties.msyandexdelivery.
  2. В менеджере на вкладке заказа вы вызываете Create → Platform offers/create.
  3. Confirmoffers/confirm с offer_id.
  4. Refresh statusrequest/info.
  5. Отменитьrequest/cancel (пока заявка ещё не у курьера).

Push-уведомлений (webhook) нет. Other-day API их не даёт. Статус обновляйте опросом вручную или пакетно.

Данные заявки хранятся в таблице msyandex_requests (модель msydRequest) и в properties заказа.

Вкладка заказа MiniShop3

Вкладка Yandex Delivery на карточке заказа

Плагин msYandexDelivery Manager order tab на msOnManagerCustomCssJs (страница заказа) регистрирует вкладку через MS3OrderTabsRegistry. Нужен VueTools.

На вкладке: статус, offer/request id, цена, tracking, кнопки Create / Confirm / Refresh / Cancel.

Кнопка Отменить доступна после подтверждения заявки и до передачи посылки курьеру. Недоступна для завершённых заявок (доставлена, отменена, возвращена, ошибка), заказа в пункте выдачи, возврата и статуса «Едет к получателю». После успешной отмены на вкладке будет «Отменена».

Опрос статусов

Пакетный опрос подтягивает актуальные статусы из Яндекс Доставки для активных заявок. Завершённые (доставлена, отменена, возвращена, ошибка) пропускаются. В первую очередь обновляются заявки, которые давно не синхронизировались.

После каждого изменения статус сохраняется в карточке заказа MiniShop3. Чтобы автоматически менять статус заказа или слать уведомления, подключите плагин на событие смены статуса (см. ниже).

Scheduler

Файл задачи: core/components/msyandexdelivery/elements/tasks/sync_statuses.php

  1. Установите Scheduler или аналог.
  2. Создайте File task на этот путь.
  3. Интервал 15–30 минут.
  4. В свойствах задачи можно задать limit. Иначе берётся msyandexdelivery_sync_poll_limit.

Cron без Scheduler

Задайте длинный msyandexdelivery_sync_secret и вызовите коннектор:

bash
curl -sS 'https://example.com/assets/components/msyandexdelivery/connector.php?action=sync_statuses&secret=YOUR_SECRET'

Работает и через POST. Без секрета и без сессии менеджера ответ unauthorized. Если вы уже вошли в менеджер, action=sync_statuses можно без секрета.

Плагин на смену статуса

php
<?php
/** @var modX $modx */
switch ($modx->event->name) {
    case 'msYandexDeliveryOnStatusChange':
        $orderId = (int) ($modx->event->params['order_id'] ?? 0);
        $normalized = (string) ($modx->event->params['normalized_status'] ?? '');
        // например сменить статус MS3 при delivered
        break;
}

Подпишите плагин на событие. MODX создаст имя при первом invokeEvent, либо добавьте msYandexDeliveryOnStatusChange в Events пакета.

Connector

Единая точка: assets/components/msyandexdelivery/connector.php.

actionКонтекстНазначение
calculatewebРасчёт стоимости
select_optionwebСохранить выбор (нужен ms3_token)
list_pickup_pointsweb / mgrСписок ПВЗ
get_order_summarymgrСводка по заказу
create_requestmgrСоздать offer
confirm_requestmgrПодтвердить offer
refresh_statusmgrОбновить статус
cancel_requestmgrОтменить заявку
sync_statusesmgr или secretПакетный опрос активных заявок

Platform API (клиент)

Базовый host: msyandexdelivery_base_url. Пути клиента:

МетодPath
POST/api/b2b/platform/pricing-calculator
POST/api/b2b/platform/offers/create
POST/api/b2b/platform/offers/confirm
GET/api/b2b/platform/request/info
GET/api/b2b/platform/request/actual_info
GET/api/b2b/platform/request/history
POST/api/b2b/platform/request/cancel
POST/api/b2b/platform/location/detect
POST/api/b2b/platform/pickup-points/list

Сервис: MsYandexDelivery\Service\YandexDeliveryService. HTTP: MsYandexDelivery\Api\YandexPlatformClient.

Плагины

ПлагинСобытия
msYandexDelivery AutoloadOnMODXInit (priority -100)
msYandexDelivery DeliverymsOnGetDeliveryCost
msYandexDelivery Order persistmsOnSubmitOrder, msOnBeforeCreateOrder, msOnCreateOrder
msYandexDelivery Manager order tabmsOnManagerCustomCssJs