# Salvare i dati di pagamento durante il pagamento Come accettare un pagamento e salvare i dati di pagamento del cliente per acquisti futuri # Pagina in hosting > This is a Pagina in hosting for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=stripe-hosted. Utilizza [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) per un’integrazione rapida e low-code che consente ai clienti di salvare i dati di pagamento per acquisti futuri. ## Configurare Stripe [Lato server] Innanzitutto [registrati](https://dashboard.stripe.com/register) per creare un account Stripe. Utilizza le nostre librerie ufficiali per accedere all’API Stripe dalla tua applicazione: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Creare un cliente [Lato server] Per configurare una carta per pagamenti futuri, devi associarla a un *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). 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. > #### Confronta i riferimenti relativi a Customers v1 e Accounts v2 > > Se la tua piattaforma Connect utilizza [account configurati dal cliente](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), utilizza la nostra [guida](https://docs.stripe.com/connect/use-accounts-as-customers.md) per sostituire i riferimenti `Customer` ed eventi nel tuo codice con la documentazione di riferimento dell’API Accounts v2 equivalente. ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Una creazione riuscita restituisce l’oggetto [Customer](https://docs.stripe.com/api/customers/object.md). Puoi controllare l’oggetto per trovare l’`id` del cliente e memorizzare il valore nel database per poterlo recuperare successivamente. Puoi trovare questi clienti nella pagina [Clienti](https://dashboard.stripe.com/customers) della Dashboard. ## Creare una sessione di Checkout [Lato client] [Lato server] Aggiungi sul tuo sito web un pulsante di pagamento che richiami un endpoint lato server per creare una [sessione di Checkout](https://docs.stripe.com/api/checkout/sessions/create.md). Puoi anche creare una sessione di Checkout per un [cliente esistente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), che ti consente di precompilare i campi di Checkout con le informazioni di contatto note e di unificare la cronologia degli acquisti per quel cliente. ```html Buy cool new product
``` Una sessione di Checkout è una rappresentazione programmatica di quello che il cliente visualizza quando viene reindirizzato al modulo di pagamento. Puoi configurarlo con le seguenti opzioni: - [Voci riga](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) da addebitare - Valute da utilizzare Devi inserire `success_url` con il valore URL di una pagina del tuo sito web a cui Checkout reindirizza il cliente dopo che ha completato il pagamento. > Per impostazione predefinita, le sessioni di Checkout scadono 24 ore dopo la creazione. Dopo aver creato una sessione di Checkout, reindirizza il cliente all’[URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) restituito nella risposta. #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' post '/create-checkout-session' dosession = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment', # These placeholder URLs will be replaced in a following step. success_url: 'https://example.com/success', }) redirect session.url, 303 end ``` ### Metodi di pagamento Per impostazione predefinita, Stripe abilita le carte e altri metodi di pagamento più diffusi. Puoi attivare o disattivare i singoli metodi di pagamento nella [Stripe Dashboard](https://dashboard.stripe.com/settings/payment_methods). In Checkout, Stripe verifica la valuta e le eventuali limitazioni, poi presenta in modo dinamico al cliente i metodi di pagamento supportati. Per vedere come i clienti visualizzano i tuoi metodi di pagamento, inserisci un ID transazione o imposta l’importo e la valuta dell’ordine nella Dashboard. Puoi abilitare Apple Pay e Google Pay nelle [impostazioni dei metodi di pagamento](https://dashboard.stripe.com/settings/payment_methods). Per impostazione predefinita, Apple Pay è abilitato e Google Pay è disabilitato. Tuttavia, in alcuni casi Stripe li filtra anche quando sono abilitati. Filtriamo Google Pay se [abiliti l’imposta automatica](https://docs.stripe.com/tax/checkout.md) senza raccogliere un indirizzo di spedizione. Per abilitare Apple Pay o Google Pay, non devi apportare modifiche all’integrazione delle pagine in hosting su Stripe Checkout. Stripe gestisce questi pagamenti come gli altri pagamenti con carta. ### Confermare l’endpoint Conferma se il tuo endpoint è accessibile avviando il server web (ad esempio, `localhost:4242`) ed esegui il seguente comando: ```bash curl -X POST -is "http://localhost:4242/create-checkout-session" -d "" ``` Il terminale mostra una risposta simile alla seguente: ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### Verify your integration Adesso dovresti avere un pulsante di pagamento funzionante che reindirizza il cliente a Stripe Checkout. 1. Fai clic sul pulsante di pagamento. 1. Viene eseguito il reindirizzamento al modulo di pagamento di Stripe Checkout. Se l’integrazione non funziona: 1. Apri la scheda Rete negli strumenti per sviluppatori del browser. 1. Fai clic sul pulsante di pagamento e conferma l’invio della richiesta XHR all’endpoint lato server (`POST /create-checkout-session`). 1. Verifica che la richiesta restituisca uno stato 200. 1. Utilizza `console.log(session)` nel listener del clic sul pulsante per confermare la restituzione dei dati appropriati. Per ulteriori informazioni sulla configurazione e sul test della tua integrazione di Checkout in hosting, leggi come [Accettare un pagamento](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form). ## Salvare il metodo di pagamento [Lato server] Dopo aver configurato l’integrazione di Checkout in hosting, scegli una configurazione per la tua integrazione in modo da salvare i metodi di pagamento utilizzati dai clienti. Per impostazione predefinita, i metodi di pagamento utilizzati per effettuare un pagamento una tantum con Checkout non sono disponibili per usi futuri. ### Salvare i metodi di pagamento per effettuare gli addebiti all’esterno della sessione Puoi impostare Checkout in modo tale che salvi i metodi di pagamento utilizzati per un pagamento una tantum specificando l’argomento [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Questa opzione è utile se devi acquisire un metodo di pagamento registrato per utilizzarlo per commissioni future, ad esempio in caso di annullamento o no-show. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` Se utilizzi Checkout in modalità `subscription`, Stripe salva automaticamente la modalità di pagamento per effettuare gli addebiti dei pagamenti successivi. I metodi di pagamento con carta salvate utilizzando la modalità `setup_future_usage` o `subscription` non vengono visualizzate per gli acquisti di ritorno in Checkout (ulteriori informazioni di seguito). Ti consigliamo di utilizzare del [testo personalizzato](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) per includere link che rimandino a eventuali condizioni pertinenti relative all’utilizzo dei dati di pagamento salvati. > Le leggi sulla privacy globali sono complicate e dettagliate. Ti consigliamo di contattare il tuo team legale e di privacy prima di implementare [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) perché potrebbe avere effetti sul tuo attuale quadro normativo sulla privacy. Per ulteriori informazioni sul salvataggio dei dati di pagamento, consulta le [linee guida emesse dal Comitato europeo per la protezione dei dati](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf). ### Salva i metodi di pagamento per precompilarle in Checkout Per impostazione predefinita, Checkout utilizza [Link](https://docs.stripe.com/payments/link/checkout-link.md) per offrire ai tuoi clienti la possibilità di salvare e riutilizzare in modo sicuro i propri dati di pagamento. Se preferisci gestire tu stesso i metodi di pagamento, utilizza [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) quando crei una sessione di Checkout per consentire ai tuoi clienti di salvare i propri metodi di pagamento per acquisti futuri in Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` Se specifichi questo parametro in modalità [payment](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) o [subscription](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode), viene visualizzata una casella di controllo facoltativa che consente ai clienti di salvare esplicitamente il metodo di pagamento per acquisti futuri. Quando i clienti selezionano questa casella di controllo, Checkout salva il metodo di pagamento con [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout utilizza questo parametro per stabilire se un metodo di pagamento può essere precompilato per gli acquisti futuri. Quando utilizzi `saved_payment_method_options.payment_method_save`, non devi specificare `setup_future_usage` per salvare il metodo di pagamento. Se la tua piattaforma Connect utilizza [account configurati dal cliente](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), utilizza la nostra [guida](https://docs.stripe.com/connect/use-accounts-as-customers.md) per sostituire i riferimenti `Customer` ed eventi nel tuo codice con la documentazione di riferimento dell’API Accounts v2 equivalente. Devi specificare un oggetto `Customer` se utilizzi [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save). Per salvare un nuovo cliente, imposta la [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) della sessione di Checkout su `always`, altrimenti la sessione non salva il cliente o il metodo di pagamento. Se `payment_method_save` non viene specificato o se il cliente non accetta di salvare il metodo di pagamento, Checkout salva comunque i metodi di pagamento creati in modalità `subscription` o utilizzando `setup_future_usage`. Questi metodi di pagamento hanno un valore `allow_redisplay` impostato su `limited`, che impedisce che vengano precompilati per gli acquisti successivi al primo e consentono di rispettare le regole del circuito della carta e le normative sulla protezione dei dati. Scopri come [modificare il comportamento predefinito abilitato da questi metodi](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) e come modificare o ignorare il comportamento `allow_redisplay`. > Puoi utilizzare Checkout per salvare le carte e altri metodi di pagamento per effettuare addebiti all’esterno della sessione, ma Checkout precompila solo le carte salvate. Scopri come [precompilare le carte salvate](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Per salvare un metodo di pagamento senza un pagamento iniziale, [utilizza Checkout in modalità configurazione](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Consenti ai clienti di rimuovere i metodi di pagamento salvati Per permettere ai clienti di eliminare un metodo di pagamento salvato ed evitare che riappaia per futuri acquisti, utilizza [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) durante la creazione di una sessione di Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success.html" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` Il cliente non può rimuovere un metodo di pagamento se è collegato a un abbonamento attivo e il cliente non ha un metodo di pagamento predefinito salvato per i pagamenti di fatture e abbonamenti. # Pagina incorporata > This is a Pagina incorporata for when payment-ui is embedded-form. View the full page at https://docs.stripe.com/payments/checkout/save-during-payment?payment-ui=embedded-form. Utilizza [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) per incorporare un modulo di pagamento predefinito sul tuo sito web che consente ai clienti di salvare i dati di pagamento per acquisti futuri. ## Configurare Stripe [Lato server] Innanzitutto [registrati](https://dashboard.stripe.com/register) per creare un account Stripe. Utilizza le nostre librerie ufficiali per accedere all’API Stripe dalla tua applicazione: #### Ruby ```bash # Available as a gem sudo gem install stripe ``` ```ruby # If you use bundler, you can add this line to your Gemfile gem 'stripe' ``` ## Creare un cliente [Lato server] Per configurare una carta per pagamenti futuri, devi associarla a un *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). 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. > #### Confronta i riferimenti relativi a Customers v1 e Accounts v2 > > Se la tua piattaforma Connect utilizza [account configurati dal cliente](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), utilizza la nostra [guida](https://docs.stripe.com/connect/use-accounts-as-customers.md) per sostituire i riferimenti `Customer` ed eventi nel tuo codice con la documentazione di riferimento dell’API Accounts v2 equivalente. ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` Una creazione riuscita restituisce l’oggetto [Customer](https://docs.stripe.com/api/customers/object.md). Puoi controllare l’oggetto per trovare l’`id` del cliente e memorizzare il valore nel database per poterlo recuperare successivamente. Puoi trovare questi clienti nella pagina [Clienti](https://dashboard.stripe.com/customers) della Dashboard. ## Creare una sessione di Checkout [Lato server] From your server, create a *Checkout Session* (A Checkout Session represents your customer's session as they pay for one-time purchases or subscriptions through Checkout. After a successful payment, the Checkout Session contains a reference to the Customer, and either the successful PaymentIntent or an active Subscription) and set the [ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) to `embedded_page`. You can configure the [Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md) with [line items](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) to include and options such as [currency](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency). Puoi anche creare una sessione di Checkout per un [cliente esistente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), che ti consente di precompilare i campi di Checkout con le informazioni di contatto note e di unificare la cronologia degli acquisti per quel cliente. Per riportare i clienti a una pagina personalizzata che ospiti sul tuo sito, specifica l’URL della pagina nel parametro [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url). Includi la variabile del modello `{CHECKOUT_SESSION_ID}` nell’URL per recuperare lo stato della sessione nella pagina di ritorno. Checkout sostituisce automaticamente la variabile con l’ID della sessione di Checkout prima del reindirizzamento. Maggiori informazioni sulla [configurazione della pagina di ritorno](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page) e altre opzioni per personalizzare il [comportamento di reindirizzamento](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form) Dopo aver creato la sessione di Checkout, utilizza il parametro `client_secret` restituito nella risposta a [mount Checkout](https://docs.stripe.com/payments/checkout/save-during-payment.md#mount-checkout). #### Ruby ```ruby # This example sets up an endpoint using the Sinatra framework. require 'json' require 'sinatra' require 'stripe' # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' post '/create-checkout-session' do session = Stripe::Checkout::Session.create({ line_items: [{ price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }], mode: 'payment',ui_mode: 'embedded_page', return_url: 'https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}' }) {clientSecret: session.client_secret}.to_json end ``` ## Montare Checkout [Lato client] [Lato server] #### HTML + JS Checkout è disponibile come parte di [Stripe.js](https://docs.stripe.com/js.md). Includi lo script Stripe.js nella tua pagina aggiungendolo all’inizio del file HTML. Poi crea un nodo DOM vuoto (contenitore) da utilizzare per il montaggio. ```html
``` Inizializza Stripe.js con la tua chiave API pubblicabile. Crea una funzione asincrona `fetchClientSecret` che invia una richiesta al server per creare la sessione di Checkout e recuperare la chiave privata client. Specifica questa funzione in `options` quando crei l’istanza di Checkout. ```javascript // Initialize Stripe.js const stripe = Stripe('<>'); initialize(); // Fetch Checkout Session and retrieve the client secret async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Initialize Checkout const checkout = await stripe.createEmbeddedCheckoutPage({ fetchClientSecret, }); // Mount Checkout checkout.mount('#checkout'); } ``` #### React Installa [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) e il caricatore Stripe.js da npm: ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` Per utilizzare il componente Embedded Checkout, crea un `EmbeddedCheckoutProvider`. Chiama `loadStripe` con la chiave API pubblicabile e specifica la `Promise` restituita nel provider. Crea una funzione asincrona `fetchClientSecret` che invia una richiesta al server per creare la sessione di Checkout e recuperare la chiave privata client. Specifica questa funzione nella proposta `options` accettata dal provider. ```jsx import * as React from 'react'; import {loadStripe} from '@stripe/stripe-js'; import { EmbeddedCheckoutProvider, EmbeddedCheckout } from '@stripe/react-stripe-js'; // Make sure to call `loadStripe` outside of a component’s render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe('pk_test_123'); const App = () => { const fetchClientSecret = React.useCallback(() => { // Create a Checkout Session return fetch("/create-checkout-session", { method: "POST", }) .then((res) => res.json()) .then((data) => data.clientSecret); }, []); const options = {fetchClientSecret}; return (
) } ``` Checkout viene visualizzato in un iframe che invia a Stripe le informazioni sul pagamento in modo sicuro tramite una connessione HTTPS. > Evita di inserire Checkout all’interno di un altro iframe, perché alcuni metodi di pagamento richiedono il reindirizzamento a un’altra pagina per la conferma del pagamento. ## Salvare il metodo di pagamento [Lato server] Dopo aver configurato l’integrazione di Checkout incorporato, scegli una configurazione per la tua integrazione in modo da salvare i metodi di pagamento utilizzati dai clienti. Per impostazione predefinita, i metodi di pagamento utilizzati per effettuare un pagamento una tantum con Checkout non sono disponibili per usi futuri. ### Salvare i metodi di pagamento per effettuare gli addebiti all’esterno della sessione Puoi impostare Checkout in modo tale che salvi i metodi di pagamento utilizzati per un pagamento una tantum specificando l’argomento [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Questa opzione è utile se devi acquisire un metodo di pagamento registrato per utilizzarlo per commissioni future, ad esempio in caso di annullamento o no-show. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "payment_intent_data[setup_future_usage]=off_session" ``` Se utilizzi Checkout in modalità `subscription`, Stripe salva automaticamente la modalità di pagamento per effettuare gli addebiti dei pagamenti successivi. I metodi di pagamento con carta salvate utilizzando la modalità `setup_future_usage` o `subscription` non vengono visualizzate per gli acquisti di ritorno in Checkout (ulteriori informazioni di seguito). Ti consigliamo di utilizzare del [testo personalizzato](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) per includere link che rimandino a eventuali condizioni pertinenti relative all’utilizzo dei dati di pagamento salvati. > Le leggi sulla privacy globali sono complicate e dettagliate. Ti consigliamo di contattare il tuo team legale e di privacy prima di implementare [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage) perché potrebbe avere effetti sul tuo attuale quadro normativo sulla privacy. Per ulteriori informazioni sul salvataggio dei dati di pagamento, consulta le [linee guida emesse dal Comitato europeo per la protezione dei dati](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf). ### Salva i metodi di pagamento per precompilarle in Checkout Per impostazione predefinita, Checkout utilizza [Link](https://docs.stripe.com/payments/link/checkout-link.md) per offrire ai tuoi clienti la possibilità di salvare e riutilizzare in modo sicuro i propri dati di pagamento. Se preferisci gestire tu stesso i metodi di pagamento, utilizza [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save) quando crei una sessione di Checkout per consentire ai tuoi clienti di salvare i propri metodi di pagamento per acquisti futuri in Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer_creation=always \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_save]=enabled" ``` Se specifichi questo parametro in modalità [payment](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) o [subscription](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode), viene visualizzata una casella di controllo facoltativa che consente ai clienti di salvare esplicitamente il metodo di pagamento per acquisti futuri. Quando i clienti selezionano questa casella di controllo, Checkout salva il metodo di pagamento con [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout utilizza questo parametro per stabilire se un metodo di pagamento può essere precompilato per gli acquisti futuri. Quando utilizzi `saved_payment_method_options.payment_method_save`, non devi specificare `setup_future_usage` per salvare il metodo di pagamento. Se la tua piattaforma Connect utilizza [account configurati dal cliente](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), utilizza la nostra [guida](https://docs.stripe.com/connect/use-accounts-as-customers.md) per sostituire i riferimenti `Customer` ed eventi nel tuo codice con la documentazione di riferimento dell’API Accounts v2 equivalente. Devi specificare un oggetto `Customer` se utilizzi [saved_payment_method_options.payment_method_save](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_save). Per salvare un nuovo cliente, imposta la [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) della sessione di Checkout su `always`, altrimenti la sessione non salva il cliente o il metodo di pagamento. Se `payment_method_save` non viene specificato o se il cliente non accetta di salvare il metodo di pagamento, Checkout salva comunque i metodi di pagamento creati in modalità `subscription` o utilizzando `setup_future_usage`. Questi metodi di pagamento hanno un valore `allow_redisplay` impostato su `limited`, che impedisce che vengano precompilati per gli acquisti successivi al primo e consentono di rispettare le regole del circuito della carta e le normative sulla protezione dei dati. Scopri come [modificare il comportamento predefinito abilitato da questi metodi](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) e come modificare o ignorare il comportamento `allow_redisplay`. > Puoi utilizzare Checkout per salvare le carte e altri metodi di pagamento per effettuare addebiti all’esterno della sessione, ma Checkout precompila solo le carte salvate. Scopri come [precompilare le carte salvate](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Per salvare un metodo di pagamento senza un pagamento iniziale, [utilizza Checkout in modalità configurazione](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Consenti ai clienti di rimuovere i metodi di pagamento salvati Per permettere ai clienti di eliminare un metodo di pagamento salvato ed evitare che riappaia per futuri acquisti, utilizza [saved_payment_method_options.payment_method_remove](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-saved_payment_method_options-payment_method_remove) durante la creazione di una sessione di Checkout. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d customer={{CUSTOMER_ID}} \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/return" \ -d "saved_payment_method_options[payment_method_remove]=enabled" ``` Il cliente non può rimuovere un metodo di pagamento se è collegato a un abbonamento attivo e il cliente non ha un metodo di pagamento predefinito salvato per i pagamenti di fatture e abbonamenti.