Данный проект включает в себя модуль агрегации, сверки и фискализации платежей для IT-платформы зарядки электротранспорта TOUCH города Волгограда и Волжского
.NET 7 - фреймворк, на котором разработан модуль
MS SQL Server 2019 - СУБД
JRE 8.371 - минимальная реализация виртуальной машины Java Virtual Machine, необходимая для работы Apache Zookeeper и Apache Kafka
Apache Zookeeper 3.8.1 - открытая программная служба для координации распределённых систем, необходимая для работы Apache Kafka
Apache Kafka 3.4.0 - брокер сообщений
В топик брокера сообщений приходит запрос на рекуррентный платеж с информацией об оплате в виде JSON. Набор необходимых полей:
- сумма платежа;
- внутренний идентификатор платежа;
- описание платежа;
- название торгово-сервисного предприятия;
- электронная почта клиента;
- электронная почта торгово-сервисного предприятия;
- уникальный идентификатор зарядной сессии;
- телефон клиента;
- уникальный номер виртуального терминала торгово-сервисного предприятия;
- уникальный идентификатор торгово-сервисного предприятия;
Состояние сессий, результаты рекуррентных платежей и фискализации хранятся в БД, представленной следующими сущностями:
- SessionID – уникальный идентификатор сессии;
- Status – статус сессии;
- SumByPlatform – сумма, затраченная в ходе зарядной сессии;
- SumByBank – сумма, успешно списанная банком;
- SumDifference – разность SumByPlatform и SumByBank.
- PaymentID – уникальный идентификатор платежа;
- Amount − сумма рекуррентного платежа;
- Rrn (Reference Retrieval Number) – уникальный идентификатор банковской транзакции, который назначается банком Эквайрером при инициализации платежа;
- BankResponseCode – код ответа банка;
- BankResponseText – текст ответа банка;
- Description – описание платежа;
- Timestamp – время платежа;
- SessionID – идентификатор зарядной сессии, в ходе которой произведен платеж.
- CheckID – уникальный идентификатор сессии;
- Sum – сумма фискального чека;
- Status – статус сессии;
- OfdReceiptUrl– ссылка на фискальный чек в системе «Первый ОФД»;
- Timestamp – время платежа;
- SessionID – идентификатор зарядной сессии, в ходе которой произведена фискализация чека.
Точка обращения к API | Метод | Описание |
---|---|---|
/Session/GetSessions | GET | Получить список всех сессий |
/Session/GetSessions/{id} | GET | Получить сессию по ID |
/Session/GetSessions | DELETE | Удалить сессию по ID |
/Payment/GetPayments | GET | Получить список всех платежей |
/Payment/GetPayments/{id} | GET | Получить платеж по ID |
/Check/GetChecks | GET | Получить список всех чеков |
/Check/GetChecks/{id} | GET | Получить чек по ID |
/Check/GetChecks/{uuid} | GET | Получить чек по UUID |