Salta al contenuto principale
WIP AGPL-3.0Fintech

Payment Orchestrator

PSD3-ready payment routing engine open-source con ISO 20022 + Kafka, license AGPL-3.0

Stato
WIP
Licenza
AGPL-3.0
Categoria
Fintech
Aggiornato

Stato del progetto

Descrizione

Payment Orchestrator è una piattaforma open-source per il routing intelligente di pagamenti tra multipli Payment Service Provider (PSP), progettata per il quadro normativo PSD3 (in vigore EU 2026+) e ottimizzata per ISO 20022 come standard di messaging interoperabile. Risolve un problema concreto per PMI e fintech europee: integrare 5-10 PSP (Stripe, Adyen, Mollie, Nexi, Worldline, banking partner locali) genera vendor lock-in, fragility tecnica e costi opzionali altissimi. Payment Orchestrator centralizza il routing: ogni payment intent viene valutato da una rule engine configurabile (per metodo di pagamento, importo, paese, valuta, success rate storica del PSP) e instradato al PSP ottimale, con fallback automatico se il primo PSP fallisce o ha latency troppo alta. L'architettura è event-driven: Spring Boot 3.4 emette PaymentInitiated, PaymentRouted, PaymentSuccess, PaymentFailed su Kafka topic transactional, consumer per audit log immutabile (PostgreSQL append-only) e per analytics real-time (TimescaleDB). Il modello messaging usa ISO 20022 pacs.008/pacs.002 per SEPA Credit Transfer e pain.001 per Customer Credit Transfer Initiation, garantendo interoperabilità con banking partner regolamentati. La sicurezza è first-class: mTLS verso PSP, signing HMAC su webhook ricevuti, idempotency key con Redis dedupe per evitare double-charge, audit trail completo per audit regolatori (Banca d'Italia, BCE PSP supervision). License AGPL-3.0 per protezione platform da competitive copying (chi forka deve open-sourcing modifiche se offre il servizio a terzi). Deploy target: fintech early-stage, PMI con volume €100k-10M/anno, marketplace con esigenza routing multi-PSP. La filosofia è 'sovereign payment infrastructure': il routing engine è on-prem, le credenziali PSP non lasciano la VPS del cliente, no SaaS dipendenza.

Funzionalità chiave

  • Routing engine rule-based

    Rule DSL configurabile (metodo, importo, paese, valuta, success rate storica), priority chain con fallback PSP automatico se primo PSP fallisce.

  • ISO 20022 messaging nativo

    pacs.008/pacs.002 per SEPA CT, pain.001 per Customer Credit Transfer, schema XSD validation, interoperabilità banking partner regolamentati.

  • Event-driven via Kafka

    Topic transactional: PaymentInitiated, PaymentRouted, PaymentSuccess, PaymentFailed, idempotency key Redis dedupe, Dead Letter Topic per retry.

  • Audit log immutabile PostgreSQL

    Append-only ledger su PostgreSQL con cifratura colonne sensibili, query timeline per audit Banca d'Italia, retention configurabile per compliance.

  • mTLS verso PSP

    Mutual TLS verso ogni PSP supportato, certificate pinning configurabile, rotazione cert automatica via Let's Encrypt o KMS enterprise.

  • Webhook signature verification

    HMAC SHA-256 su webhook ricevuti, replay protection con nonce, timestamp validation ±5 min, fail-fast su signature mismatch.

  • Analytics real-time TimescaleDB

    Time-series su success rate per PSP, latency P50/P95/P99, conversion rate per metodo pagamento, dashboard Grafana pre-built.

  • OpenAPI 3.1 + SDK client

    OpenAPI 3.1 auto-generated, SDK client TypeScript + Java + Python generati, esempi integrazione Stripe/Adyen/Mollie/Nexi.

Tech stack

  • Spring Boot 3.4
  • Java 21
  • ISO 20022
  • Apache Kafka
  • PostgreSQL 16
  • TimescaleDB
  • Redis Stack 7
  • OpenAPI 3.1
  • Resilience4j

Casi d'uso

  • Fintech early-stage che integra 3-5 PSP e vuole evitare vendor lock-in su uno solo
  • PMI EU con volume €100k-10M/anno che cerca routing intelligente per ottimizzare success rate
  • Marketplace con vendor multi-paese che richiede PSP locali per ridurre cross-border fees
  • PSP regolamentati che vogliono offrire white-label orchestration ai propri clienti enterprise

Roadmap

  1. v0.1.0 Pianificata

    Core: Routing + Kafka + 2 PSP

    • Rule engine routing base con DSL JSON
    • Kafka topic + producer transactional
    • Integrazione Stripe + Mollie come PSP reference
    • Audit log PostgreSQL append-only
  2. v0.5.0 Pianificata

    ISO 20022 + 5 PSP + Webhook security

    • ISO 20022 pacs.008/pacs.002 + pain.001
    • Adyen + Nexi + Worldline integrations
    • Webhook HMAC signature verification
    • mTLS verso tutti i PSP
  3. v1.0.0 Pianificata

    Analytics + SDK + Production deploy

    • Analytics TimescaleDB + dashboard Grafana
    • SDK TypeScript + Java + Python generati
    • OpenAPI 3.1 completo + Postman collection
    • Documentazione MkDocs + deploy guide compliance

A chi è rivolto

  • Pro Dev senior
  • Decision Maker / Founder

Quick Start

Avvia il progetto localmente in pochi comandi.

# Quick start (work-in-progress, repo non ancora pubblicato)
# git clone https://github.com/<tba>/payment-orchestrator.git
# cd payment-orchestrator
# cp .env.example .env  # configura PSP credentials, Kafka, Redis, PostgreSQL
# docker compose up -d  # kafka + redis + postgres + payment-orchestrator

Contribuisci al progetto

Payment Orchestrator è open source. Apri una issue, proponi una pull request o lascia una stella su GitHub: ogni contributo, anche piccolo, è benvenuto.

  • ⭐ Lascia una stella se ti è utile
  • 🐛 Segnala bug o proponi feature via issue
  • 🔧 Invia pull request con fix o miglioramenti
  • 📣 Condividi il progetto se lo trovi interessante