Built a reactive payment processing backend using Java, Spring Boot, WebFlux, MongoDB, and Kafka, implementing event-driven payment workflows, REST APIs, CI/CD automation, testing, and microservices-ready architecture for real-time transaction processing.
- Create a payment
- Retrieve a payment by ID
- Retrieve all payments or filter by customer ID
- Update payment status
- Publish Kafka events whenever a payment is created or updated
- Reactive, non-blocking REST APIs using WebFlux
- CI pipeline for build + test validation
POST /api/v1/payments
Sample request:
{
"orderId": "ORD-1001",
"customerId": "CUST-901",
"amount": 249.99,
"currency": "USD",
"paymentMethod": "CARD"
}GET /api/v1/payments/{paymentId}
GET /api/v1/payments
GET /api/v1/payments?customerId=CUST-901
PATCH /api/v1/payments/{paymentId}/status
Sample request:
{
"status": "CAPTURED"
}docker compose up -dmvn spring-boot:runApplication runs at:
- API:
http://localhost:8080 - Swagger UI:
http://localhost:8080/swagger-ui.html
mvn clean test package