Помогите с архитектурой (оплата в оформлении заказа)

Обсуждаем, как правильно строить приложения
Ответить
zey_ser
Сообщения: 3
Зарегистрирован: 2017.04.01, 10:31

Помогите с архитектурой (оплата в оформлении заказа)

Сообщение zey_ser »

Я новичок, делаю первый сайт на Yii2. Сейчас у меня стоит задача реализовать оплату при оформлении заказа и заложить возможность расширения кол-ва способов оплаты.

Что уже готово:
Оформление доступно на каждой странице в сайдбаре, получение данных и валидация осуществлена через Pjax. На текущий момент есть два способа оплаты - наличные и paypal.

Что я предполагаю сделать:
- В момент получения данных от пользователя у меня есть строка с выбранным способом оплаты (paypal, cash). Отталкиваясь от этого надо организовать что-то по типу Фабрики или Строителя("PaymentBuilder"), которая будет отдавать мне мой способ оплаты("PaymentMetod").
- Я предполагаю, что PaymentMethod надо реализовывать на основе интерфейса (заложить основу для расширения способов оплаты).
- Организовать это все с учетом DI (или иначе - это моя проблема)

В чем проблема:
- Не понимаю какой выбрать путь. Сейчас каша из ServiceLocator, DI и того как это все организовать. Нужен вектор по которому это все начать строить.

P.S. Мне очень интересно, как бы вы это организовали!
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Помогите с архитектурой (оплата в оформлении заказа)

Сообщение zelenin »

Код: Выделить всё

$paymentService = new PaymentService([new PaypalProvider, new CashProvider]);
----
$paymentDto = PaymentDto::fromRequest($request);
$this->paymentService->pay($paymentDto);
zey_ser
Сообщения: 3
Зарегистрирован: 2017.04.01, 10:31

Re: Помогите с архитектурой (оплата в оформлении заказа)

Сообщение zey_ser »

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 будет выполнять оплату, правильно я понял?
zey_ser
Сообщения: 3
Зарегистрирован: 2017.04.01, 10:31

Re: Помогите с архитектурой (оплата в оформлении заказа)

Сообщение zey_ser »

zelenin писал(а): 2017.04.02, 15:18 все верно
Спасибо, что поделились своим мнением!
Ответить