mndev
EN/UA/IT
Infrastruttura di pagamento · Pagamenti multivaluta

Motore di pagamenti

"Pagamenti manuali trasformati in un motore di routing — 40+ combinazioni valuta-metodo, senza perdere una sola conferma."

40+
Direzioni di pagamento
0
Conferme perse
24/7
Senza sorveglianza

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.

Ruolo: 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.

Scrivimi su Telegram