@lexstile

Как правильно спроектировать функционал для работы с платежной системой под laravel?

Есть приложение.
Нужна интеграция с платежной системой (далее ПС).
SDK у них своей нет. Как организовать архитектуру подобного взаимодействия?
Где хранить все методы для взаимодействия с ПС?

Я так понимаю, что я могу сделать свой репозиторий и реализовать свой функционал там?
Или, может быть, есть более правильный подход к разработке подобного функционала?
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Вот здесь про ивент-сорсинг можно поговорить. Где каждое действие программы не трогает юзера там, его баланс или заказы, а создает обьект, наполняемый изменившимися данными и сохраняет их в таблицу истории. А потом когда надо сделать вторую операцию - берем все события, загружаем назад в объект "проигрываем" - и получаем реальную сумму на счете и все остальное.

Но для платежей кроме лога действий обычно нужен еще номер транзации в платежке, название действия, статус самой транзакции, которая обновляется по мере того как приходит ответ "оттуда", можно конечно всё в лог действий писать, а потом разгребсти что и откуда из этой мусорки, а можно и традиционно - таблица "payment_transactions" и там поле "status: wait/processing/done/fail" и кусочки кода которые сдвигают этот статус.

Что до верхнего слоя апи - то первые пару методов такие - списать бабло, зачислить бабло, подарить бабло от имени админа, забрать бабло от имени админа.

Валюты точно потребуются. А значит вводите понятие "базовая валюта", именно в ней будут ваши цены. Можете условно приравнять её к 1 доллару, но не используйте сам доллар/евро/рубль в качестве валюты, сделайте новую. Лучшая аналогия (в том числе юридическая) - какие-нибудь танки. Там могли бы платить баксами, но платят игровым золотом, а золото покупают за баксы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы