msFastOrder

Покупка в один клик через модальное окно
Автор дополнения
Иван Бочкарев
Пакетов
13
Закачек
102
Обычно отвечает в течение нескольких дней
Автор дополнения
Пакетов
13
Закачек
102
Обычно отвечает в течение нескольких дней
Версия 1.0.0-pl
Дата выпуска 24.05.2026
Загрузки 0
Просмотры 143
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
⚡ msFastOrder — быстрый заказ для MODX Revolution 3 и MiniShop3

Покупатель оформляет заказ в один клик со страницы товара: модальное окно с формой, без корзины. Заказ создаётся в MiniShop3 или уходит письмом менеджеру. После оформления — ссылка на оплату payment_link (в том числе ЮKassa через msp3YooKassa).







Это дополнение для тех, кому нужно:
  • модалка быстрого заказа на карточке товара и в каталоге ([[!msFastOrder]], &id=)
  • режим MS (заказ в MiniShop3) или MAIL (только email)
  • оплата по payment_link из способа оплаты MS3 — отдельный URL в настройках не нужен
  • количество больше 1 и строка Итого в форме (пересчёт до отправки)
  • интеграция с ms3Variants — вариант и цена со страницы товара

✨ Ключевые возможности
  • Модалки: native, Bootstrap 5, Fancybox
  • Сниппеты: msFastOrder, msFastOrderClientConfig
  • События JavaScript msfo:order:success, msfo:modal:loaded и др. — аналитика и доработки
  • Чанки кнопки, формы (эталон), писем; письма менеджеру и клиенту

🛒 MiniShop3
  • Отдельные способы оплаты и доставки «Fast Order» (создаются при установке)
  • Статус заказа «Новый», регистрация в сессии MS3 как у обычного checkout
  • Совместимость с msp3YooKassa — URL checkout в payment_link

🚀 Быстрый старт
  1. Установите пакет через Extras → Installer
  2. В настройках msFastOrder укажите метод MS или MAIL, ID оплаты/доставки MS3
  3. На шаблоне товара: [[!msFastOrder]]
  4. Для ЮKassa: msp3YooKassa + ID способа «Оплата через ЮKassa» в msfastorder_payment_id

📋 Требования
  • MODX Revolution 3.0+
  • PHP 8.2+
  • MiniShop3
  • pdoTools 3.x

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.0.0] - 2026-05-21

Added

  • Сниппеты: msFastOrder (кнопка «Купить в 1 клик», CSS/JS, CSRF), msFastOrderClientConfig (только window.msfoConfig)
  • Модальное окно быстрого заказа: native, Bootstrap 5, Fancybox (msfastorder_modal_library)
  • Режимы работы: MS — заказ в MiniShop3; MAIL — email-уведомление менеджеру без заказа в MS3
  • AJAX connector (assets/components/msfastorder/connector.php): product/get, order/create, order/validate, rate-limit/reset (debug)
  • Интеграция MiniShop3: способы оплаты и доставки «Fast Order», статус «Новый», payment_link (в т.ч. ЮKassa через msp3YooKassa)
  • ms3Variants: подхват variant_id, цены и опций со страницы товара
  • Количество > 1 в форме; строка Итого с пересчётом суммы в браузере
  • Копирование количества с карточки: .msfastorder-count-{id}
  • Чанки: msfo_button, msfo_form, msfo_success, msfo_modal, msfo_email_manager, msfo_email_customer
  • Плагин msfastorder_web: актуальный CSRF и msfoConfig при отдаче страницы
  • Безопасность: CSRF-токен, rate limit на order/create, лог msfastorder_logs
  • События JavaScript msfo:* (modal, order, validation) для аналитики и доработок
  • Lexicon RU/EN; маска телефона; настраиваемые обязательные поля
  • CSS-переменные --msfo-*; минифицированные msfo.min.css, msfo.min.js

Changed

  • Форма и экран успеха по умолчанию рендерятся в JS (renderForm, renderSuccess); чанки msfo_form / msfo_success — эталоны для кастомизации

Fixed

  • Экран успеха после заказа в режимах native и fancybox: корректный поиск активной формы и контейнера .msfo-modal__body / .modal-body (не скрытая bootstrap-форма после переключения библиотек)
  • MAIL: рендер email-чанков через pdoTools/Fenom (вместо $chunk->process() с сырой Fenom-разметкой); заказ не считается успешным, если письмо менеджеру не отправлено
  • Клиентская валидация синхронизирована с msfastorder_required_fields / msfoConfig.requiredFields (required-атрибуты, проверка телефона/email)
  • msfastorder_copy_count: настройка передаётся в msfoConfig.copyCount и отключает копирование количества со страницы
  • Цена варианта в модалке: при variant_id со страницы отображается цена варианта, а не базовая
  • Серверная валидация variant_id: неверный или недоступный вариант возвращает ошибку вместо тихого fallback
  • OrderService::getLogs(): корректный count/search через xPDO query вместо загрузки всей коллекции
  • generateEmail(): random_int вместо rand; неудачная отправка письма покупателю в MAIL логируется как warning
  • Удалён неиспользуемый data-msfo-hash из чанка кнопки
  • Rate limit: счётчик только после успешного order/create; при msfastorder_debug=1 лимит отключён

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