In generale, se sto usando un'API i cui metodi hanno effetti collaterali che voglio solo verificarsi una volta, come posso garantire che la mia stessa applicazione li chiami una sola volta anche se si verifica un errore prima che possa registrare una risposta?
Ad esempio, se sto chiamando un'API per l'elaborazione dei pagamenti una volta al mese per un servizio in abbonamento, come posso garantire che non effettui il double-bill se creo una nuova transazione e l'applicazione subisce un errore irreversibile prima di ottenere la risposta da quello? Sembra che la collaborazione con l'API sia una soluzione:
t = Transaction.new(user, price, etc);
if(t.persistToLocalDatabase()){ t.beginRemoteProcessing(); }
C'è un modo per risolvere questo problema nel caso in cui non ho alcun controllo sull'API e inizia l'elaborazione sulla creazione della transazione?