Microservice-based online payment system for customers and merchants

DTUPay is an online payment system between customers and merchants where the customer authorizes its transactions with secure tokens. The customer requests an amount of secure tokens from the system for which the customer can use for making safe transactions with merchants. The idea behind the system is similar to that of the MobilePay system.

The system is built on a hexagonal microservice architecture using the RabbitMQ message broker for internal communication and RESTful APIs with Jenkins for external communication. The RESTful APIs are hosted using the Kubernetes-native Java framework Quarkus and SOAP is the protocol used for communicating with the external Bank system. In addition, a Jenkins server is set up for automation of builds, tests and deployments.

The hexagonal architecture consists of the following four microservices:

  • The Account microservice is used for registering new DTUPay accounts. It is requirement for the person registering with DTUPay to already have an account in the Bank.
  • The Token microservice is used for delegating secure tokens to registered accounts of DTUPay as well as validating and invalidating tokens.
  • The Payment service is responsible for transactions between DTUPay accounts where one of the accounts acts as the merchant. The Payment microservice communicates with the Token and Account services for validation of tokens and accounts.
  • The Reporting microservice is used for generating statistical reports for management purposes.

More in-depth information about the project can be found in the README of its source repository.