v0.0.20 - billing service MVP version
v0.0.30 - billing api update: add endpoint
v0.0.40 - esb on rabbitmq append
v0.0.42 - webhook enpoint for two stage billing process append
Этот репозиторий: https://github.com/26remph/billing.git
Сервис реализующий возможность работы с платежными транзакциями пользователей.
Сервис реализует возможность оплаты товаров и услуг через внешние платежные сервисы. В сервис заложена возможность регулярной сверки проводимых операций. Учет и состояние расчетов по каждой транзакций. Структура хранения платежной информации позволяет делать расширенный аналитический учет.
Севрис состоит из следующих компонент:
- Реализует возможность работы с внешними платежными системами, учитывая особенности интеграции каждой.
- Реализует возможность сверки расчетов с внешним платежным провайдером.
- Предоставляет возможность расширенной аналитики по пользовательским транзакциям.
По факту совершенной оплаты или отмены оплаты купленной услуги или товара реализует возможность постановки в очередь сигналов для внутренних сервисов кинотеатра, таких как auth service и notification service. В auth отправляются сигналы на предоставление доступа к контенту или его прекращении. В notification service отправляет сигнал об оповещении по email об успешной оплате.
Стек: FastAPI + alchemy + alembic + RabbitMQ
Хранилище: PostgresSQL
Схема базы данных
Python классы реализующие проксирование запросов от внутреннего Billing API к внешнему API провайдера. Основан на абстрактом классе, который должен уметь обрабатывать следующие сценарии:
- Обработка сценария одно стадийного платежа и двух стадийного платежа. Подробнее тут: Одностадийный и двухстадийный платеж
- Обработка возврата от покупателя, в том числе частичного.
- Отмена/подтверждение платежа при включенной настройке двух стадийной обработке платежа.
Оперирует такими сущностями как:
Order
- заказ покупателя
Cart
- корзина заказа покупателя
Item
- продукты или услуги купленные покупателем
Operation
- платежная транзакция
Как точку роста класса мжно обозначить:
- работа с сущностью
Recipient
- чек покупателю.
Стек: Python + aiohttp + Pydantic
- Обеспечивает возможность ручного редактирования и просмотра платежной информации администраторам Billing сервиса.
- имеет свою админ панель
В MVP версии планировалась реализовать две переодиеских задачи:
CLEARING
- сверка взаиморасчетов по проведенным операциям в конце дня и закрытие зависших транзакций. Обнаружение оплат которые не были получены вcallback url
Billing API сервиса.RENEWAL-SUBSCRIPTION
- Реализация переодического списания денег по заканчивающимся подпискам с отправкой. уведомлений
Стек: Celery + RabbitMQ + Cellery bit
Хранилище: Redis (в качестве результирующего бэкэнад Redis)
Графическое представление архитектуры и взаимосвязи между компонентами представлены на иллюстрации ниже.
Общий стек технологий
Полный запуск на локальном хосте
-
Для работы проекта необходимо установить
docker
. Проверить доступность командыdocker compose
в вашей ОС.docker compose -f ./docker-compose.yml up -d
-
Запустить Billing API сервис в режиме разработки:
make run
Дождаться запуска. Процедура должна завершится бкз ошибок.
-
Если все прошло успешно, то будут доступны адреса (при настройке как в
.env.example
): -
Остановить сервисы командой:
docker compose -f ./infra/docker-compose.yml down
Представлена в репозитории.
- Вадим Барсуков, python-developer