Evadere gli ordini
Come elaborare i pagamenti ricevuti con l'API Checkout Sessions
Quando ricevi un pagamento con l’API Checkout Sessions (incluso Payment Links), potresti dover intervenire per fornire al cliente ciò per cui ha pagato. Ad esempio, potresti aver bisogno di concedergli l’accesso a un servizio o potresti aver bisogno di spedirgli beni fisici. Questo processo è noto come evasione degli ordini e hai due modi per gestirlo:
- Manualmente: puoi evadere gli ordini manualmente utilizzando le informazioni che Stripe mette a tua disposizione. Ad esempio, puoi monitorare la Dashboard, controllare le email di notifica di pagamento o guardare i report ed evadere gli ordini.
- Automaticamente: puoi creare un sistema automatico di evasione degli ordini. Consigliato
La prima opzione funziona per progetti sperimentali o a basso volume, ma per la maggior parte delle situazioni consigliamo di automatizzare l’evasione degli ordini. Il resto di questa guida mostra come creare un sistema automatico di evasione degli ordini.
Evasione automatica degli ordini
Il sistema di evasione degli ordini descritto di seguito utilizza una combinazione di webhook e un reindirizzamento al tuo sito web per attivare l’evasione degli ordini. Devi utilizzare i webhook per assicurarti che l’ordine venga evaso per ogni pagamento e i reindirizzamenti consentono ai clienti di accedere ai servizi o ai dettagli relativi all’evasione subito dopo aver pagato.
Nota
Payment Links utilizza Checkout, quindi tutte le informazioni riportate di seguito si applicano sia a Payment Links che a Checkout, salvo diversa indicazione.
Crea una funzione di evasione ordiniLato server
Crea una funzione sul tuo server per evadere correttamente i pagamenti. I webhook attivano questa funzione e viene chiamata quando i clienti vengono indirizzati al tuo sito web dopo aver completato il pagamento. Questa guida definisce questa funzione come fulfill_
, ma è possibile assegnare alla funzione il nome desiderato.
La funzione fulfill_
deve:
- Gestisci correttamente le chiamate ripetute con lo stesso ID sessione di Checkout.
- Accetta un ID della sessione di Checkout come argomento.
- Recupera la sessione di Checkout dalla API con la proprietà line_items espansa.
- Controlla la proprietà payment_status per determinare se necessita dell’evasione degli ordini.
- Esegui l’evasione delle voci riga.
- Registra lo stato di evasione per la sessione di Checkout specificata.
Utilizza il codice riportato di seguito come punto di partenza per la funzione fulfill_
. I commenti TODO
indicano le funzione che devi implementare.
Nota
I frammenti di codice qui sotto potrebbero denominare la funzione fulfill_
come fulfillCheckout
or FulfillCheckout
a seconda della lingua selezionata, ma tutti rappresentano la stessa funzione.
Nota
se una sessione di Checkout include molte voci riga, utilizza la paginazione automatica con l’API per le voci riga di Checkout per recuperarle tutte.
A seconda dei metodi di pagamento che accetti e delle esigenze della tua attività, potrebbe essere utile che la funzione fulfill_
esegua le seguenti operazioni:
- Fornire l’accesso ai servizi.
- Avvia la spedizione della merce.
- Salva una copia dei dati di pagamento e delle voci riga nel tuo database.
- Invia al cliente una ricevuta personalizzata via email se non hai abilitato le ricevute di Stripe.
- Riconcilia le voci riga e le quantità acquistate se consenti ai clienti di rettificare le quantità in Checkout.
- Aggiorna i registri dell’inventario o delle scorte.
Crea un gestore eventi di pagamentoLato server
Per attivare l’evasione degli ordini, crea un gestore eventi webhook per ascoltare gli eventi di pagamento e attivare la funzione fulfill_
.
Quando qualcuno ti paga, viene creato un evento checkout.
. Configura un endpoint sul tuo server per accettare, elaborare e confermare la ricezione di questi eventi.
Confronto fra metodi di pagamento immediato e differito
Alcuni metodi di pagamento non sono istantanei, quali l’addebito diretto ACH e altri bonifici bancari. Ciò significa che i fondi non saranno immediatamente disponibili una volta completata la procedura di pagamento. I metodi di pagamento ritardato generano un evento checkout.session.async_payment_succeeded quando il pagamento viene completato in seguito. Lo stato dell’oggetto è in elaborazione fino a quando lo stato del pagamento non ha esito positivo o negativo.
Nota
La chiave privata del webhook (whsec_
) mostrata nel codice seguente proviene dalla CLI di Stripe o dall’endpoint del webhook. Puoi utilizzare la CLI di Stripe per il testing locale mentre Stripe utilizza un endpoint del webhook per inviare eventi al gestore quando è in esecuzione su un server. Per ulteriori informazioni, consulta la sezione successiva.
Potresti anche voler ascoltare e gestire gli eventi checkout.
. Ad esempio, puoi inviare un’email al tuo cliente quando un pagamento ritardato non va a buon fine.
Testa il gestore eventi localmente
Il modo più veloce per sviluppare e verificare il gestore eventi webhook è la CLI di Stripe. Se non disponi della CLI di Stripe, segui la guida all’installazione per iniziare.
Una volta installata la CLI di Stripe, puoi verificare il gestore eventi localmente. Esegui il tuo server (ad esempio, su localhost:4242
), quindi esegui il comando stripe listen per fare in modo che la CLI di Stripe inoltri gli eventi al tuo server locale:
stripe listen --forward-to localhost:4242/webhook Ready! Your webhook signing secret is 'whsec_<REDACTED>' (^C to quit)
Aggiungi la chiave privata del webhook (whsec_
) al codice di gestione eventi, quindi verifica l’evasione degli ordini accedendo a Checkout come cliente:
- Premi il pulsante di pagamento che ti reindirizza a Checkout o visita il tuo link di pagamento
- Fornisci i seguenti dati di test in Checkout:
- Inserisci
4242 4242 4242 4242
come numero della carta - Inserisci una data di scadenza futura per la carta
- Inserisci un numero di 3 cifre per il CVV
- Inserisci qualsiasi CAP di addebito (
90210
)
- Inserisci
- Premi il pulsante Paga
Una volta completato il pagamento, verifica quanto segue:
- Nella riga di comando, dove è in esecuzione
stripe listen
, viene visualizzato un eventocheckout.
inoltrato al tuo server locale.session. completed - I log del server mostrano l’output previsto dalla funzione
fulfill_
.checkout
Crea un endpoint del webhook
Dopo aver eseguito il test in locale, attiva il gestore eventi webhook sul tuo server. Poi crea un endpoint del webhook per inviare gli eventi checkout.
al tuo server, infine verifica di nuovo il flusso di pagamento.
Configura un URL della pagina di destinazioneConsigliato
Configura Checkout per indirizzare il cliente a una pagina del tuo sito web una volta che ha completato la procedura di pagamento. Includi il placeholder {CHECKOUT_
nell’URL della pagina, che viene sostituito con l’ID della sessione di Checkout quando il cliente viene reindirizzato da checkout.
Procedura di pagamento in hosting
Per le sessioni di Checkout con la ui_mode predefinita hosted
, imposta success_
.
Nota
Se hai configurato un endpoint del webhook per ascoltare gli eventi checkout.
e hai impostato un success_
, Checkout attende fino a 10 secondi affinché il server risponda alla consegna dell’evento del webhook prima di reindirizzare il cliente. Se utilizzi questo approccio, assicurati che il tuo server risponda agli eventi checkout.
il più rapidamente possibile.
Questo comportamento non è supportato per gli endpoint dei webhook registrati nell’account di un’organizzazione. Stripe non attende che gli endpoint del webhook dell’organizzazione che ascoltano checkout.
rispondano quando reindirizzano i clienti di Checkout.
Payment Links
Per i link di pagamento che con l’API, imposta after_completion.redirect.url.
Per i link di pagamento che crei nella Dashboard:
- Vai alla scheda Dopo il pagamento.
- Seleziona Non mostrare la pagina di conferma.
- Fornisci l’URL della pagina di destinazione con il segnaposto
{CHECKOUT_
(ad esempio,SESSION_ ID} https://example.
)com/after-checkout?session_ id={CHECKOUT_ SESSION_ ID}
Attiva l'evasione degli ordini sulla pagina di destinazioneConsigliato
L’ascolto dei webhook è obbligatorio per garantire che venga sempre attivata l’evasione per ogni pagamento, ma i webhook a volte possono subire ritardi. Per ottimizzare il flusso di pagamento e garantire l’evasione immediata degli ordini in presenza del cliente, attiva l’evasione degli ordini anche dalla tua pagina di destinazione.
Utilizza l’ID della sessione di Checkout dall’URL specificato nel passaggio precedente per effettuare le seguenti operazioni:
- Quando il tuo server riceve una richiesta per la tua pagina di destinazione di Checkout, estrai l’ID della sessione di Checkout dall’URL.
- Esegui la funzione
fulfill_
con l’ID fornito.checkout - Visualizza la pagina al termine del tentativo di evasione degli ordini.
Quando visualizzi la pagina di destinazione, puoi mostrare quanto segue:
- Dettagli della procedura di evasione ordini.
- Link o informazioni sui servizi a cui il cliente ha ora accesso.
- Dati logistici o di spedizione per merci fisiche.
I webhook sono obbligatori
Affidarsi solo alla pagina di destinazione di Checkout per attivare l’evasione degli ordini non è sufficiente, in quanto non è garantito che tutti i clienti la raggiungano. Ad esempio, qualcuno può pagare correttamente in Checkout e poi perdere la connessione a Internet prima che venga caricata la pagina di destinazione.
Configura un gestore eventi webhook in modo che Stripe possa inviare eventi di pagamento direttamente al tuo server, bypassando completamente il client. I webhook rappresentano il modo più affidabile per confermare la ricezione del pagamento. Se la consegna dell’evento webhook non va a buon fine, Stripe effettua più tentativi.