Passa al contenuto
Crea account
o
Accedi
Il logo della documentazione Stripe
/
Chiedi all'IA
Crea un account
Accedi
Inizia
Pagamenti
Ricavi
Per piattaforme e marketplace
Gestione del denaro
Risorse per sviluppatori
PanoramicaVedi tutti i prodotti
Start building
Avviare lo sviluppo
    Configurare il tuo ambiente di sviluppo
    Inviare la prima richiesta API
    Accettare un pagamento
    Creare e testare nuove funzionalità
    Lista di controllo per il passaggio alla modalità live
Informazioni sulle API
Creare con un LLM
Utilizza Stripe senza dover scrivere codice
Configura Stripe
Crea un account
Dashboard Stripe
Passare a Stripe
Pagina inizialeIniziaStart developing

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 Stripe
Lato server
Lato 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:

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

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:

build.gradle.kts
Kotlin
Groovy
No results
plugins { id("com.android.application") } android { ... } dependencies { // ... // Stripe Android SDK implementation("com.stripe:stripe-android:21.26.0") // Include the financial connections SDK to support US bank account as a payment method implementation("com.stripe:financial-connections:21.26.0") }

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 endpoint
Lato 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:

  1. 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.

  2. (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.

  3. (Facoltativo) 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.

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 Customer Ephemeral Key nella tua integrazione.

Per motivi di sicurezza, la tua app non può creare questi oggetti. Aggiungi invece un endpoint sul tuo server per:

  1. Recuperare l’oggetto Customer o ne crea uno nuovo.
  2. Creare una chiave temporanea per l’oggetto Customer.
  3. Crea un PaymentIntent con i parametri importo, valuta e cliente. Inoltre, se lo ritieni opportuno, puoi includere il parametro automatic_payment_methods. Stripe abilita la funzionalità per impostazione predefinita nell’ultima versione dell’API.
  4. 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.

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à.

Nota

È possibile eseguire il fork e distribuire un’implementazione di questo endpoint su CodeSandbox per effettuare dei test.

Puoi gestire i metodi di pagamento dalla Dashboard. Stripe determina la restituzione dei metodi di pagamento idonee in base a fattori quali l’importo della transazione, la valuta e il flusso di pagamento. Il PaymentIntent viene creato utilizzando i metodi di pagamento configurati nella Dashboard. Se non desideri utilizzare la Dashboard o se preferisci specificare manualmente i metodi di pagamento, puoi elencarli utilizzando l’attributo payment_method_types.

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Create a Customer (use an existing Customer ID if this is a returning customer) curl https://api.stripe.com/v1/customers \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" # Create an Ephemeral Key for the Customer curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-08-27.basil" \ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ # Create a PaymentIntent curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="eur" \ # In the latest version of the API, specifying the `automatic_payment_methods` parameter # is optional because Stripe enables its functionality by default. -d "automatic_payment_methods[enabled]"=true \

Acquisire i dati di pagamento
Lato 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

Inizializza un’istanza di PaymentSheet in onCreate dell’Attività di pagamento, specificando un metodo per gestire il risultato.

import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import com.stripe.android.paymentsheet.PaymentSheet import com.stripe.android.paymentsheet.PaymentSheetResult @Composable fun App() { val paymentSheet = remember { PaymentSheet.Builder(::onPaymentSheetResult) }.build() } private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { // implemented in the next steps }

Quindi, recupera la chiave privata client del PaymentIntent, la chiave privata temporanea, l’ID cliente e la chiave pubblicabile dall’endpoint creato nel passaggio precedente. Imposta la chiave pubblicabile utilizzando PaymentConfiguration e memorizza le altre per usarle quando visualizzi l’istanza di PaymentSheet.

import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalContext import com.stripe.android.PaymentConfiguration import com.stripe.android.paymentsheet.PaymentSheet import com.stripe.android.paymentsheet.PaymentSheetResult @Composable fun App() { val paymentSheet = remember { PaymentSheet.Builder(::onPaymentSheetResult) }.build() val context = LocalContext.current var customerConfig by remember { mutableStateOf<PaymentSheet.CustomerConfiguration?>(null) } var paymentIntentClientSecret by remember { mutableStateOf<String?>(null) } LaunchedEffect(context) { // Make a request to your own server and retrieve payment configurations val networkResult = ... if (networkResult.isSuccess) { paymentIntentClientSecret = networkResult.paymentIntent customerConfig = PaymentSheet.CustomerConfiguration( id = networkResult.customer, ephemeralKeySecret = networkResult.ephemeralKey ) PaymentConfiguration.init(context, networkResult.publishableKey) } } } private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { // implemented in the next steps }

Quando il cliente tocca il pulsante di pagamento, chiama presentWithPaymentIntent per aprire la scheda di pagamento. Non appena il cliente completa il pagamento, la scheda si chiude e PaymentSheetResultCallback viene chiamata con un PaymentSheetResult.

import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalContext import com.stripe.android.PaymentConfiguration import com.stripe.android.paymentsheet.PaymentSheet import com.stripe.android.paymentsheet.PaymentSheetResult @OptIn(ExperimentalCustomerSessionApi::class) @Composable fun App() { val paymentSheet = remember { PaymentSheet.Builder(::onPaymentSheetResult) }.build() val context = LocalContext.current var customerConfig by remember { mutableStateOf<PaymentSheet.CustomerConfiguration?>(null) } var paymentIntentClientSecret by remember { mutableStateOf<String?>(null) } LaunchedEffect(context) { // Make a request to your own server and retrieve payment configurations val networkResult = ... if (networkResult.isSuccess) { paymentIntentClientSecret = networkResult.paymentIntent customerConfig = PaymentSheet.CustomerConfiguration( id = networkResult.customer, ephemeralKeySecret = networkResult.ephemeralKey ) PaymentConfiguration.init(context, networkResult.publishableKey) } } Button( onClick = { val currentConfig = customerConfig val currentClientSecret = paymentIntentClientSecret if (currentConfig != null && currentClientSecret != null) { presentPaymentSheet(paymentSheet, currentConfig, currentClientSecret) } } ) { Text("Checkout") } } private fun presentPaymentSheet( paymentSheet: PaymentSheet, customerConfig: PaymentSheet.CustomerConfiguration, paymentIntentClientSecret: String ) { paymentSheet.presentWithPaymentIntent( paymentIntentClientSecret, PaymentSheet.Configuration.Builder(merchantDisplayName = "My merchant name") .customer(customerConfig) // Set `allowsDelayedPaymentMethods` to true if your business handles // delayed notification payment methods like US bank accounts. .allowsDelayedPaymentMethods(true) .build() ) } private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) { when(paymentSheetResult) { is PaymentSheetResult.Canceled -> { print("Canceled") } is PaymentSheetResult.Failed -> { print("Error: ${paymentSheetResult.error}") } is PaymentSheetResult.Completed -> { // Display for example, an order confirmation screen print("Completed") } } }

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 pagamento
Lato 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_intent.succeeded, è consigliabile gestire altri eventi durante la riscossione di pagamenti tramite Payment Element:

EventoDescrizioneAzione
payment_intent.succeededInviato quando un cliente ha disposto un pagamento con esito positivo.Invia al cliente la conferma di un ordine ed evade l’ordine.
payment_intent.processingInviato 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_intent.succeeded o da un evento payment_intent.payment_failed.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_failedInviato quando il cliente ha tentato un pagamento che non è andato a buon fine.Se un pagamento passa da processing a payment_failed, offri al cliente un altro tentativo di pagamento.

Testare l'integrazione

Numero di cartaScenarioCome eseguire il test
Il pagamento con carta ha esito positivo e non richiede l’autenticazione.Compila il modulo della carta di credito utilizzando il numero di carta di credito con scadenza, CVC e codice postale.
Il pagamento con carta richiede l’autenticazione.Compila il modulo della carta di credito utilizzando il numero di carta di credito con scadenza, CVC e codice postale.
La carta viene rifiutata con un codice di rifiuto del tipo insufficient_funds.Compila il modulo della carta di credito utilizzando il numero di carta di credito con scadenza, CVC e codice postale.
La carta UnionPay ha una lunghezza variabile di 13-19 cifre.Compila il modulo della carta di credito utilizzando il numero di carta di credito con scadenza, CVC e codice postale.

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.Configuration.

Kotlin
Java
No results
val configuration = PaymentSheet.Configuration.Builder(merchantDisplayName = "Example, Inc.") .defaultBillingDetails( PaymentSheet.BillingDetails( name = "Jenny Rosen", email = "jenny.rosen@example.com", phone = "888-888-8888" ) ) .build()

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:

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.

Kotlin
Java
No results
val googlePayConfiguration = PaymentSheet.GooglePayConfiguration( environment = PaymentSheet.GooglePayConfiguration.Environment.Test, countryCode = "US", currencyCode = "USD" // Required for Setup Intents, optional for Payment Intents ) val configuration = PaymentSheet.Configuration.Builder(merchantDisplayName = "My merchant name") .googlePay(googlePayConfiguration) .build()

Testare Google Pay

Google ti consente di effettuare pagamenti di test tramite la sua suite di carte di test. La suite di test supporta l’utilizzo delle carte di test di Stripe.

Puoi testare Google Pay utilizzando un dispositivo Android fisico. Verifica che il tuo dispositivo si trovi in un Paese in cui Google Pay è supportato e che tu abbia effettuato l’accesso, sul dispositivo di test, a un account Google con una carta reale già configurata su Google Wallet.

FacoltativoAbilitare la scansione delle carte

Per abilitare il supporto alla scansione delle carte, aggiungi stripecardscan al blocco dependencies del tuo file app/build.gradle:

build.gradle
Groovy
Kotlin
No results
apply plugin: 'com.android.application' android { ... } dependencies { // ... // StripeCardScan implementation 'com.stripe:stripecardscan:21.26.0' }

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:

build.gradle.kts
Kotlin
Groovy
No results
plugins { id("com.android.application") } android { ... } dependencies { // ... // Financial Connections Android SDK implementation("com.stripe:financial-connections:21.26.0") }

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.

Kotlin
Java
No results
PaymentSheet.Configuration.Builder("Example, Inc.") .paymentMethodLayout(PaymentSheet.PaymentMethodLayout.Automatic) .build()

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.

Kotlin
Java
No results
PaymentSheet.Configuration.Builder( merchantDisplayName = "My app, Inc." ).build()

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:

Kotlin
Java
No results
// force dark AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) // force light AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)

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.

Kotlin
Java
No results
val address = PaymentSheet.Address(country = "US") val billingDetails = PaymentSheet.BillingDetails( address = address, email = "foo@bar.com" ) val configuration = PaymentSheet.Configuration.Builder(merchantDisplayName = "Merchant, Inc.") .defaultBillingDetails(billingDetails) .build()

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.attachDefaultsToPaymentMethod su true.

Kotlin
Java
No results
val billingDetails = PaymentSheet.BillingDetails( email = "foo@bar.com" ) val billingDetailsCollectionConfiguration = BillingDetailsCollectionConfiguration( attachDefaultsToPaymentMethod = true, name = BillingDetailsCollectionConfiguration.CollectionMode.Always, email = BillingDetailsCollectionConfiguration.CollectionMode.Never, address = BillingDetailsCollectionConfiguration.AddressCollectionMode.Full, ) val configuration = PaymentSheet.Configuration.Builder(merchantDisplayName = "Merchant, Inc.") .defaultBillingDetails(billingDetails) .billingDetailsCollectionConfiguration(billingDetailsCollectionConfiguration) .build()

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.resetCustomer() quando l’utente si disconnette.

Kotlin
Java
No results
class MyActivity: Activity { fun onLogoutButtonClicked() { PaymentSheet.resetCustomer(this) // Other logout logic required by your app } }

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’integrazione esemplificativa è disponibile sul nostro GitHub.

  1. Innanzitutto, inizializza PaymentSheet.FlowController invece di PaymentSheet usando uno dei metodi di Builder.
Android (Kotlin)
Android (Java)
No results
class CheckoutActivity : AppCompatActivity() { private lateinit var flowController: PaymentSheet.FlowController override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) flowController = PaymentSheet.FlowController.Builder( paymentResultCallback = ::onPaymentSheetResult, paymentOptionCallback = ::onPaymentOption, ).build(this) } }
  1. Poi chiama configureWithPaymentIntent con 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.
Android (Kotlin)
Android (Java)
No results
flowController.configureWithPaymentIntent( paymentIntentClientSecret = paymentIntentClientSecret, configuration = PaymentSheet.Configuration.Builder("Example, Inc.") .customer(PaymentSheet.CustomerConfiguration( id = customerId, ephemeralKeySecret = ephemeralKeySecret )) .build() ) { isReady, error -> if (isReady) { // Update your UI using `flowController.getPaymentOption()` } else { // handle FlowController configuration failure } }
  1. 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 la paymentOption restituita.
Android (Kotlin)
Android (Java)
No results
// ... flowController.presentPaymentOptions() // ... private fun onPaymentOption(paymentOption: PaymentOption?) { if (paymentOption != null) { paymentMethodButton.text = paymentOption.label paymentMethodButton.setCompoundDrawablesRelativeWithIntrinsicBounds( paymentOption.drawableResourceId, 0, 0, 0 ) } else { paymentMethodButton.text = "Select" paymentMethodButton.setCompoundDrawablesRelativeWithIntrinsicBounds( null, null, null, null ) } }
  1. 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.
Android (Kotlin)
Android (Java)
No results
// ... flowController.confirmPayment() // ... private fun onPaymentSheetResult( paymentSheetResult: PaymentSheetResult ) { when (paymentSheetResult) { is PaymentSheetResult.Canceled -> { // Payment canceled } is PaymentSheetResult.Failed -> { // Payment Failed. See logcat for details or inspect paymentSheetResult.error } is PaymentSheetResult.Completed -> { // Payment Complete } } }

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_cvc_recollection durante la creazione del PaymentIntent.

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Create a Customer (use an existing Customer ID if this is a returning customer) curl https://api.stripe.com/v1/customers \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" # Create an Ephemeral Key for the Customer curl https://api.stripe.com/v1/ephemeral_keys \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -H "Stripe-Version: 2025-08-27.basil" \ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ # Create a PaymentIntent curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X "POST" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="eur" \ -d "payment_method_options[card][require_cvc_recollection]"=true \ # In the latest version of the API, specifying the `automatic_payment_methods` parameter # is optional because Stripe enables its functionality by default. -d "automatic_payment_methods[enabled]"=true \
Questa pagina è stata utile?
SìNo
  • Hai bisogno di aiuto? Contatta l'assistenza clienti.
  • Partecipa al nostro programma di accesso anticipato.
  • Dai un'occhiata al nostro registro delle modifiche.
  • Domande? Contattaci.
  • LLM? Leggi llms.txt.
  • Realizzato da Markdoc
Code quickstart
Guide correlate
API Elements Appearance
Altri scenari di pagamento
Come funzionano le carte