Accettare un pagamento
Accettare pagamenti online in modo sicuro
Crea un modulo di pagamento o utilizza una pagina di pagamento preintegrata per iniziare ad accettare i pagamenti online.

Integra l’interfaccia utente per i pagamenti preintegrata di Stripe nella procedura di pagamento della tua app Android con la classe PaymentSheet.
Configurare StripeLato serverLato client
Innanzitutto, devi creare un account Stripe. 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 Android di Stripe è open source e completamente documentato.
Per installare l’SDK, aggiungi stripe-android al blocco dependencies del tuo file app/build.gradle:
Nota
Per ulteriori informazioni sulla versione più recente e su quelle precedenti dell’SDK, consulta la pagina Releases su GitHub. Per ricevere una notifica quando viene pubblicata una nuova versione, imposta il controllo delle versioni per il repository.
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.
Aggiungere 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.
(Optional) 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.
(Facoltativo) CustomerSession: l’oggetto Customer contiene informazioni sensibili che non possono essere recuperate direttamente da un’app. Una CustomerSession concede all’SDK l’accesso temporaneo all’oggetto Customer e fornisce altre opzioni di configurazione. Visualizza un elenco completo delle opzioni di configurazione.
Nota
Se non salvi mai le carte in un oggetto Customer e non permetti ai clienti che ritornano di riutilizzare le carte salvate, puoi omettere gli oggetti Customer e CustomerSession nella tua integrazione.
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.
- Crea una CustomerSession per il cliente.
- Crea un PaymentIntent con i parametri importo, valuta e cliente.
- Restituisce la chiave privata client del Payment Intent, il
client_della CustomerSession, l’id del cliente e la tua chiave pubblicabile alla tua app.secret
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à.
Acquisire i dati di pagamentoLato client
Prima di visualizzare Payment Element per dispositivi mobili, la tua pagina di pagamento dovrebbe:
- Mostrare i prodotti acquistati e l’importo totale
- Raccogliere tutti i dati di spedizione richiesti utilizzando Address Element
- Includere un pulsante di pagamento per visualizzare l’interfaccia utente di Stripe
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.
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. |
Testare l'integrazione
Per ulteriori informazioni su come testare la tua integrazione, consulta la sezione Test.
FacoltativoAbilita Link
Abilita Link nelle impostazioni delle modalità di pagamento per consentire ai tuoi clienti di salvare e riutilizzare i dati di pagamento in modo sicuro utilizzando il pulsante di pagamento rapido con un clic di Link.
Specificare l’indirizzo email del cliente in Mobile Payment Element
Link autentica un cliente utilizzando il suo indirizzo email. Stripe consiglia di precompilare il maggior numero di informazioni possibile per semplificare la procedura di pagamento.
Per precompilare il nome, l’indirizzo email e il numero di telefono del cliente, specifica una proprietà defaultBillingDetails con le informazioni del cliente durante l’inizializzazione di PaymentSheet..
FacoltativoAbilitare Google Pay
Configura la tua integrazione
Per usare Google Pay, prima di tutto abilita l’API di Google Pay aggiungendo quanto segue al tag <application> del tuo AndroidManifest.xml:
<application> ... <meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true" /> </application>
Per ulteriori informazioni, consulta la pagina Set up Google Pay API (Configurazione dell’API di Google Pay) di Google Pay per Android.
Aggiungi Google Pay
Per aggiungere Google Pay alla tua integrazione, specifica una PaymentSheet.GooglePayConfiguration con il tuo ambiente Google Pay (produzione o test) e il codice paese della tua azienda all’inizializzazione di PaymentSheet.Configuration.
Testare Google Pay
Google consente di effettuare pagamenti di test tramite la sua suite di carte di test. La suite di test supporta l’utilizzo di carte di test Stripe.
Devi testare Google Pay utilizzando un dispositivo Android fisico anziché un dispositivo simulato in un Paese in cui è supportato Google Pay. Accedi a un account Google sul tuo dispositivo di test con una carta reale salvata su Google Wallet.
FacoltativoAbilitare la scansione delle carte
Per abilitare l’assistenza alla scansione delle carte, richiedi l’accesso di produzione all’API Google Pay dalla Console Google Pay & Wallet.
- Se hai abilitato Google Pay, la funzione di scansione delle carte è automaticamente disponibile nella nostra interfaccia utente sui dispositivi idonei. Per ulteriori informazioni sui dispositivi idonei, consulta i vincoli dell’API Google Pay
- Importante: la funzione di scansione della carta è disponibile solo nelle build firmate con la stessa chiave di firma registrata nella Console Google Pay & Wallet. Le build di test o debug che utilizzano chiavi di firma diverse (ad esempio, le build distribuite tramite Firebase App Tester) non mostreranno l’opzione Scansiona carta. Per testare la scansione della carta nelle build pre-release, è necessario:
- Firmare le build di test con la tua chiave di firma di produzione
- Aggiungere l’impronta della chiave di firma di test alla Console Google Pay e Wallet
FacoltativoAbilita i pagamenti ACH
Per abilitare i pagamenti con addebito ACH, includi Financial Connections come dipendenza per la tua app.
L’SDK per Android di Stripe è open source e completamente documentato.
Per installare l’SDK, aggiungi financial-connections al blocco dependencies del tuo file app/build.gradle:
Nota
Per ulteriori informazioni sulla versione più recente e su quelle precedenti dell’SDK, consulta la pagina Releases su GitHub. Per ricevere una notifica quando viene pubblicata una nuova versione, imposta il controllo delle versioni per il repository.
FacoltativoPersonalizzare la scheda
Tutte le personalizzazioni vengono configurate utilizzando l’oggetto PaymentSheet.Configuration.
Aspetto
Personalizza i colori, i caratteri e molto altro ancora in base all’aspetto della tua app utilizzando l’API Appearance.
Layout del metodo di pagamento
Configura il layout dei metodi di pagamento nel foglio utilizzando paymentMethodLayout. Puoi visualizzarli orizzontalmente, verticalmente o lasciare che Stripe ne ottimizzi il layout automaticamente.

Acquisire gli indirizzi degli utenti
Acquisisci gli indirizzi di spedizione o fatturazione locali e internazionali dai tuoi clienti utilizzando il componente Address Element.
Nome attività da visualizzare
Specifica un nome dell’attività per il cliente impostando merchantDisplayName. Per impostazione predefinita, viene utilizzato il nome della tua app.
Modalità scura
Per impostazione predefinita, il PaymentSheet si adatta automaticamente alle impostazioni di visualizzazione del sistema dell’utente (modalità chiara o scura). Puoi modificare questa impostazione configurando la modalità chiara o scura nella tua app:
Dettagli di addebito predefiniti
Per impostare i valori predefiniti per i dettagli di addebito raccolti nella scheda di pagamento, configura la proprietà defaultBillingDetails. PaymentSheet precompila i campi della scheda con i valori che fornisci.
Configura la raccolta dei dati di fatturazione
Utilizza BillingDetailsCollectionConfiguration per specificare la modalità di raccolta dei dati di fatturazione nel PaymentSheet.
Puoi acquisire il nome, l’indirizzo email, il numero di telefono e l’indirizzo del cliente.
Se vuoi associare i dati di fatturazione predefiniti all’oggetto PaymentMethod anche quando tali campi non sono raccolti nell’interfaccia utente, imposta billingDetailsCollectionConfiguration. su true.
Nota
Rivolgiti al tuo consulente legale per sapere quali sono le leggi applicabili alla raccolta di informazioni. Richiedi i numeri di telefono solo se necessari per la transazione.
FacoltativoGestire la disconnessione dell'utente
PaymentSheet memorizza localmente alcune informazioni per ricordare se un utente ha utilizzato Link in un’app. Per cancellare lo stato interno di PaymentSheet, chiama il metodo PaymentSheet. quando l’utente si disconnette.
FacoltativoCompletare il pagamento nell'interfaccia utente
Puoi visualizzare il Payment Sheet solo per raccogliere i dati relativi alla modalità di pagamento e completare il pagamento nell’interfaccia utente dell’app. Questa opzione è utile se disponi di un pulsante personalizzato per l’acquisto o se occorrono passaggi aggiuntivi dopo la raccolta dei dati di pagamento.

Nota
Un esempio di integrazione è disponibile sul nostro GitHub.
- Innanzitutto, inizializza PaymentSheet.FlowController invece di
PaymentSheetusando uno dei metodi di Builder.
- Poi chiama
configureWithPaymentIntentcon le chiavi degli oggetti Stripe recuperate dal tuo back-end e aggiorna la tua interfaccia utente nella callback con getPaymentOption(). Contiene un’immagine e un’etichetta che rappresentano il metodo di pagamento selezionato al momento dal cliente.
- Poi chiama presentPaymentOptions per raccogliere i dati del pagamento. Quando il cliente termina l’operazione, la scheda si chiude e viene chiamata la paymentOptionCallback specificata in precedenza in
create. Esegui questo metodo per aggiornare la tua interfaccia utente con lapaymentOptionrestituita.
- Infine, chiama confirm per completare il pagamento. Quando il cliente termina l’operazione, la scheda si chiude e viene chiamata la paymentResultCallback specificata in precedenza in
create.
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.
FacoltativoAbilita la nuova raccolta del CVC al momento della conferma
Le seguenti istruzioni per raccogliere nuovamente il CVC di una carta salvata durante la conferma del PaymentIntent presuppongono che l’integrazione includa quanto segue:
- Creare i PaymentIntent prima di raccogliere i dati di pagamento
Aggiornare i parametri della creazione dell’intento
Per raccogliere nuovamente il CVC alla conferma del pagamento, includi require_ durante la creazione del PaymentIntent.