Начните с 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() |
| 500 | MODX/PHP error.log |
MODX log во время тестового заказа
tail -f /path/to/site/core/cache/logs/error.log
# Одновременно в браузере выполните один тестовый заказ.
# После ошибки остановите tail через Ctrl+C.Проверьте обязательные поля именно выбранной доставки
В miniShop2 набор required fields зависит от доставки. Поэтому сценарий «самовывоз работает, курьер нет» часто связан не с корзиной, а с обязательным адресом/индексом или custom validation.
Доставка и оплата должны быть совместимы
Если способ оплаты привязан не ко всем доставкам, интерфейс может корректно скрыть его. Перед правкой JavaScript проверьте настройки miniShop2.
Минимальный диагностический plugin для событий заказа
<?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.
Скачать набор диагностики
Связанные инструкции
Проверки ошибок оформления заказа miniShop2
Разделяйте проблему корзины, расчёта доставки, валидации полей, создания заказа и ответа платёжного провайдера. Для каждого этапа проверяйте Network в браузере, ответ процессора, журнал MODX и состояние заказа в базе. Повторный запрос не должен создавать второй оплаченный заказ; проверка этого сценария обязательна для интеграций.
Для воспроизведения подготовьте тип товара, состав корзины, способ доставки, тестовый адрес и точное время. Персональные данные клиента в отчёте нужно скрыть.