Motore di pagamenti
"Pagamenti manuali trasformati in un motore di routing — 40+ combinazioni valuta-metodo, senza perdere una sola conferma."
- 40+
- 0
- 24/7
Un servizio di cambio dove ogni pagamento passava da una persona — carte, IBAN, Wise, PayPal, Revolut, Interac, Idram, UZCARD, Humo. Ricostruito come livello di routing con consegna garantita, così nulla dipende da chi è sveglio.
Backend e integrazioni — servizi di pagamento, plugin lato exchange, strumenti per gli operatori, deploy.
Problema
La consegna era best-effort in senso letterale: un tentativo in uscita, uno in entrata, errori nel log e dimenticati. Un riavvio a metà pagamento lasciava i soldi inviati e l'ordine bloccato per sempre, e ogni nuova valuta richiedeva modifiche al codice in tre punti.
Approccio
- 01Ho modellato le direzioni come dati — valuta più metodo mappano su una rotta, quindi una nuova è una riga in tabella e non un deploy.
- 02Ho reso la consegna affidabile: il risultato viene scritto prima della callback e rimosso solo dopo la conferma, con un drain in background che rimanda il resto.
- 03Ho ritentato solo ciò che il tempo può risolvere — errori di rete, 5xx, autenticazione scaduta — e ho fissato la regola in uno unit test.
- 04Ho aggiunto una scansione di reinvio pianificata lato exchange; il ricevitore deduplica per UUID, quindi un POST ripetuto è semplicemente un nuovo tentativo.
- 05Ho spostato il lavoro degli operatori su Telegram, invece di una dashboard che nessuno teneva aperta.
- 06Ho tolto dal codice il segreto demo di default, spostandolo in variabili d'ambiente iniettate dalla CI.
Risultato
- →I risultati dei pagamenti sopravvivono a riavvii, deploy e guasti di rete — la coda si svuota e consegna.
- →40+ combinazioni valuta-metodo in produzione, da GBP e CAD a UZS, TJS, GEL, AMD e NGN.
- →Le richieste non possono più perdersi fra exchange e servizio di pagamento: la deduplica per UUID rende sicuro il reinvio.
- →I depositi che venivano inseriti a mano ora sono elaborati automaticamente.
- →Il flusso operativo vive su Telegram, e il pannello è una superficie di controllo invece che un collo di bottiglia.
Impatto sul business
L'ufficio pagamenti ha smesso di essere una persona: le richieste si instradano da sole e confermano indietro senza supervisione, anche attraverso i riavvii che prima costavano un ordine bloccato. Aggiungere un mercato oggi è configurazione — ed è per questo che le direzioni hanno superato quota quaranta.
Sotto il cofano
Servizi di pagamento
- Rust · coda di callback affidabile
- Migrazioni SQL · tabella dei risultati in sospeso
- Politica di retry sotto unit test
- Bot Telegram per gli operatori
Integrazione exchange
- Plugin Laravel · scansione di reinvio pianificata
- Deduplica per UUID · 409 come segnale di retry
- Parser dei provider (Node)
- Segreti via CI, nessuno nel codice
Servizi di piattaforma
- NestJS · Prisma · Telegraf
- Vetrina del cambio su Nuxt · i18n · PWA
- Servizio P2P Java · Spring
- Servizio di generazione PDF (NestJS)
Infrastruttura
- Docker Compose per servizio
- GitHub Actions · segreti in ambiente
- Script di autodiagnosi sull'host
- Log strutturati per tracciare la consegna
Hai un sistema da costruire?
Pagamenti, integrazioni, mobile, pipeline di dati — se deve funzionare senza sorveglianza ed essere corretto, è il lavoro che prendo. Dall'architettura al lancio, e resto per tenerlo in piedi.