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
- 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
- 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
- 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
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-orchestratorContribuisci 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