Skip to content

fix: проверка связи delivery/payment при оформлении заказа - #459

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-374-has-payment-validation
Open

fix: проверка связи delivery/payment при оформлении заказа#459
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-374-has-payment-validation

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Order::hasPayment() проверял связь через msDeliveryMember, но нигде не вызывался. OrderSubmitHandler принимал любой активный payment_id, даже если он не привязан к выбранной доставке.

Добавлены DeliveryService::isPaymentAvailableForDelivery() и getDeliveryPaymentPairError(). Проверка подключена на финальных gate’ах: web submit, order/add, manager create/update и finalize. Order::hasPayment() делегирует в DeliveryService.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change
  • Рефакторинг
  • Документация

Связанные Issues

Closes #374

Как это было протестировано?

cd core/components/minishop3
php -l src/Services/Delivery/DeliveryService.php   # exit 0
php -l src/Services/Order/OrderSubmitHandler.php   # exit 0
php -l src/Services/Order/OrderFinalizeService.php # exit 0
php -l src/Services/Order/OrderFieldManager.php    # exit 0
php -l src/Controllers/Api/Manager/OrdersController.php # exit 0
composer ci:php                                    # exit 0 (15 smoke tests)
  • Ручное тестирование
  • Автоматические тесты (composer ci:php)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: fix/issue-374-has-payment-validation
  • MODX: n/a (smoke без MODX)
  • PHP: 8.4

Чеклист

  • Код соответствует стилю проекта
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en) — ms3_order_err_payment_delivery
  • PHPStan
  • ESLint — Vue не затронут
  • CHANGELOG — по политике репозитория

Дополнительные заметки

  • Review: code-reviewer HIGH (формат ошибки в OrderFieldManager) исправлен; security-review — BLOCK/HIGH не найдено.
  • Order::hasPayment() сохранён как публичный API и делегирует в сервис (совместимость с miniShop2).

@Ibochkarev
Ibochkarev requested a review from biz87 July 28, 2026 05:15
@Ibochkarev Ibochkarev added bug Something isn't working priority: high Важно исправить в ближайшее время labels Jul 28, 2026
@Ibochkarev
Ibochkarev force-pushed the fix/issue-374-has-payment-validation branch from 478c50c to 8ee15c9 Compare July 29, 2026 02:05
Centralize msDeliveryMember checks in DeliveryService and enforce them
on web submit, checkout field updates, manager create/update, and finalize.

Closes #374
@Ibochkarev
Ibochkarev force-pushed the fix/issue-374-has-payment-validation branch from 8ee15c9 to 80faefa Compare July 29, 2026 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: high Важно исправить в ближайшее время

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] hasPayment не вызывается — submit принимает несовместимую оплату

1 participant