Dispongo di un'app web di fatturazione automatica e sto cercando di creare alcune eccezioni e una struttura che, in nessuna circostanza, consentirà una doppia fatturazione.
Tutto funziona perfettamente, l'attività pianificata viene eseguita e tutto si carica come dovrebbe. Ma ci sono alcuni scenari che sappiamo che possono causare problemi.
Ho avuto un server DB nel mezzo di un processo, che ha portato a una serie di addebiti duplicati. Inoltre, se per qualsiasi motivo, il file deve essere controllato in un browser, uno sviluppatore esegue l'aggiornamento prima che l'elaborazione del file venga completata, si verificheranno addebiti duplicati.
Ci sono alcuni scenari simili da proteggere contro, quindi puoi vedere la necessità di un modo per gestire questo dato la sensibilità delle transazioni (immagini che vedono la tua compagnia elettrica addebitare automaticamente due volte sul tuo estratto conto).
Configurazione attuale:
-
Query
-
API POST per transazione
<!--- Parse Reply String ---> if response = "1" - Insert Into Payments - Update Invoice Amount Due - Insert Into Transactions - Email Accepted Notification else - Email Declined Notification
Ci sono alcuni processi più piccoli che avvengono tra alcuni di questi, oltre a un bel po 'di istruzioni if, ma quelle sono le parti di sollevamento pesanti.
Quello che mi piacerebbe sapere e conoscere è quale sarebbe il modo migliore per gestire la salvaguardia di ciò considerando l'API di terze parti per il gateway che si trova lì?
Come lo romperesti?
Un'idea che avevo era di contrassegnare ogni processo dopo che è stato eseguito per dare un registro di dove si trovava quando ha fallito e costruire la query per gestirla di conseguenza. Non sei sicuro di quanto sia efficiente o più probabile quanto sarebbe inefficiente.