IOSOR Guide

Idempotenza dell’API di invio: duplicati, retry e denaro

Guida per sviluppatori di API di invio prepaid — chiavi di idempotenza, retry sicuri, prevenzione duplicati e correlazione leggibile dal ledger, così un errore di engineering non diventa un incidente finanziario.

I timeout succedono. I bilanciatori ritentano. I client mobile fanno doppio tap. Senza idempotenza, un prodotto "invia una volta" diventa doppio addebito prepaid e UX OTP duplicata. Guida per engineering e product tecnico che integrano un'API di messaging prepaid white-label — dove ogni duplicato si vede nel wallet. IOSOR si aspetta integrazioni money-aware: chiamate autenticate, debiti correlabili ed errori client che non scaricano payload di brand altrui. Vicino a USD 1.000+ di uso mensile della piattaforma, la disciplina sui duplicati non è più opzionale.

Perché i duplicati diventano problemi di denaro

Modalità di guasto L'utente vede Il wallet vede
Timeout client + retry cieco Due OTP / due alert Due debiti
Handler webhook non idempotente Doppi side effect Confusione sul success
Reinvio utente impilato sull'auto-retry Utenti irritati Unità accumulate
Nessuna correlazione Ticket "è fallito" Righe ledger non abbinate

Le demo perdonano. La finance di produzione no.

Chiavi di idempotenza che sopravvivono ai retry

Un percorso di invio serio accetta una chiave generata dal client che è unica per intent di business, non per tentativo TCP. Deve restituire lo stesso risultato accepted in replay entro un TTL chiaro. Questo impedisce di creare in silenzio un secondo debito per lo stesso intent. La chiave deve essere loggata accanto a message ID e riferimento prepaid. Deve funzionare attraverso timeout, retry di gateway e redrive di supporto.

Budget di retry vs reinvio utente

I retry automatici servono un budget: max tentativi, backoff e quali classi di errore sono retryabili. Il reinvio iniziato dall'utente è un'azione di prodotto diversa con i propri limiti e costi. Mischiare i due trasforma una rete instabile in un evento finanziario. Abbina entrambi allo stop su saldo basso e a motivi di rifiuto chiari, così prodotto e finance condividono una sola verità.

Checklist buyer / engineering

  1. Semantica della chiave di idempotenza e TTL documentati.
  2. Test di replay che prova un debito per un intent.
  3. Budget di retry automatico separato dalla logica di reinvio utente.
  4. ID di correlazione tra richiesta, stato messaggio e ledger prepaid.
  5. Staging che esercita corridoi reali — i semafori verdi simulati non sono lanci.
  6. Igiene delle chiavi e privilegio minimo per le credenziali di invio.
  7. Gestione dei codici 429 e 503 senza perdere la chiave di intent originale.
  8. Alert automatizzati per alti tassi di rifiuto di chiavi duplicate.

Bandiere rosse

  • "Ritenta fino a 200" senza usare chiavi di idempotenza.
  • Handler webhook non idempotenti che attivano side effect due volte.
  • Chiavi segrete o token di auth che appaiono in log o ticket di supporto.
  • Errori che incollano payload di brand terzi o stack trace interni agli utenti.
  • Nessun monitoraggio sui rifiuti delle chiavi.

Inizia con IOSOR

Nella console di invio sparate un OTP o un alert con una chiave di idempotenza generata dal client. Forzate un timeout client e rinviiate la stessa richiesta dentro il TTL della chiave. Aprite il ledger prepaid: quell’intento deve mostrare un addebito e un messaggio visibile. Due righe significano che la chiave non è sopravvissuta al retry — riparate TTL e handler prima di lasciare il corridoio in Live.

Sintesi IOSOR

Fate: trattate ogni invio prima come evento di ledger. La chiave è unica per intento di business, non per tentativo TCP. L’auto-retry ha un budget; il tap di reinvio dell’utente è un’altra azione, con il suo costo prepaid.

Questa guida ti è stata utile?

Guide correlate