Salvare i dati di pagamento durante un pagamento in-app
Salvare i dati di pagamento durante un pagamento nell'app mobile
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.
Configurare StripeLato serverLato client
Innanzitutto, hai bisogno di un Stripe account. Registrati ora.
Lato server
Per questa integrazione sono necessari endpoint sul server che comunicano con l’API Stripe. Utilizza le nostre librerie ufficiali per accedere all’API Stripe dal tuo server:
Lato client
L’SDK per iOS di Stripe è open source, completamente documentato e compatibile con le app che supportano iOS 13 o versioni successive.
Nota
Per ulteriori informazioni sulla versione più recente e su quelle precedenti dell’SDK, consulta la pagina Versioni su GitHub. Per ricevere notifiche quando viene pubblicata una nuova versione, guarda le versioni del repository.
Abilitare metodi di pagamento
I pagamenti con carta sono abilitati per impostazione predefinita. Visualizza le impostazioni dei metodi di pagamento e abilita i metodi di pagamento che vuoi accettare.
Aggiungi un endpointLato server
Nota
Per visualizzare il PaymentSheet prima di creare un PaymentIntent, consulta Raccogliere i dati di pagamento prima di creare un intento.
Questa integrazione utilizza tre oggetti dell’API Stripe:
PaymentIntent: Stripe lo utilizza per rappresentare la tua intenzione di riscuotere un pagamento da un cliente, monitorando i tentativi di addebito e le modifiche dello stato del pagamento durante la procedura.
Customer: per configurare un metodo di pagamento per pagamenti futuri, devi associarlo a un oggetto Customer. Crea un oggetto Customer quando il cliente crea un account con la tua attività. Se il cliente effettua il pagamento come ospite, puoi creare un oggetto Customer prima del pagamento e associarlo successivamente alla tua rappresentazione interna dell’account del cliente.
Chiave temporanea per l’oggetto Customer (facoltativa): l’oggetto Customer contiene informazioni sensibili che non possono essere recuperate direttamente da un’app. Una chiave temporanea consente all’SDK di accedere temporaneamente all’oggetto Customer.
Per motivi di sicurezza, la tua app non può creare questi oggetti. Aggiungi invece un endpoint sul tuo server per:
- Recuperare l’oggetto Customer o ne crea uno nuovo.
- Creare una chiave temporanea per l’oggetto Customer.
- Crea un PaymentIntent con i parametri importo, valuta e cliente, setup_future_usage . Inoltre, se lo ritieni opportuno, puoi includere il parametro
automatic_
. Stripe abilita la funzionalità per impostazione predefinita nell’ultima versione dell’API.payment_ methods - Restituisce la chiave privata client del Payment Intent, la stringa
secret
della chiave temporanea, l’id del cliente e la tua chiave pubblicabile alla tua app.
Nota
Payment Element per dispositivi mobili supporta solo setup_
con conti bancari degli Stati Uniti e carte di credito.
I metodi di pagamento mostrati ai clienti durante il completamento della transazione sono inclusi anche nel PaymentIntent. Puoi consentire a Stripe di acquisire i metodi di pagamento dalle impostazioni della Dashboard oppure puoi elencarli manualmente. Indipendentemente dall’opzione che sceglierai, ricorda che la valuta specificata nel PaymentIntent filtra il metodo di pagamento mostrato al cliente. Ad esempio, se specifichi eur
nel PaymentIntent e hai abilitato OXXO nella Dashboard, il cliente non vedrà OXXO perché questo metodo non supporta i pagamenti in eur
.
A meno che la tua integrazione non richieda un’opzione con codice per offrire i metodi di pagamento, Stripe consiglia l’opzione automatica. Ciò è dovuto al fatto che Stripe valuta le limitazioni dei metodi di pagamento, la valuta e altri parametri per determinare l’elenco dei metodi di pagamento accettati. I metodi di pagamento che migliorano la conversione e che sono più pertinenti alla valuta e alla posizione del cliente hanno la priorità.
Raccogliere i dati di pagamentoLato client
Per visualizzare Payment Element per dispositivi mobili nella schermata di pagamento, assicurati di:
- Mostrare i prodotti che il cliente sta acquistando insieme all’importo totale
- Utilizza Address Element per raccogliere dal cliente tutti i dati di spedizione richiesti
- Aggiungere un pulsante di pagamento per visualizzare l’interfaccia utente di Stripe
Se PaymentSheetResult
risulta .
, informa l’utente (ad esempio, visualizzando una schermata di conferma d’ordine).
Impostare allowsDelayedPaymentMethods
su true consente di utilizzare i metodi di pagamento con notifica differita come i conti bancari degli Stati Uniti. Per questi metodi di pagamento, lo stato finale del pagamento non è noto al completamento di PaymentSheet
, in quanto va a buon fine o meno in un secondo momento. Se supporti questi tipi di metodi di pagamento, informa il cliente che il suo ordine è confermato e procedi all’evasione (ad esempio alla spedizione del prodotto), spedisci il suo prodotto) solo quando avrai ricevuto il pagamento.
Configurare un URL di ritornoLato client
Il cliente potrebbe uscire dalla tua app per autenticarsi (ad es. in Safari o nell’app della banca). Per consentirgli di tornare automaticamente alla tua app dopo l’autenticazione, devi configurare uno schema URL personalizzato e impostare la classe AppDelegate per l’inoltro di URL all’SDK Stripe. Stripe non supporta i link universali.
Devi inoltre impostare il returnURL nel tuo oggetto PaymentSheet.Configuration sull’URL della tua app.
var configuration = PaymentSheet.Configuration() configuration.returnURL = "your-app://stripe-redirect"
Gestire gli eventi successivi al pagamentoLato server
Stripe invia un evento payment_intent.succeeded quando il pagamento viene completato. Utilizza lo strumento webhook Dashboard o segui la guida ai webhook per ricevere questi eventi ed eseguire azioni come l’invio di una email per la conferma di un ordine al cliente, la registrazione della vendita in un database o l’avvio del flusso di lavoro per una spedizione.
Ascolta questi eventi invece di attendere una chiamata di ritorno dal client. Sul client, il cliente potrebbe chiudere la finestra del browser o uscire dall’app prima dell’esecuzione della chiamata di ritorno e i client malintenzionati potrebbero manipolare la risposta. La configurazione dell’integrazione per l’ascolto di eventi asincroni ti consente di accettare diversi tipi di modalità di pagamento con una sola integrazione.
Oltre alla gestione dell’evento payment_
, è consigliabile gestire altri eventi durante la riscossione di pagamenti tramite Payment Element:
Evento | Descrizione | Azione |
---|---|---|
payment_intent.succeeded | Inviato quando un cliente ha disposto un pagamento con esito positivo. | Invia al cliente la conferma di un ordine ed evade l’ordine. |
payment_intent.processing | Inviato quando un cliente ha correttamente disposto un pagamento che non è stato ancora completato. Questo evento viene di solito inviato quando il cliente dispone un addebito bancario. Sarà poi seguito da un evento payment_ o da un evento payment_ . | Invia al cliente la conferma di un ordine che indica il pagamento in sospeso. Per i beni digitali, potresti voler evadere l’ordine senza attendere il completamento del pagamento. |
payment_intent.payment_failed | Inviato quando il cliente ha tentato un pagamento che non è andato a buon fine. | Se un pagamento passa da processing a payment_ , offri al cliente un altro tentativo di pagamento. |
Addebitare in un secondo momento un importo sul PaymentMethod salvatoLato server
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.