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
Panoramica
Informazioni sui pagamenti con Stripe
    Panoramica
    Accettare un pagamento
    Valute
    Pagamenti rifiutati
    Bonifici
    Pagamenti ricorrenti
    Autenticazione 3D Secure
    Rimborsare e annullare pagamenti
    Saldi e tempo di regolamento
    Ricevute
    Gestire gli eventi webhook
    Preparazione alla SCA
    API precedenti
Eseguire l'upgrade dell'integrazione
Analisi dei dati sui pagamenti
Pagamenti online
PanoramicaTrovare il caso d'uso più adattoUsa Managed Payments
Utilizzare Payment Links
Utilizza una pagina di completamento della transazione preintegrata
Crea un'integrazione personalizzata con Elements
Creare un'integrazione in-app
Metodi di pagamento
Aggiungere modalità di pagamento
Gestire i metodi di pagamento
Pagare più velocemente con Link
Interfacce di pagamento
Payment Links
Checkout
Elements per il Web
Pagamenti in-app
Scenari di pagamento
Gestire più valute
Flussi di pagamento personalizzati
Acquisizione flessibile
Orchestrazione
Pagamenti di persona
Terminal
Oltre i pagamenti
Costituire un'azienda
Criptovaluta
Commercio agentico
Financial Connections
Climate
Informazioni sulle frodi
Protezione contro le frodi di Radar
Gestisci le contestazioni
Verificare l'identità
Pagina inizialePagamentiAbout Stripe payments

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 iOS con la classe PaymentSheet. Consulta il nostro esempio di integrazione su GitHub.

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 iOS di Stripe è open source, completamente documentato e compatibile con le app che supportano iOS 13 o versioni successive.

Per installare l’SDK, segui questi passaggi:

  1. In Xcode, seleziona File > Aggiungi dipendenze pacchetto… e inserisci https://github.com/stripe/stripe-ios-spm come URL repository.
  2. Seleziona il numero dell’ultima versione dalla nostra pagina delle release.
  3. Aggiungi il prodotto StripePaymentSheet al target della tua app.

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 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-09-30.clover" \ -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

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

Nella schermata di pagamento della tua app, 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 tua chiave pubblicabile utilizzando StripeAPI.shared e inizializza PaymentSheet.

import UIKit import StripePaymentSheet class CheckoutViewController: UIViewController { @IBOutlet weak var checkoutButton: UIButton! var paymentSheet: PaymentSheet? let backendCheckoutUrl = URL(string: "Your backend endpoint/payment-sheet")! // Your backend endpoint override func viewDidLoad() { super.viewDidLoad() checkoutButton.addTarget(self, action: #selector(didTapCheckoutButton), for: .touchUpInside) checkoutButton.isEnabled = false // MARK: Fetch the PaymentIntent client secret, Ephemeral Key secret, Customer ID, and publishable key var request = URLRequest(url: backendCheckoutUrl) request.httpMethod = "POST" let task = URLSession.shared.dataTask(with: request, completionHandler: { [weak self] (data, response, error) in guard let data = data, let json = try? JSONSerialization.jsonObject(with: data, options: []) as? [String : Any], let customerId = json["customer"] as? String, let customerEphemeralKeySecret = json["ephemeralKey"] as? String, let paymentIntentClientSecret = json["paymentIntent"] as? String, let publishableKey = json["publishableKey"] as? String, let self = self else { // Handle error return } STPAPIClient.shared.publishableKey = publishableKey // MARK: Create a PaymentSheet instance var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "Example, Inc." configuration.customer = .init(id: customerId, ephemeralKeySecret: customerEphemeralKeySecret) // Set `allowsDelayedPaymentMethods` to true if your business handles // delayed notification payment methods like US bank accounts. configuration.allowsDelayedPaymentMethods = true self.paymentSheet = PaymentSheet(paymentIntentClientSecret: paymentIntentClientSecret, configuration: configuration) DispatchQueue.main.async { self.checkoutButton.isEnabled = true } }) task.resume() } }

Quando il cliente tocca il pulsante Checkout, chiama present per aprire il PaymentSheet. Dopo che il cliente ha completato il pagamento, Stripe chiude il PaymentSheet e chiama il blocco di completamento con PaymentSheetResult.

@objc func didTapCheckoutButton() { // MARK: Start the checkout process paymentSheet?.present(from: self) { paymentResult in // MARK: Handle the payment result switch paymentResult { case .completed: print("Your order is confirmed") case .canceled: print("Canceled!") case .failed(let error): print("Payment failed: \(error)") } } }

Se PaymentSheetResult risulta .completed, 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 ritorno
Lato 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.

SceneDelegate.swift
Swift
No results
// This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let url = URLContexts.first?.url else { return } let stripeHandled = StripeAPI.handleURLCallback(with: url) if (!stripeHandled) { // This was not a Stripe url – handle the URL normally as you would } }

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 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 dopo l’inizializzazione di PaymentSheet.Configuration.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.name = "Jenny Rosen" configuration.defaultBillingDetails.email = "jenny.rosen@example.com" configuration.defaultBillingDetails.phone = "888-888-8888"

FacoltativoAbilitare Apple Pay

Nota

Se nella tua schermata di pagamento è presente un pulsante Apple Pay dedicato, segui le istruzioni indicate nella guida di Apple Pay e usa ApplePayContext per riscuotere il pagamento tramite il pulsante Apple Pay. Puoi usare PaymentSheet per gestire altri metodi di pagamento.

Registra un nuovo ID esercente Apple

Ottieni un ID esercente Apple effettuando la registrazione di un nuovo identificativo sul sito web degli sviluppatori Apple.

Compila il modulo con una descrizione e un identificativo. La descrizione è un promemoria per te e potrai modificarla in futuro. Stripe consiglia di utilizzare il nome dell’app come identificativo (ad esempio, merchant.com.{{YOUR_APP_NAME}}).

Crea un nuovo certificato di Apple Pay

Crea un certificato per la tua app per crittografare i dati di pagamento.

Vai su Impostazioni certificato iOS nella Dashboard, fai clic su Aggiungi nuova applicazione e segui la guida.

Scarica un file con richiesta di firma certificato (CSR) per ottenere da Apple un certificato sicuro che ti consentirà di utilizzare Apple Pay.

Un file CSR deve essere utilizzato per emettere un solo certificato. Se cambi il tuo ID esercente Apple, devi andare su Impostazioni certificato iOS nella Dashboard per ottenere un nuovo CSR e un nuovo certificato.

Effettua l’integrazione con Xcode

Aggiungi la funzionalità Apple Pay alla tua app. In Xcode, apri le impostazioni di progetto, fai clic nella scheda Signing & Capabilities (Firma e funzionalità), poi aggiungi la funzionalità Apple Pay. A questo punto il sistema potrebbe chiederti di effettuare l’accesso al tuo account di sviluppatore. Seleziona l’ID esercente che hai creato e la tua app sarà pronta ad accettare Apple Pay.

Abilita la funzionalità Apple Pay in Xcode

Aggiungi Apple Pay

Per aggiungere Apple Pay a PaymentSheet, imposta applePay dopo l’inizializzazione di PaymentSheet.Configuration con il tuo ID esercente Apple e il codice Paese della tua attività.

var configuration = PaymentSheet.Configuration() configuration.applePay = .init( merchantId: "merchant.com.your_app_name", merchantCountryCode: "US" )

Monitoraggio degli ordini

Per aggiungere informazioni sulla tracciabilità degli ordini in iOS 16 o versioni successive, configura un authorizationResultHandler nel tuo PaymentSheet.ApplePayConfiguration.Handlers. Stripe chiama la tua implementazione dopo che il pagamento è stato completato, ma prima che iOS chiuda il foglio di Apple Pay.

Nella tua implementazione authorizationResultHandler, recupera i dettagli dell’ordine dal tuo server per l’ordine completato. Aggiungi i dettagli al PKPaymentAuthorizationResult indicato e chiama il gestore di completamento specificato.

Per ulteriori informazioni sul monitoraggio degli ordini, consulta la Documentazione sugli ordini in Apple Wallet.

let customHandlers = PaymentSheet.ApplePayConfiguration.Handlers( authorizationResultHandler: { result, completion in // Fetch the order details from your service MyAPIClient.shared.fetchOrderDetails(orderID: orderID) { myOrderDetails result.orderDetails = PKPaymentOrderDetails( orderTypeIdentifier: myOrderDetails.orderTypeIdentifier, // "com.myapp.order" orderIdentifier: myOrderDetails.orderIdentifier, // "ABC123-AAAA-1111" webServiceURL: myOrderDetails.webServiceURL, // "https://my-backend.example.com/apple-order-tracking-backend" authenticationToken: myOrderDetails.authenticationToken) // "abc123" // Call the completion block on the main queue with your modified PKPaymentAuthorizationResult completion(result) } } ) var configuration = PaymentSheet.Configuration() configuration.applePay = .init(merchantId: "merchant.com.your_app_name", merchantCountryCode: "US", customHandlers: customHandlers)

FacoltativoAbilitare la scansione delle carte

Per abilitare il supporto per la scansione delle carte, imposta la NSCameraUsageDescription (Privacy - Descrizione dell’utilizzo della fotocamera) in Info.plist della tua applicazione, quindi indica un motivo per accedere alla fotocamera (ad esempio, “Per acquisire le carte”). I dispositivi con iOS 13 o versioni successive supportano la scansione delle carte.

FacoltativoAbilita i pagamenti ACH

Per abilitare i pagamenti con addebito ACH, includi StripeFinancialConnections come dipendenza per la tua app.

L’SDK per iOS di Stripe è open source, completamente documentato e compatibile con le app che supportano iOS 13 o versioni successive.

Per installare l’SDK, segui questi passaggi:

  1. In Xcode, seleziona File > Aggiungi dipendenze pacchetto… e inserisci https://github.com/stripe/stripe-ios-spm come URL repository.
  2. Seleziona il numero dell’ultima versione dalla nostra pagina delle release.
  3. Aggiungi il prodotto StripeFinancialConnections al target della tua app.

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.

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.

var configuration = PaymentSheet.Configuration() configuration.paymentMethodLayout = .automatic

Acquisire gli indirizzi degli utenti

Acquisisci gli indirizzi di spedizione o fatturazione locali e internazionali dai tuoi clienti utilizzando il componente Address Element.

Nome visualizzato dell’esercente

Specifica un nome dell’attività per il cliente impostando merchantDisplayName. Per impostazione predefinita, viene utilizzato il nome della tua app.

var configuration = PaymentSheet.Configuration() configuration.merchantDisplayName = "My app, Inc."

Modalità scura

Il PaymentSheet si adatta automaticamente alle impostazioni di visualizzazione del sistema dell’utente (modalità chiara o scura). Se la tua app non supporta la modalità scura, puoi impostare lo stile sulla modalità alwaysLight o alwaysDark.

var configuration = PaymentSheet.Configuration() configuration.style = .alwaysLight

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.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.address.country = "US" configuration.defaultBillingDetails.email = "foo@bar.com"

Raccolta dei dati per gli addebiti

Utilizza billingDetailsCollectionConfiguration per specificare la modalità di raccolta dei dati per gli addebiti nel Payment Sheet.

Puoi acquisire il nome, l’indirizzo email, il numero di telefono e l’indirizzo del cliente.

Se vuoi raccogliere solo i dati di fatturazione richiesti dal metodo di pagamento, imposta billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethodsu true. In tal caso, i PaymentSheet.Configuration.defaultBillingDetails vengono impostati come dati di fatturazione del metodo di pagamento.

Se desideri raccogliere ulteriori dettagli di fatturazione che non sono necessariamente richiesti dalla modalità di pagamento, imposta billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod su false. In tal caso, i dettagli di fatturazione raccolti tramite il PaymentSheet vengono impostati come dettagli di fatturazione della modalità di pagamento.

var configuration = PaymentSheet.Configuration() configuration.defaultBillingDetails.email = "foo@bar.com" configuration.billingDetailsCollectionConfiguration.name = .always configuration.billingDetailsCollectionConfiguration.email = .never configuration.billingDetailsCollectionConfiguration.address = .full configuration.billingDetailsCollectionConfiguration.attachDefaultsToPaymentMethod = 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.resetCustomer() quando l’utente si disconnette.

import UIKit import StripePaymentSheet class MyViewController: UIViewController { @objc func didTapLogoutButton() { PaymentSheet.resetCustomer() // 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 chiamare una modalità confirm in un secondo momento per 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 che hai acquisito i dati di pagamento.

Completare il pagamento nell’interfaccia utente dell’app

I seguenti passaggi ti illustrano come completare il pagamento nell’interfaccia utente della tua app. Consulta il nostro esempio di integrazione su GitHub.

  1. Innanzitutto, inizializza PaymentSheet.FlowController invece di PaymentSheet e aggiorna la tua interfaccia utente con la sua proprietà paymentOption. Questa proprietà contiene un’immagine e un’etichetta che rappresentano la modalità di pagamento predefinita, inizialmente selezionata dal cliente.
PaymentSheet.FlowController.create(paymentIntentClientSecret: paymentIntentClientSecret, configuration: configuration) { [weak self] result in switch result { case .failure(let error): print(error) case .success(let paymentSheetFlowController): self?.paymentSheetFlowController = paymentSheetFlowController // Update your UI using paymentSheetFlowController.paymentOption } }
  1. Poi chiama presentPaymentOptions per raccogliere i dati relativi al pagamento. Al termine, aggiorna di nuovo la tua interfaccia utente con la proprietà paymentOption.
paymentSheetFlowController.presentPaymentOptions(from: self) { // Update your UI using paymentSheetFlowController.paymentOption }
  1. Infine, chiama confirm.
paymentSheetFlowController.confirm(from: self) { paymentResult in // MARK: Handle the payment result switch paymentResult { case .completed: print("Payment complete!") case .canceled: print("Canceled!") case .failed(let error): print(error) } }

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-09-30.clover" \ -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