Come funzionano i PaymentIntent
Come funzionano i PaymentIntent nel flusso di pagamento
I pagamenti che coinvolgono processi asincroni possono essere complessi da gestire. Ad esempio, a un utente potrebbe essere richiesto di confermare un pagamento utilizzando 3D Secure. I flussi di pagamento asincroni sono difficili da gestire perché dipendono dalle interazioni dei clienti che avvengono al di fuori della tua applicazione. PaymentIntents e SetupIntents semplificano la gestione monitorando lo stato del flusso in un state machine.
Quando viene creato il PaymentIntent, il suo stato è requires_
1 finché non viene associato un metodo di pagamento.
Ti consigliamo di creare il PaymentIntent non appena conosci l’importo che intendi addebitare, in modo che Stripe possa registrare tutti i tentativi di pagamento.
Dopo che il cliente ha fornito i dati di pagamento, il PaymentIntent è pronto per essere confermato.
Nella maggior parte delle integrazioni questo stato viene ignorato perché le informazioni sulla modalità di pagamento vengono inviate nello stesso momento in cui viene confermato il pagamento.
Se il pagamento richiede operazioni aggiuntive, ad esempio l’autenticazione con 3D Secure, lo stato della PaymentIntent è requires_
1.
Una volta gestite le operazioni necessarie, il PaymentIntent passa allo stato processing
per i metodi di pagamento asincroni, ad esempio gli addebiti bancari. L’elaborazione di questi tipi di metodi di pagamento può richiedere alcuni giorni. Altri metodi di pagamento, come le carte, vengono elaborati più rapidamente e non passano allo stato processing
.
Se autorizzi e acquisisci fondi separatamente, il PaymentIntent potrebbe passare allo stato requires_
. In tal caso, se tenti di acquisire i fondi, lo stato diventa processing
.
Un PaymentIntent con stato succeeded
indica che il flusso di pagamento che sta attivando è completo.
Ora i fondi sono nel tuo account e puoi evadere l’ordine in modo sicuro. Se devi rimborsare il cliente, puoi utilizzare l’API Refunds.
Se il tentativo di pagamento non va a buon fine (ad esempio a causa di un rifiuto), viene lo stato del PaymentIntent torna a essere requires_
per consentire un nuovo tentativo di pagamento.
Puoi annullare un PaymentIntent in qualsiasi momento prima che sia in stato processing
2 o succeeded
. L’annullamento invalida il PaymentIntent per i tentativi di pagamento futuri e l’operazione non può essere annullata. Se sono stati trattenuti fondi, l’annullamento li sblocca.
Inoltre, i PaymentIntent potrebbero passare automaticamente allo stato canceled
dopo essere stati confermati troppe volte.
1 Le versioni dell’API antecedenti la data 2019-02-11 mostrano requires_
anziché requires_
e requires_
anziché requires_
.
2 Puoi annullare un PaymentIntent nello stato processing
se il metodo di pagamento associato è un conto bancario statunitense. Tuttavia, potrebbe non andare a buon fine a causa di una finestra temporale di annullamento limitata e variabile.