Salvare i dati di pagamento durante il pagamento
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.
Conformità
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. These requirements generally apply if you want to save your customer’s payment method for future use, such as displaying a customer’s payment method to them in the checkout flow for a future purchase or charging them when they’re not actively using your website or app. Add terms to your website or app that state how you plan to save payment method details and allow customers to opt in.
When you save a payment method, you can only use it for the specific usage you have included in your terms. To charge a payment method when a customer is offline and save it as an option for future purchases, make sure that you explicitly collect consent from the customer for this specific use. For example, include a “Save my payment method for future use” checkbox to collect consent.
To charge them when they’re offline, make sure your terms include the following:
- 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.
Configurare StripeLato server
Innanzitutto crea un account Stripe o accedi.
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.
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 altre modalità di pagamento tra le più utilizzate per aiutarti a raggiungere più clienti. Detto ciò, ti consigliamo di attivare ulteriori modalità pertinenti per la tua azienda e i tuoi clienti. Per ulteriori informazioni sul supporto di prodotti e modalità di pagamento, consulta la pagina Opzioni di integrazione delle modalità di pagamento; per le commissioni consulta la nostra pagina delle tariffe.
Creare un PaymentIntentLato 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.
L’oggetto PaymentIntent rappresenta la tua intenzione di riscuotere un pagamento da un cliente e tiene traccia dei tentativi di addebito e delle modifiche di stato durante l’intera procedura di pagamento.
Creare il PaymentIntent
Crea un PaymentIntent sul tuo server con un importo e una valuta. Nell’ultima versione dell’API, specificare il parametro automatic_payment_methods
è facoltativo perché Stripe ne abilita la funzionalità per impostazione predefinita. Puoi gestire le modalità di pagamento dalla Dashboard. Stripe determina la restituzione delle modalità di pagamento idonee in base a fattori quali l’importo della transazione, la valuta e il flusso di pagamento.
Crea un PaymentIntent sul tuo server. Specifica un importo, una valuta e un cliente. Nell’ultima versione dell’API, specificare il parametro automatic_payment_methods
è facoltativo perché Stripe ne abilita la funzionalità per impostazione predefinita. Abilita setup_future_usage. Le modalità di pagamento configurate nella Dashboard vengono aggiunte automaticamente al Payment Intent.
Se non desideri utilizzare la Dashboard o se preferisci specificare manualmente le modalità di pagamento, puoi elencarle utilizzando l’attributo payment_method_types
.
Nota
Decidi sempre quanto addebitare sul lato server, che è un ambiente sicuro, anziché sul client. In questo modo impedisci ai client malintenzionati di scegliere un proprio prezzo.
Recuperare la chiave privata client
L’oggetto PaymentIntent contiene una chiave privata client, che il lato client usa per completare la procedura di pagamento in modo sicuro. Per specificare la chiave privata sul lato client, puoi utilizzare approcci diversi.
Acquisire i dati di pagamentoLato client
Acquisisci i dati di pagamento sul client con Payment Element. Payment Element è un componente di interfaccia utente preintegrato che semplifica l’acquisizione dei dati di pagamento per varie modalità 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.
If you do choose to use an iframe and want to accept Apple Pay or Google Pay, the iframe must have the allow attribute set to equal "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 nel componente 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_url
. In caso di esito positivo, i pagamenti con carta vengono immediatamente reindirizzati al return_url
.
Se vuoi impedire il reindirizzamento per i pagamenti con carta una volta completato il pagamento, puoi impostare il reindirizzamento su if_required
. In questo modo vengono reindirizzati solo i clienti che utilizzano modalità di pagamento basate sul reindirizzamento.
Nota
Il completamento della fase stripe.confirmPayment
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 cliente del 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_url
corrisponda a una pagina del tuo sito web che fornisce lo stato del pagamento. Quando Stripe reindirizza il cliente a return_url
, fornisce i seguenti parametri di ricerca dell’URL:
Parametro | Descrizione |
---|---|
payment_intent | Identificativo univoco per il PaymentIntent |
payment_intent_client_secret | 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.com
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. Ispeziona lo stato del PaymentIntent per decidere cosa mostrare ai tuoi clienti. Quando specifichi il return_url
, puoi anche aggiungere i tuoi parametri di ricerca che saranno mantenuti 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_debit
riutilizzabile, per cui devi utilizzare sepa_debit
per consultare le modalità di pagamento salvate.
Compliance
You’re responsible for your compliance with all applicable laws, regulations, and network rules when saving a customer’s payment details. When rendering past payment methods to your end customer for future purchases, make sure you’re listing payment methods where you’ve collected consent from the customer to save the payment method details for this specific future use. To differentiate between payment methods attached to customers that can and can’t be presented to your end customer as a saved payment method for future purchases, use the allow_redisplay parameter.
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 una modalità di pagamento per l’addebito, elenca le modalità di pagamento associate al tuo cliente. Questo esempio elenca le carte, ma puoi aggiungere qualsiasi altro tipo di modalità 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 riutilizzabile con addebito diretto SEPA. L’addebito diretto SEPA è una modalità di pagamento con notifica differita che transita da uno stato intermedio processing
prima di passare a uno stato succeeded
o requires_payment_method
alcuni giorni dopo.