Skip to content

soraiayugulis/authorization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

102 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Credit Card Authorizer API

Overview

A multi-service credit card authorizer API that manages transaction authorization based on benefit categories. The system authorizes transactions by validating card balances against specific merchant categories, ensuring funds are used according to their designated purpose (food, meal, transportation, etc.).

flowchart LR
    Client -->|POST /transactions| API[Authorizer API]
    API --> AuthService[Authorization Service]
    AuthService --> BalanceChecker[Category Balance Checker]
    AuthService --> DailyLimit[Daily Limit Checker]
    AuthService --> FraudDetection[Fraud Detection]
    BalanceChecker -->|fallback: MEAL → FOOD → GENERAL| CardBalance[(Card Balances)]
Loading

Key Features

  • Card Registration — Create cards with multiple benefit categories (FOOD, MEAL, TRANSPORTATION, CULTURE, PHARMACY, GENERAL)
  • Balance Management — Add and query balances per category with a max of 50,000 per category
  • Transaction Authorization — Authorize transactions with category-based balance validation
  • Category Fallback — Automatic fallback for MEAL transactions: MEAL → FOOD → GENERAL
  • Daily Transaction Limits — Enforced limit of 2,000 per card per day
  • Merchant Classification — Register merchants with a single category assignment
  • Transaction History — Full transaction audit trail with 90-day retention

Stack

  • Java 21
  • Spring Boot 3.2.5
  • Maven
  • SpringDoc OpenAPI 2.5 (Swagger UI)
  • JUnit 5
  • AssertJ
  • Mockito
  • Checkstyle (Google style)

Installation

Prerequisites

  • Java 21+
  • Maven 3.8+

Steps

git clone https://github.com/soraiayugulis/authorization.git
cd authorization
mvn clean install

Usage

Running the application

mvn spring-boot:run

API Documentation

Once the application is running, access the Swagger UI at:

http://localhost:8080/swagger-ui.html

API Endpoints

Method Endpoint Description
POST /cards Register a new card
POST /cards/{cardId}/balance Add balance to a category
GET /cards/{cardId}/balance/{category} Query category balance
GET /cards/{cardId} Get card details
PUT /cards/{cardId}/status Activate/deactivate card
POST /transactions Authorize a transaction
GET /cards/{cardId}/transactions Get transaction history
POST /merchants Register a merchant

Contact

@_sysout

About

to pay or not to pay

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages