Skip to content
msFastOrder
msFastOrder
Быстрый заказ в один клик через модальное окно для MODX 3 и MiniShop3
  • MODX 3
  • PHP 8.2
  • miniShop3
  1. Компоненты
  2. msFastOrder
  3. Начало работы
  4. Системные настройки

Системные настройки msFastOrder ​

Все ключи в пространстве имён msfastorder. В БД: префикс msfastorder_. Область в интерфейсе — msfastorder или msfastorder_main (зависит от версии транспорта).

Меняйте в Настройки → Системные настройки, фильтр msfastorder. Последовательность: Быстрый старт.

Основные ​

КлючТипПо умолчаниюОписание
msfastorder_methodтекстMSРежим: MS — заказ в MiniShop3; MAIL — только письмо менеджеру. Параметр сниппета &method= не читается PHP
msfastorder_required_fieldsтекстreceiver,phoneОбязательные поля на сервере (через запятую): receiver, phone, email, city, comment
msfastorder_email_managerтекст(пусто)Email менеджера в режиме MAIL. Цепочка: msfastorder_email_manager → ms3_email_manager → emailsender. Пустой итог — заказ MAIL не создаётся
msfastorder_phone_maskтекст+7 (999) 999-99-99Маска поля телефона в модалке (PhoneMask в JS)
msfastorder_success_redirectтекст(пусто)URL редиректа после успеха, если нет payment_link. При наличии payment_link — редирект на оплату через ~2 с

MiniShop3 (режим MS) ​

КлючТипПо умолчаниюОписание
msfastorder_payment_idчисло / текст0 или пустоID активного способа оплаты MS3. Для ЮKassa — ID «Оплата через ЮKassa»
msfastorder_delivery_idчисло / текст0 или пустоID способа доставки MS3
msfastorder_default_imageтекст/assets/components/minishop3/img/web/ms3_small.pngПревью товара в модалке, если у товара нет изображения

При установке резолвер может создать способы Fast Order Payment / Fast Order Delivery и записать ID в эти настройки.

Связанные настройки MiniShop3 ​

Ключ MS3Зачем
ms3_order_success_page_idСтраница «Спасибо» с просмотром заказа (msorder=uuid) для DefaultPayment
ms3_order_redirect_thanks_idЗапасная страница «Спасибо», если ms3_order_success_page_id пуст. Дальше запасной вариант — site_start
ms3_status_newСтатус нового заказа после быстрого оформления

Интерфейс и assets ​

КлючТипПо умолчаниюОписание
msfastorder_modal_libraryтекстnativeМодалка: native, bootstrap, fancybox
msfastorder_connector_urlтекст/assets/components/msfastorder/connector.phpURL AJAX (только POST)
msfastorder_assets_urlтекст/assets/components/msfastorder/База для css/msfo.min.css и js/msfo.min.js
msfastorder_copy_countда/нетДаКопировать количество со страницы в модалку. Нет — в модалке всегда 1 (msfoConfig.copyCount)

Сниппет всегда подключает msfo.min.css и msfo.min.js из msfastorder_assets_url. Свой CSS/JS — вручную в шаблоне. Отдельных ключей настроек нет.

Для bootstrap на странице нужен глобальный bootstrap.Modal. Для fancybox — window.Fancybox. Подключайте msfo.min.css после CSS Fancybox.

Телефон и префикс страны ​

КлючТипПо умолчаниюОписание
msfastorder_prefix_enabledда/нетНетВключить проверку кода страны на сервере
msfastorder_prefix_countryтекст7Код страны без +
msfastorder_prefix_lengthчисло11Длина номера для проверки префикса: если число цифр не совпало с этим значением, префикс не проверяется (ошибки нет). Общая длина 10–15 цифр по-прежнему допустима

Ограничение валидации префикса

msfastorder_prefix_length не отклоняет номера «не той» длины: при несовпадении длины проверка префикса пропускается. Это поведение текущего кода, не настройка «строгой длины».

Безопасность и отладка ​

КлючТипПо умолчаниюОписание
msfastorder_debugда/нетНетВ JSON-ответах connector при ошибках добавляется debug. Доступен action=rate-limit/reset. Отключает rate limit на order/create (удобно на тестовом стенде)
msfastorder_rate_limit_attemptsчисло5Лимит успешных order/create с одного IP за окно
msfastorder_rate_limit_windowчисло300Длина окна в секундах (5 минут)

CSRF: токен в $_SESSION['msfastorder.csrf_token'], в HTML — window.msfoConfig.csrfToken. Плагин msfastorder_web обновляет конфиг при OnWebPagePrerender, чтобы токен не «застывал» в кэше страницы. Подробнее: AJAX API.

Режим MS ​

  1. Создаётся заказ MiniShop3 с одной позицией (товар, количество, опции/variant_id).
  2. Покупатель заполняется из полей формы. При пустом email PHP всегда вызывает generateEmail() (отдельной настройки нет).
  3. Заказ регистрируется в сессии MS3, статус «Новый».
  4. В ответе AJAX — payment_link (если способ оплаты это поддерживает).
  5. Запись в msfastorder_logs.
  6. Письма через чанки msfo_email_* не отправляются. Уведомления MS3 настраиваются в MiniShop3.

URL возвращает обработчик оплаты MiniShop3 (Payment::getPaymentLink()). Отдельный URL в msFastOrder не задаётся — только msfastorder_payment_id.

Где используется:

  • data.payment_link в ответе order/create
  • кнопка «Оплатить» на экране успеха (JS FormHandler.renderSuccess)
  • событие msfo:order:success

В письме клиенту (msfo_email_customer, режим MAIL) плейсхолдер {$payment_link} в шаблоне есть, но штатный поток MAIL его не передаёт. Кнопка оплаты только на экране успеха в JS.

Тип способа оплатыpayment_link
DefaultPaymentСтраница «Спасибо» с ?msorder={uuid}; при msorder=num PHP может переписать URL на uuid (см. ниже)
ЮKassa (msp3YooKassa)URL checkout от обработчика MS3

Нормализация DefaultPayment: MiniShop3Integration::normalizePaymentLink() переписывает msorder={num} на msorder={uuid}, если uuid заказа 36 символов (канонический UUID v4). Без библиотеки Ramsey UUID в пакете может генерироваться 32 hex без дефисов — тогда переписывание не сработает.

Пошаговая настройка ЮKassa: Интеграция.

При непустом msfastorder_success_redirect и наличии payment_link фронт через ~2 с перенаправляет на оплату.

Режим MAIL ​

  1. Заказ в MS3 не создаётся.
  2. Письмо менеджеру — чанк msfo_email_manager на msfastorder_email_manager.
  3. При указанном email клиента — msfo_email_customer.
  4. В лог: method = MAIL, order_id вида MAIL-{timestamp}.

Получение в коде ​

php
$modx->getOption('msfastorder_method', null, 'MS');
$modx->getOption('msfastorder_payment_id', null, 0);

Элементы пакета ​

ЭлементНазначение
Сниппет msFastOrderКнопка, CSS/JS, inline msfoConfig + CSRF (ClientConfig::getConfigScript)
Сниппет msFastOrderClientConfigТолько <script>window.msfoConfig</script> + CSRF
Плагин msfastorder_webСвежий CSRF и конфиг при отдаче кэшированной страницы

См. Сниппеты.