
Чекаут и сниппеты
Разметка
В чанк оформления заказа:
[[!msydLexiconScript]]
[[!msYandexDelivery]]
<div data-msyd-widget></div>{'!msydLexiconScript' | snippet}
{'!msYandexDelivery' | snippet}
<div data-msyd-widget></div>Сниппет msYandexDelivery подключает CSS/JS чекаута и конфиг window.msYandexDeliveryFrontend. Скрипт CDN виджета ПВЗ грузится по требованию, когда активен тариф self_pickup. Контейнер data-msyd-widget скрыт, пока не выбран способ доставки Яндекса.
Чанк tplYandexDeliveryMethods — обёртка <div class="msyd-methods" data-msyd-methods> для списка методов.
Сниппет msYandexDelivery
Назначение: зарегистрировать assets и конфиг фронта. Возвращает пустую строку.
| Параметр | По умолчанию | Описание |
|---|---|---|
connectorUrl | {assets_url}components/msyandexdelivery/connector.php | URL AJAX-коннектора |
widgetScriptUrl | из msyandexdelivery_widget_script_url или CDN v2 | URL скрипта виджета |
city | из резолва города | Фиксированное имя города для карты. Для витрины надёжнее &geoId= |
geoId | из msyandexdelivery_widget_geo_id | geo_id центра карты. Алиас: geo_id |
height | из msyandexdelivery_widget_height | Высота виджета, px (минимум 200) |
Приоритет города карты:
&city=&geoId=/widget_geo_id- Город из адреса черновика заказа
widget_city- Москва (
213)
Пример для витрины в СПб:
[[!msYandexDelivery?
&geoId=`2`
&height=`500`
]]{'!msYandexDelivery' | snippet : [
'geoId' => 2,
'height' => 500,
]}Сниппет msydLexiconScript
Без параметров. Выводит window.msydLexicon с ключами фронта (подписи тарифов, кнопки, подсказки). Вызывайте до msYandexDelivery.
Поведение на чекауте
- Покупатель выбирает способ доставки Яндекса в MiniShop3.
- Блок
data-msyd-widgetпоказывает панель до двери (time_interval) или карту ПВЗ (self_pickup) по тарифу выбранногоmsDelivery. - До двери: адрес из
form.ms3_order_form→connector.php?action=calculate→select_option. - ПВЗ: официальный виджет → событие
YaNddWidgetPointSelected→calculate+select_optionсplatform_station_id. - Выбор уходит в сессию и в
msOrder.properties.msyandexdelivery(tariff, platform_station_id, address, price, delivery_days). - Плагин на
msOnGetDeliveryCostиYandexDelivery::getCost()подставляют стоимость. При сохранении опцииdelivery_costсинхронизируется изoption.price, а tariff выравнивается поdelivery_id.
Публичные actions коннектора (без mgr-auth): calculate, select_option, list_pickup_points.
Связка с формой MS3
yandexdelivery.js слушает:
ms3Hooks.addHook('afterAddOrder', …)при смене доставки и полей адреса (регистрация с retry, покаms3Hooksне загрузился)- событие
ms3:readyпри открытии чекаута changeиinputна полях адреса формы
Перед «Рассчитать» виджет читает адрес из формы. Если адрес в форме есть, а виджет просит указать адрес, проверьте класс ms3_order_form, загрузку ms3.js и свежий ?v= у JS сниппета.
Виджет ПВЗ

Скрипт по умолчанию: https://widget-pvz.dostavka.yandex.net/widget.js?v=2.
CDN-виджет показывает prod-каталог точек. Test API (b2b.taxi.tst.yandex.net) знает только часть московских станций. Если карта отдала точку, которой нет в test API, сервис пробует сопоставить адрес через pickup-points/list. Иначе покупатель увидит сообщение о расхождении каталогов.
ID ПВЗ с виджета часто приходит с дефисами. Platform API для части точек ждёт id без дефисов. Нормализация: MsYandexDelivery\Support\StationId::normalize().
Откуда взять geoId
Это geo_id региона/города из location/detect, не id ПВЗ и не id склада.
Частые значения: Москва 213, Санкт-Петербург 2, Казань 43, Екатеринбург 54, Новосибирск 65.
