Я новичок, делаю первый сайт на Yii2. Сейчас у меня стоит задача реализовать оплату при оформлении заказа и заложить возможность расширения кол-ва способов оплаты.
Что уже готово:
Оформление доступно на каждой странице в сайдбаре, получение данных и валидация осуществлена через Pjax. На текущий момент есть два способа оплаты - наличные и paypal.
Что я предполагаю сделать:
- В момент получения данных от пользователя у меня есть строка с выбранным способом оплаты (paypal, cash). Отталкиваясь от этого надо организовать что-то по типу Фабрики или Строителя("PaymentBuilder"), которая будет отдавать мне мой способ оплаты("PaymentMetod").
- Я предполагаю, что PaymentMethod надо реализовывать на основе интерфейса (заложить основу для расширения способов оплаты).
- Организовать это все с учетом DI (или иначе - это моя проблема)
В чем проблема:
- Не понимаю какой выбрать путь. Сейчас каша из ServiceLocator, DI и того как это все организовать. Нужен вектор по которому это все начать строить.
P.S. Мне очень интересно, как бы вы это организовали!
Помогите с архитектурой (оплата в оформлении заказа)
Re: Помогите с архитектурой (оплата в оформлении заказа)
Код: Выделить всё
$paymentService = new PaymentService([new PaypalProvider, new CashProvider]);
----
$paymentDto = PaymentDto::fromRequest($request);
$this->paymentService->pay($paymentDto);
Re: Помогите с архитектурой (оплата в оформлении заказа)
Спасибо за ответ! Только получил уведомление о новом сообщении.zelenin писал(а): ↑2017.04.01, 17:08Код: Выделить всё
$paymentService = new PaymentService([new PaypalProvider, new CashProvider]); ---- $paymentDto = PaymentDto::fromRequest($request); $this->paymentService->pay($paymentDto);
PaymentDto::fromRequest извлекает способ оплаты из запроса на обработку заказа(и прочие данные), а потом передается в метод pay где сервисом "разруливается" какой Provider будет выполнять оплату, правильно я понял?