This repository contains a simple payment gateway service that accepts credit card payments, does validation, persists
to a database, streams submitted payment results to a file and provides a REST API to retrieve persisted data.
Entity relationship diagram
The project also shows how to create a multi-module Maven project, manage dependencies and plugins, create REST controllers, create business logic layers using SOLID principles and structural patterns, connect to a database, manage database entities, create liquibase scripts, do bean validation and proper error management, create a docker file, create OpenAPI docs.
To build payment gateway service application, run the following command.
mvn clean install
It will run unit tests and install dependencies.
Run application in a local machine
Navigate to payment-gateway-service directory and run the following command:
mvn spring-boot:run
The application will start on port 8080
. The swagger UI will be available by the
link: http://localhost:8080/payment-gateway-service/swagger-ui/index.html
Run application in a docker container
Run the following command:
docker compose up
The application will start on port 8080
. The swagger UI will be available by the
link: http://localhost:8080/payment-gateway-service/swagger-ui/index.html as well.
The detailed requirements are found in ASSIGNMENT.md.