Salvare il metodo di pagamento di un cliente quando lo utilizza per pagare
Come salvare il metodo di pagamento del cliente quando si conferma un PaymentIntent o una sessione di Checkout
Nota
L’API Checkout Sessions supporta anche il salvataggio dei metodi di pagamento quando i clienti li utilizzano per un pagamento. Per ulteriori informazioni, consulta la nostra guida all’API Checkout Sessions.
Usa l’API Payment Intents per salvare i dati di pagamento da un acquisto. Esistono più casi d’uso:
- Addebita un pagamento a un cliente per un ordine di e-commerce e memorizza i dati per gli acquisti futuri.
- Avvia il primo di una serie di pagamenti ricorrenti.
- Addebita un deposito e memorizza i dati per addebitare l’intero importo in seguito.
Transazioni con carta presente
Le transazioni con carta presente, come i pagamenti tramite Stripe Terminal, utilizzano una procedura diversa per salvare il metodo di pagamento. Per i dettagli, consulta la documentazione di Terminal.
Conformità
Quando salvi i dati di pagamento di un cliente, sei responsabile della conformità a tutte le leggi, le normative e le regole del circuito applicabili. Questi requisiti si applicano generalmente se desideri salvare il metodo di pagamento del cliente per un uso futuro, ad esempio visualizzando il metodo di pagamento del cliente nel flusso di pagamento per un acquisto futuro o addebitando il pagamento quando il cliente non sta utilizzando attivamente il sito web o l’app. Aggiungi al tuo sito web o alla tua app delle condizioni che indichino come intendi salvare i dettagli del metodo di pagamento e permetti ai clienti di scegliere.
Quando salvi un metodo di pagamento, puoi utilizzarlo solo per lo scopo specifico che hai incluso nelle tue condizioni. Per addebitare un metodo di pagamento quando un cliente è offline e salvarlo come opzione per acquisti futuri, accertati di raccogliere esplicitamente il consenso del cliente per questo uso specifico. Ad esempio, includi una casella di controllo “Salva il mio metodo di pagamento per uso futuro” per raccogliere il consenso.
Per eseguire un addebito quando il cliente è offline, assicurati che i tuoi termini includano quanto segue:
- Il consenso del cliente a disporre un pagamento o una serie di pagamenti per suo conto per determinate transazioni.
- La tempistica e la frequenza dei pagamenti previste (ad esempio, se gli addebiti sono per rate programmate, pagamenti di abbonamenti o ricariche non programmate).
- Il modo in cui determini l’importo del pagamento.
- I tuoi termini di cancellazione, se la modalità di pagamento è per un servizio in abbonamento.
Assicurati di conservare una copia scritta del consenso fornito dal cliente relativamente a questi termini.
Attenzione
Il regolamento SCA impone l’autenticazione anticipata del cliente se intendi nuovamente riscuotere pagamenti da lui in futuro. Se il cliente non ha mai eseguito l’autenticazione iniziale, la banca del titolare della carta potrebbe rifiutare i pagamenti futuri e chiedere un’altra autenticazione.
Configura StripeLato server
Innanzitutto registrati per creare un account Stripe.
Utilizza le nostre librerie ufficiali per accedere all’API Stripe dalla tua applicazione:
Creare un clienteLato server
Per configurare una carta per pagamenti futuri, devi associarla a un Customer. Crea un oggetto Customer quando il cliente crea un account con la tua azienda. Un oggetto Customer ti permette di riutilizzare modalità di pagamento e monitorare più pagamenti.
Una creazione riuscita restituisce l’oggetto Customer. Puoi controllare l’oggetto per trovare l’id
del cliente e memorizzare il valore nel database per poterlo recuperare successivamente.
Puoi trovare questi clienti nella pagina Clienti della Dashboard.
Abilitare modalità di pagamento
Visualizza le impostazioni delle modalità di pagamento e abilita le modalità di pagamento che vuoi accettare. Per creare un PaymentIntent è necessario che sia abilitata almeno una modalità di pagamento.
Per impostazione predefinita, Stripe abilita le carte e altri metodi di pagamento tra i più utilizzati per aiutarti a raggiungere più clienti. Detto ciò, ti consigliamo di attivare ulteriori metodi pertinenti per la tua attività e i tuoi clienti. Per ulteriori informazioni sul supporto di prodotti e metodi di pagamento, consulta la sezione Supporto per il metodo di pagamento. Per le commissioni consulta la nostra pagina delle tariffe.
Crea un pagamentoLato server
Nota
Se vuoi presentare Payment Element senza prima creare un PaymentIntent, consulta la sezione Raccogliere i dati di pagamento prima di creare un intento.
Acquisire i dati di pagamentoLato client
Raccogli i dati di pagamento sul client con Payment Element. Payment Element è un componente di interfaccia utente preintegrato che semplifica la raccolta dei dati di pagamento per vari metodi di pagamento.
Payment Element contiene un iframe che invia a Stripe le informazioni sul pagamento in modo sicuro tramite una connessione HTTPS. Evita di inserire Payment Element all’interno di un altro iframe, perché alcune modalità di pagamento richiedono il reindirizzamento a un’altra pagina per la conferma del pagamento.
Se scegli di utilizzare un iframe e desideri accettare Apple Pay o Google Pay, l’iframe deve avere l’attributo allow impostato su "payment *"
.
Affinché l’integrazione funzioni, l’indirizzo della pagina di pagamento deve iniziare con https://
anziché con http://
. Puoi testare l’integrazione senza usare HTTPS, ma ricorda di abilitarlo quando sarà tutto pronto per accettare i pagamenti in modalità live.
Il Payment Element visualizza un modulo dinamico che consente al cliente di scegliere una modalità di pagamento. Per ogni modalità di pagamento, il modulo richiede automaticamente al cliente di inserire tutti i dati di pagamento necessari.
Personalizza l’aspetto
Personalizza Payment Element in base al design del tuo sito specificando l’oggetto appearance in options
al momento della creazione del provider Elements
.
Raccogli indirizzi
Per impostazione predefinita, Payment Element raccoglie solo i dettagli relativi all’indirizzo di fatturazione necessari. Per acquisire l’indirizzo di fatturazione completo di un cliente (ad esempio, per calcolare l’imposta su beni e servizi digitali) o l’indirizzo di spedizione, utilizza Address Element.
Richiedi il token esercente di Apple Pay
Se hai configurato la tua integrazione per accettare pagamenti Apple Pay, ti consigliamo di configurare l’interfaccia di Apple Pay in modo che restituisca un token esercente che consente di abilitare le transazioni avviate dall’esercente (MIT). Richiedi il tipo di token esercente pertinente in Payment Element.
Inviare il pagamento a StripeLato client
Usa stripe.confirmPayment per completare il pagamento con i dati di Payment Element. Fornisci a questa funzione un return_url per indicare dove Stripe deve reindirizzare l’utente dopo il completamento del pagamento. L’utente può essere dapprima reindirizzato su un sito intermedio, come una pagina di autorizzazione bancaria, prima di essere reindirizzato al return_
. In caso di esito positivo, i pagamenti con carta vengono immediatamente reindirizzati al return_
.
Se vuoi impedire il reindirizzamento per i pagamenti con carta una volta completato il pagamento, puoi impostare il reindirizzamento su if_
. In questo modo vengono reindirizzati solo i clienti che utilizzano metodi di pagamento basati sul reindirizzamento.
Nota
Il completamento della fase stripe.
può richiedere diversi secondi. Nel frattempo, disabilita il nuovo invio del modulo e mostra un indicatore di attesa, ad esempio una rotellina che gira. Se viene restituito un errore, mostralo al cliente, riabilita il modulo e nascondi l’indicatore di attesa. Se il cliente deve eseguire operazioni aggiuntive per completare il pagamento, ad esempio l’autenticazione, Stripe.js guida l’utente nella procedura.
Se il pagamento è andato a buon fine, la carta viene salvata nell’oggetto Customer. La modifica viene applicata al campo customer di PaymentMethod. A questo punto, associa l’ID dell’oggetto Customer alla rappresentazione interna di un cliente, se ne hai una. Ora puoi utilizzare l’oggetto PaymentMethod memorizzato per riscuotere i pagamenti dal cliente in futuro senza chiedere nuovamente l’inserimento dei dati di pagamento.
Assicurati che return_
corrisponda a una pagina del tuo sito web che fornisce lo stato del pagamento. Quando Stripe reindirizza il cliente a return_
, fornisce i seguenti parametri di ricerca dell’URL:
Parametro | Descrizione |
---|---|
payment_ | Identificativo univoco per il PaymentIntent |
payment_ | La chiave privata client dell’oggetto PaymentIntent . |
Attenzione
Se disponi di strumenti che tracciano la sessione del browser del cliente, potresti aver bisogno di aggiungere il dominio stripe.
all’elenco di esclusione dei referrer. I reindirizzamenti fanno sì che alcuni strumenti creino nuove sessioni, il che ti impedisce di tracciare la sessione completa.
Utilizza uno dei parametri di ricerca per recuperare il PaymentIntent. Controlla lo stato del PaymentIntent per decidere cosa mostrare ai tuoi clienti. Quando specifichi il return_
, puoi anche aggiungere i tuoi parametri di ricerca che verranno conservati durante la procedura di reindirizzamento.
Addebita in un secondo momento l'importo sulla modalità di pagamento salvataLato server
Avviso
Per impostazione predefinita, bancontact
, ideal
e sofort
sono modalità di pagamento una tantum. Se configurate per essere utilizzate in futuro, generano una modalità di pagamento di tipo sepa_
riutilizzabile, per cui devi utilizzare sepa_
per consultare le modalità di pagamento salvate.
Conformità
Quando salvi i dati di pagamento di un cliente, sei responsabile della conformità a tutte le leggi, le normative e le regole del circuito applicabili. Quando presenti al cliente finale i metodi di pagamento utilizzati in passato per acquisti futuri, accertati di elencare i metodi di pagamento per i quali hai raccolto il consenso a salvare i dati del metodo di pagamento per gli usi futuri specifici. Per differenziare i metodi di pagamento legati ai clienti che possono o non possono essere presentati al cliente finale come metodo di pagamento salvato per acquisti futuri, utilizza il parametro allow_redisplay.
Quando hai la certezza di voler addebitare l’importo al cliente al di fuori della sessione, utilizza gli ID Customer e PaymentMethod per creare un PaymentIntent. Per trovare un metodo di pagamento per l’addebito, elenca i metodi di pagamento associati al tuo cliente. In questo esempio sono elencate le carte, ma puoi aggiungere qualsiasi altro tipo supportato.
Quando hai gli ID Customer e PaymentMethod, crea un PaymentIntent con l’importo e la valuta del pagamento. Per effettuare il pagamento al di fuori della sessione, imposta alcuni altri parametri:
- Imposta off_session su
true
per indicare che il cliente non si trova nel tuo flusso di pagamento durante il tentativo di pagamento e non può soddisfare una richiesta di autenticazione fatta da un partner, come un emittente di carte, una banca o un altro istituto di pagamento. Se, durante il flusso di pagamento, un partner richiede l’autenticazione, Stripe richiede le esenzioni utilizzando le informazioni del cliente presenti in una precedente transazione all’interno della sessione. Se le condizioni per l’esenzione non sono soddisfatte, PaymentIntent potrebbe generare un errore. - Imposta su
true
il valore della proprietà confirm del PaymentIntent. Di conseguenza, viene generata una conferma immediata al momento della creazione del PaymentIntent. - Imposta payment_method sull’ID del PaymentMethod e customer sull’ID del cliente.
Testa l'integrazione
Usa i dettagli di pagamento e la pagina di reindirizzamento di test per verificare se il funzionamento dell’integrazione è quello atteso. Per visualizzare i dettagli relativi a ciascuna modalità di pagamento, fai clic sulle seguenti schede:
Eseguire il test dell’addebito con un PaymentMethod con addebito SEPA salvato
La conferma del PaymentIntent usando iDEAL, Bancontact o Sofort genera un PaymentMethod di tipo addebito diretto SEPA. L’addebito diretto SEPA è un metodo di pagamento con notifica differita che transita da uno stato intermedio processing
prima di passare a uno stato succeeded
o requires_
alcuni giorni dopo.