Начните с Network, а не с шаблона формы

miniShop2 сохраняет поля заказа через серверную логику и AJAX. Откройте DevTools → Network, повторите заполнение проблемного поля и оформление заказа. Смотрите JSON-ответ и HTTP-код.

Симптом checkout → что проверить

СимптомПроверка
Поле сразу красноеvalidate(), required fields, формат
Доставка не выбираетсяactive, required fields, custom class
Оплата недоступнасвязь delivery ↔ payment
Цена не пересчитываетсяdelivery getCost/custom JS/AJAX
Submit ничего не создаётmsOrderHandler submit, session, plugin
Заказ создан, редирект оплаты не работаетpayment handler send()
500MODX/PHP error.log

MODX log во время тестового заказа

BASH
tail -f /path/to/site/core/cache/logs/error.log

# Одновременно в браузере выполните один тестовый заказ.
# После ошибки остановите tail через Ctrl+C.

Проверьте обязательные поля именно выбранной доставки

В miniShop2 набор required fields зависит от доставки. Поэтому сценарий «самовывоз работает, курьер нет» часто связан не с корзиной, а с обязательным адресом/индексом или custom validation.

Доставка и оплата должны быть совместимы

Если способ оплаты привязан не ко всем доставкам, интерфейс может корректно скрыть его. Перед правкой JavaScript проверьте настройки miniShop2.

Минимальный диагностический plugin для событий заказа

PHP
<?php
switch ($modx->event->name) {
    case 'msOnSubmitOrder':
        $modx->log(modX::LOG_LEVEL_INFO, '[ms2 debug] submit order');
        break;

    case 'msOnBeforeCreateOrder':
        $modx->log(modX::LOG_LEVEL_INFO, '[ms2 debug] before create order');
        break;

    case 'msOnCreateOrder':
        $modx->log(modX::LOG_LEVEL_INFO, '[ms2 debug] order created');
        break;
}

Используйте diagnostic plugin временно

После проверки отключите его, чтобы не засорять журнал. Не логируйте полные данные клиента, токены оплаты и секреты.

Если ошибка появилась после кастомизации

Сравните стандартный handler с custom ms2_order_handler_class, плагины на событиях заказа и frontend JS. Локализуйте слой: поле → submit → создание order → payment redirect.

Скачать набор диагностики

RuJul Site Diagnostics — один ZIP

Связанные инструкции

Проверки ошибок оформления заказа miniShop2

Разделяйте проблему корзины, расчёта доставки, валидации полей, создания заказа и ответа платёжного провайдера. Для каждого этапа проверяйте Network в браузере, ответ процессора, журнал MODX и состояние заказа в базе. Повторный запрос не должен создавать второй оплаченный заказ; проверка этого сценария обязательна для интеграций.

Для воспроизведения подготовьте тип товара, состав корзины, способ доставки, тестовый адрес и точное время. Персональные данные клиента в отчёте нужно скрыть.