Разработка модуля биллинга для сервиса доставки еды с большим объемом трафика. Реализованная функциональность:
управление клиентами (физическими и юридическими лицами);
управление лицевыми счетами клиентов;
регистрация финансовых операций: платежей и списаний;
гибкая система привязки финансовых операций к услугам (нет жесткой зависимости от конкретного вида услуг/товаров);
хранение текущего баланса лицевого счета и полной истории его изменений;
управление привязками лицевого счета одного клиента к лицевому счету другого (поддержка субсчетов) с настройкой лимитов списания;
управление кредитным лимитом и кредитным периодом;
блокировка списаний c лицевого счета при превышении лимитов: кредитного лимита или лимита списания, а также при истечении срока кредитного лимита;
формирование стандартной и неформализованной отчетности;
управление брендами компании (собственными юридическими лицами), возможность привязывать списания к брендам.
При разработке биллинга большое внимание уделено архитектуре модуля, чтобы безболезненно справиться с растущей нагрузкой новых заказов клиента, а также гибко распределять платежные транзакции между множеством связанных юридических лиц и счетов.
Особенности архитектуры решения
Логически архитектура имеет два уровня. На первом обеспечивается базовая функциональность, присущая любому биллингу - это контрагенты, счета, транзакции и отчетность.
Второй уровень обеспечивает работу бизнес-процессов, свойственных именно фудтех сфере: продажа и доставка еды, предзаказ блюд, применение бонусов и скидок для заказа и т.п.
Чтобы справиться с нагрузкой использован архитектурный подход CQRS для разделения операций чтения и изменения состояний биллинга.
В результате была упрощена и ускорена оплата заказа со стороны клиента даже при высоких нагрузках входящего трафика. Финансовая служба компании получила прозрачные отчеты о работе предприятия.
Стек технологий: .NET Core 3, Enitity framework Core 3, PostgreSQL, CQRS, Docker