A microservice-based online payment system for customers and merchants

DTUPay is an online payment system designed for both customers and merchants, offering secure transaction authorization through tokens. Customers can request secure tokens from the system to facilitate safe transactions with merchants. DTUPay is built upon a hexagonal microservice architecture and inspired by MobilePay.

The system utilizes the RabbitMQ message broker for internal communication and implements RESTful APIs with Jersey for external communication. These APIs are hosted using the Kubernetes-native Java framework Quarkus, while communication with the external Bank system is facilitated through the SOAP protocol.

Additionally, automation for builds, tests, and deployments is managed through a Jenkins server.

The hexagonal architecture comprises four microservices:

  • An Account microservice, facilitating registration of new DTUPay accounts, requiring prior registration with the Bank.

  • A Token microservice, managing the allocation, validation, and invalidation of secure tokens for DTUPay accounts.

  • A Payment microservice, handling transactions between DTUPay accounts, with one account acting as the merchant. This microservice interacts with the Token and Account services for validation.

  • A reporting microservice, generating statistical reports for management purposes.

For more detailed information about the project, please refer to the README file in the linked source repository.