Aggiornamenti di stato dei pagamenti
Monitorare e verificare lo stato pagamento in modo da poter rispondere ai pagamenti riusciti e non riusciti.
I PaymentIntent si aggiornano in risposta alle azioni intraprese dal cliente o alla modalità di pagamento. L’integrazione può ispezionare il PaymentIntent per determinare lo stato della procedura di pagamento, consentendoti così di intraprendere azioni aziendali o di rispondere agli stati che richiedono un ulteriore intervento.
Puoi utilizzare la Dashboard Stripe anche per configurare il tuo account in modo che ti invii un’email sullo stato del pagamento, ad esempio in caso di pagamenti riusciti. Modifica le notifiche email nelle impostazioni utente.
Controllare lo stato del PaymentIntent sul client
Quando completi un pagamento sul client con la funzione confirmCardPayment, puoi ispezionare il PaymentIntent restituito per determinarne lo stato corrente:
(async () => { const {paymentIntent, error} = await stripe.confirmCardPayment(clientSecret); if (error) { // Handle error here } else if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } })();
Di seguito sono riportati i possibili effetti dell’uso della funzione confirmCardPayment
:
Evento | Che cosa è accaduto | Integrazione prevista |
---|---|---|
Si risolve con un PaymentIntent | Il cliente ha completato il pagamento sull’apposita pagina | Informa il cliente che il pagamento è riuscito |
Si risolve con un errore | Il pagamento del cliente non è andato a buon fine sulla pagina di completamento della transazione | Visualizza un messaggio di errore e richiedi al cliente di effettuare un nuovo tentativo di pagamento |
La promessa restituita da confirmCardPayment
si risolve quando la procedura di pagamento è stata completata o non è andata a buon fine con un errore. Se la procedura viene completata correttamente e restituisce un PaymentIntent, lo stato è sempre succeeded
(o requires_
in caso di addebito successivo). Se il pagamento richiede un passaggio aggiuntivo come l’autenticazione, la promessa non si risolve finché tale passaggio non è stato completato o è scaduto.
Controllare lo stato del PaymentIntent sul client senza utilizzare confirmCardPayment
Per controllare lo stato di un PaymentIntent senza la funzione confirmCardPayment
, recupera il PaymentIntent in modo indipendente utilizzando la funzione retrievePaymentIntent e passando la chiave privata client.
Di seguito sono riportati alcuni stati possibili del PaymentIntent successivi a una conferma:
Che cosa è accaduto | Stato PaymentIntent previsto |
---|---|
Il cliente ha completato il pagamento sull’apposita pagina | succeeded |
Il cliente non ha completato la procedura di pagamento | requires_ |
Il pagamento del cliente non è andato a buon fine sulla pagina di completamento della transazione | requires_ |
Ulteriori informazioni sugli stati di PaymentIntent.
(async () => { const {paymentIntent} = await stripe.retrievePaymentIntent(clientSecret); if (paymentIntent && paymentIntent.status === 'succeeded') { // Handle successful payment here } else { // Handle unsuccessful, processing, or canceled payments and API errors here } })();
Monitorare un PaymentIntent con i webhook
Stripe può inviare eventi webhook al tuo server per avvisarti quando lo stato di un PaymentIntent cambia, che potresti utilizzare per determinare il momento in cui evadere l’ordine di beni e servizi.
Non tentare di gestire l’'evasione ordini sul lato client perché i clienti possono abbandonare la pagina una volta completato il pagamento, ma prima dell’inizio della procedura di evasione. Utilizza invece i webhook per monitorare l’evento payment_
e gestirne il completamento in modo asincrono anziché tentare di avviare l’evasione ordini sul lato client.
Attenzione
Da un punto di vista tecnico è possibile utilizzare il polling anziché i webhook per monitorare le modifiche generate dalle operazioni asincrone, recuperando ripetutamente un PaymentIntent in modo da controllarne lo stato, ma questo approccio è decisamente meno affidabile e potrebbe causare problemi di limitazione della velocità. Stripe applica limiti di velocità alle richieste API, pertanto si consiglia di prestare attenzione se si decide di utilizzare il polling.
Per gestire un evento webhook, crea un route sul server e configura un endpoint del webhook corrispondente nella Dashboard. Stripe invia l’evento payment_
quando il pagamento riesce e l’evento payment_
quando il pagamento non riesce.
Il payload del webhook include l’oggetto PaymentIntent. Il seguente esempio mostra come gestire entrambi gli eventi:
Quando il pagamento non va a buon fine, puoi visualizzare maggiori dettagli ispezionando la proprietà last_
del PaymentIntent. Puoi informare il cliente che il suo pagamento non è stato completato e invitarlo a riprovare con una modalità diversa. Riutilizza lo stesso PaymentIntent per continuare il monitoraggio dell’acquisto del cliente.
Gestire eventi webhook specifici
La tabella seguente descrive come gestire gli eventi webhook:
Evento | Descrizione | Passaggi successivi |
---|---|---|
processing | Il pagamento del cliente è stato inviato a Stripe. Applicabile solo alle modalità di pagamento con conferma di operazione riuscita posticipata. | Attendi che il pagamento avviato vada o meno a buon fine |
succeeded | Pagamento del cliente riuscito | Evadi l’ordine delle merci o dei servizi acquistati |
amount_ | Il pagamento del cliente è stato autorizzato ed è pronto per essere addebitato | Addebita i fondi disponibili per il pagamento |
payment_ | Il pagamento del cliente è stato rifiutato dal circuito della carta o è scaduto | Contatta il cliente tramite email o notifica push e chiedigli di fornire un’altra modalità di pagamento |
Per verificare localmente i webhook puoi utilizzare la CLI di Stripe. Dopo averla installata, puoi inoltrare gli eventi al server:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is '{{WEBHOOK_SIGNING_SECRET}}' (^C to quit)
Ulteriori informazioni sulla configurazione dei webhook.
Identificare gli addebiti in un PaymentIntent
Quando tenti di riscuotere un pagamento da un cliente, il PaymentIntent crea un addebito. Per recuperare l’ID dell’addebito più recente, esamina la proprietà latest_charge di PaymentIntent:
Per visualizzare tutti gli addebiti associati a un PaymentIntent, inclusi eventuali addebiti non riusciti, elenca tutti gli addebiti e specifica il parametro payment_
.
Gestire le azioni successive
Alcune modalità di pagamento prevedono passaggi aggiuntivi, come l’autenticazione, per completare la procedura di pagamento. Stripe.js gestisce queste operazioni automaticamente alla conferma del PaymentIntent ma, se hai un’integrazione avanzata, potresti preferire la gestione manuale.
La proprietà next_action del PaymentIntent visualizza il passaggio successivo che l’integrazione deve gestire per completare il pagamento. Il tipo di azioni successive possibili può variare a seconda della modalità di pagamento. Puoi trovare un elenco delle azioni successive possibili nella documentazione API.
Consulta la documentazione relativa alle modalità di pagamento per ulteriori dettagli su come gestire le azioni successive necessarie.