# Salvar dados de pagamento durante o pagamento Saiba como aceitar um pagamento e salvar os dados de pagamento do seu cliente para compras futuras. # Página hospedada > This is a Página hospedada 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. Use o [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) para obter uma integração rápida e low-code que permita aos clientes salvar os dados de pagamento para compras futuras. ## Configuração da Stripe [Lado do servidor] Primeiro, [cadastre-se](https://dashboard.stripe.com/register) para obter uma conta Stripe. Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo: #### 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' ``` ## Criar um cliente [Lado do servidor] Para configurar um cartão para pagamentos futuros, vincule-a a um *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Crie um objeto Customer quando o cliente abrir uma conta na sua empresa. Os objetos Customer permitem a reutilização de formas de pagamento e o rastreamento em vários pagamentos. > #### Use a API Accounts v2 para representar clientes > > Se sua integração usar [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), substitua `Customer` e as referências a eventos nos exemplos de código pelas referências equivalentes da API Accounts v2. Para mais informações, consulte [Representar clientes com objetos Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` A criação bem-sucedida retorna o objeto [Customer](https://docs.stripe.com/api/customers/object.md). Você pode inspecionar o objeto para obter o `id` do cliente e armazená-lo no seu banco de dados para recuperação posterior. Veja esses clientes na página [Clientes](https://dashboard.stripe.com/customers) do Dashboard. ## Criar uma sessão do Checkout [Lado do cliente] [Lado do servidor] Adicione um botão de checkout ao site para chamar um endpoint do lado do servidor e criar uma [sessão do Checkout](https://docs.stripe.com/api/checkout/sessions/create.md). Também é possível criar uma sessão do Checkout para um [cliente existente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), permitindo preencher campos do Checkout com dados de contato conhecidos e unificar o histórico de compras desse cliente. ```html Buy cool new product
``` A Sessão de Checkout a representação programática do que seu cliente vê ao ser redirecionado a um formulário de pagamento. Você pode configurá-lo com opções como: - [Itens de linha](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) a ser cobrado - Moedas a usar O campo `success_url` deve ser preenchido com o URL de uma página do seu site para onde o Checkout retornará o cliente após a conclusão do pagamento. > As Sessões do Checkout expiram 24 horas após a criação por padrão. Depois de criar uma Sessão do Checkout, redirecione o cliente ao [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) retornado na resposta. #### 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. client = Stripe::StripeClient.new('<>') post '/create-checkout-session' dosession = client.v1.checkout.sessions.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 ``` ### formas de pagamento Por padrão, a Stripe habilita cartões e outras formas de pagamento comuns. É possível ativar ou desativar formas de pagamento individuais no [Stripe Dashboard](https://dashboard.stripe.com/settings/payment_methods). No Checkout, a Stripe avalia a moeda e as restrições e apresenta dinamicamente as formas de pagamento aceitas ao cliente. Para ver como as formas de pagamento aparecem para os clientes, informe um ID de transação ou defina um valor e moeda de pedido no Dashboard. Você pode ativar Apple Pay e Google Pay nas [configurações de formas de pagamento](https://dashboard.stripe.com/settings/payment_methods). Por padrão, o Apple Pay fica ativado, e o Google Pay, desativado. No entanto, em alguns casos, a Stripe remove-os mesmo quando estão ativados. Removemos o Google Pay se você [ativar o imposto automático](https://docs.stripe.com/tax/checkout.md) sem coletar um endereço de entrega. As páginas hospedadas na Stripe do Checkout não precisam de mudanças na integração para habilitar Apple Pay ou Google Pay. A Stripe trata esses pagamentos da mesma forma que os outros pagamentos com cartão. ### Confirme seu endpoint Confirme se o endpoint pode ser acessado iniciando seu servidor web (por exemplo, `localhost:4242`) e executando o seguinte comando: ```bash curl -X POST -is "http://localhost:4242/create-checkout-session" -d "" ``` Você deve ver uma resposta no seu terminal assim: ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### Verifique sua integração Agora o botão de checkout já deve estar pronto para redirecionar seu cliente para o Stripe Checkout. 1. Clique no botão de checkout. 1. Você será redirecionado para o formulário de pagamento do Stripe Checkout. Se a sua integração não estiver funcionando: 1. Abra a guia Rede nas ferramentas de desenvolvedor do navegador. 1. Clique no botão de checkout e confirme se uma solicitação de XHR foi enviada para o endpoint no lado do servidor (`POST /create-checkout-session`). 1. Verifique se a solicitação retorna um status 200. 1. Use `console.log(session)` dentro de seu ouvinte de clique do botão para confirmar se os dados corretos são retornados. Para obter mais informações sobre como configurar e testar sua integração hospedada do Checkout, consulte [Aceitar um pagamento](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form). ## Salvar forma de pagamento [Lado do servidor] Após configurar a integração hospedada do Checkout, escolha uma configuração para a integração para salvar as formas de pagamento usadas pelos clientes. Por padrão, as formas de pagamento usadas para fazer um pagamento avulso com o Checkout não estão disponíveis para uso futuro. ### Salve formas de pagamento para cobrá-las fora de sessão Você pode configurar o Checkout para salvar formas de pagamento usadas para fazer um pagamento avulso passando o argumento [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Isso é útil quando você precisa capturar uma forma de pagamento registrada para usar em tarifas futuras, como tarifas de cancelamento ou não comparecimento. ```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 você usa o Checkout no modo de `subscription`, a Stripe salva automaticamente a forma de pagamento para cobrar pagamentos subsequentes. Formas de pagamento com cartão salvas para clientes usando o modo `setup_future_usage` ou `subscription` não aparecem para compras de devolução no Checkout (mais detalhes abaixo). Recomendamos usar [texto personalizado](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) para vincular eventuais termos relevantes a respeito do uso de dados de pagamento salvos. > As leis globais de privacidade são complicadas e variadas. Recomendamos entrar em contato com a equipe jurídica ou de privacidade antes de implementar o [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage), porque isso pode afetar a estrutura de conformidade com requisitos de privacidade. Consulte [as orientações do Conselho de Proteção Europeu](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) para saber mais sobre como salvar dados de pagamento. ### Salvar formas de pagamento para preenchê-las no Checkout Por padrão, o Checkout usa [Link](https://docs.stripe.com/payments/link/checkout-link.md) para oferecer aos seus clientes a opção de salvar e reutilizar com segurança suas informações de pagamento. Se preferir gerenciar as formas de pagamento por conta própria, use [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) ao criar uma Checkout Session para permitir que seus clientes salvem suas formas de pagamento para compras futuras no 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" ``` Passar esse parâmetro no modo de [pagamento](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) ou [assinatura](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) exibe uma caixa de seleção opcional para permitir que os clientes salvem explicitamente suas formas de pagamento para compras futuras. Quando os clientes marcam essa caixa de seleção, o Checkout salva a forma de pagamento com [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). O Checkout usa esse parâmetro para determinar se uma forma de pagamento pode ser preenchida antecipadamente em compras futuras. Ao usar `saved_payment_method_options.payment_method_save`, você não precisa passar `setup_future_usage` para salvar a forma de pagamento. > #### Use a API Accounts v2 para representar clientes > > A API Accounts v2 está disponível de forma geral (GA) para usuários do Connect e em prévia pública para outros usuários da Stripe. Todos os usuários da Stripe podem ativar a Accounts v2 [no Dashboard](https://dashboard.stripe.com/settings/connect/platform-setup). No entanto, ao fazer chamadas para a API Accounts v2, usuários em prévia precisam [especificar uma versão de prévia](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning). > > Para a maioria dos casos de uso, recomendamos [modelar seus clientes como objetos Account configurados pelo cliente](https://docs.stripe.com/connect/use-accounts-as-customers.md), em vez de usar objetos [Customer](https://docs.stripe.com/api/customers.md). Usar [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) exige um objeto para representar seu cliente, seja um objeto `Account` configurado pelo cliente ou um objeto `Customer`. Para salvar um novo cliente, defina [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) da Checkout Session como `always`. Caso contrário, a sessão não salva o cliente nem a forma de pagamento. Se `payment_method_save` não for passado ou se o cliente não concordar em salvar a forma de pagamento, o Checkout ainda salvará as formas de pagamento criadas no modo `subscription` ou usando `setup_future_usage`. Essas formas de pagamento têm o valor `allow_redisplay` de `limited`, o que evita que sejam preenchidas para devolução de compras e permite que você cumpra as regras das bandeiras de cartão e os regulamentos de proteção de dados. Saiba como [alterar o comportamento padrão habilitado por esses modos](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) e como alterar ou sobrepor o comportamento do `allow_redisplay`. > Você pode usar o Checkout para salvar cartões e outras formas de pagamento para cobrá-los fora da sessão, mas o Checkout preenche automaticamente os cartões salvos. Saiba como [preencher previamente cartões salvos](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Para salvar uma forma de pagamento sem um pagamento inicial, [use o Checkout no modo de configuração](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Permitir que os clientes removam formas de pagamento salvas Para permitir que os clientes removam uma forma de pagamento salva para que ela não volte a aparecer em pagamentos futuros, use [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) ao criar uma sessão do Checkout. #### Accounts v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_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" ``` #### Customers v1 ```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" ``` O cliente não pode remover uma forma de pagamento se ela estiver vinculada a uma assinatura ativa e o cliente não tiver uma forma de pagamento padrão salva para pagamentos de faturas e assinaturas. # Página integrada > This is a Página integrada 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. Use o [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) para incorporar um formulário de pagamento pré-integrado ao seu site que permita aos clientes salvar os dados de pagamento para compras futuras. ## Configuração da Stripe [Lado do servidor] Primeiro, [cadastre-se](https://dashboard.stripe.com/register) para obter uma conta Stripe. Use nossas bibliotecas oficiais para acessar a API da Stripe no seu aplicativo: #### 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' ``` ## Criar um cliente [Lado do servidor] Para configurar um cartão para pagamentos futuros, vincule-a a um *Customer* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments). Crie um objeto Customer quando o cliente abrir uma conta na sua empresa. Os objetos Customer permitem a reutilização de formas de pagamento e o rastreamento em vários pagamentos. > #### Use a API Accounts v2 para representar clientes > > Se sua integração usar [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), substitua `Customer` e as referências a eventos nos exemplos de código pelas referências equivalentes da API Accounts v2. Para mais informações, consulte [Representar clientes com objetos Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). ```curl curl https://api.stripe.com/v1/customers \ -u "<>:" \ -d "name=Jenny Rosen" \ --data-urlencode "email=jennyrosen@example.com" ``` A criação bem-sucedida retorna o objeto [Customer](https://docs.stripe.com/api/customers/object.md). Você pode inspecionar o objeto para obter o `id` do cliente e armazená-lo no seu banco de dados para recuperação posterior. Veja esses clientes na página [Clientes](https://dashboard.stripe.com/customers) do Dashboard. ## Criar uma sessão do Checkout [Lado do servidor] Em seu servidor, crie um *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) e defina o [ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) como `embedded_page`. Você pode configurar a [Sessão de checkout](https://docs.stripe.com/api/checkout/sessions/create.md) com [itens de linha](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) a serem incluídos e opções como [currency](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency). Também é possível criar uma sessão do Checkout para um [cliente existente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), permitindo preencher campos do Checkout com dados de contato conhecidos e unificar o histórico de compras desse cliente. Para retornar os clientes para uma página personalizada hospedada em seu site, especifique o URL da página no parâmetro [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url). Inclua a variável de modelo `{CHECKOUT_SESSION_ID}` no URL para recuperar o status da sessão na página de retorno. O Checkout substitui automaticamente a variável pelo ID da Sessão do Checkout antes de fazer o redirecionamento. Leia mais sobre a [configuração da página de retorno](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page) e outras opções para [personalizar o comportamento de redirecionamento](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form). Depois de criar a sessão do Checkout, use o `client_secret` retornado na resposta para [montar o 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. client = Stripe::StripeClient.new('<>') post '/create-checkout-session' do session = client.v1.checkout.sessions.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 ``` ## Montar Checkout [Lado do cliente] [Lado do servidor] #### HTML + JS O Checkout está disponível como parte do [Stripe.js](https://docs.stripe.com/js.md). Inclua o script Stripe.js na página, adicionando-o ao cabeçalho do arquivo HTML. Em seguida, crie um nó DOM vazio (contêiner) para usar na montagem. ```html
``` Inicialize o Stripe.js com sua chave de API publicável. Crie uma função assíncrona `fetchClientSecret` que faz uma solicitação ao seu servidor para criar a Sessão do Checkout e recuperar o segredo do cliente. Passe essa função para `options` quando criar a instância do 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 Instale o [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) e o carregador Stripe.js do npm: ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` Para usar o componente Embedded Checkout, crie um `EmbeddedCheckoutProvider`. Chame `loadStripe` com sua chave de API publicável e passe a `Promise` retornada ao provedor. Crie uma função assíncrona `fetchClientSecret` que faz uma solicitação ao seu servidor para criar a Sessão do Checkout e recuperar o segredo do cliente. Passe esta função para a propriedade `options` aceita pelo provedor. ```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 (
) } ``` O Checkout renderiza em um iframe que envia dados de pagamento com segurança para a Stripe por uma conexão HTTPS. > Evite colocar o Checkout dentro de outro iframe porque algumas formas de pagamento exigem redirecionamento a outra página para confirmação do pagamento. ## Salvar forma de pagamento [Lado do servidor] Após configurar a integração do Checkout incorporada, escolha uma configuração para sua integração para salvar as formas de pagamento usadas pelos seus clientes. Por padrão, as formas de pagamento usadas para fazer um pagamento avulso com o Checkout não estão disponíveis para uso futuro. ### Salve formas de pagamento para cobrá-las fora de sessão Você pode configurar o Checkout para salvar formas de pagamento usadas para fazer um pagamento avulso passando o argumento [payment_intent_data.setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage). Isso é útil quando você precisa capturar uma forma de pagamento registrada para usar em tarifas futuras, como tarifas de cancelamento ou não comparecimento. ```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 você usa o Checkout no modo de `subscription`, a Stripe salva automaticamente a forma de pagamento para cobrar pagamentos subsequentes. Formas de pagamento com cartão salvas para clientes usando o modo `setup_future_usage` ou `subscription` não aparecem para compras de devolução no Checkout (mais detalhes abaixo). Recomendamos usar [texto personalizado](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) para vincular eventuais termos relevantes a respeito do uso de dados de pagamento salvos. > As leis globais de privacidade são complicadas e variadas. Recomendamos entrar em contato com a equipe jurídica ou de privacidade antes de implementar o [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage), porque isso pode afetar a estrutura de conformidade com requisitos de privacidade. Consulte [as orientações do Conselho de Proteção Europeu](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) para saber mais sobre como salvar dados de pagamento. ### Salvar formas de pagamento para preenchê-las no Checkout Por padrão, o Checkout usa [Link](https://docs.stripe.com/payments/link/checkout-link.md) para oferecer aos seus clientes a opção de salvar e reutilizar com segurança suas informações de pagamento. Se preferir gerenciar as formas de pagamento por conta própria, use [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) ao criar uma Checkout Session para permitir que seus clientes salvem suas formas de pagamento para compras futuras no 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" ``` Passar esse parâmetro no modo de [pagamento](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) ou [assinatura](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) exibe uma caixa de seleção opcional para permitir que os clientes salvem explicitamente suas formas de pagamento para compras futuras. Quando os clientes marcam essa caixa de seleção, o Checkout salva a forma de pagamento com [allow_redisplay: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). O Checkout usa esse parâmetro para determinar se uma forma de pagamento pode ser preenchida antecipadamente em compras futuras. Ao usar `saved_payment_method_options.payment_method_save`, você não precisa passar `setup_future_usage` para salvar a forma de pagamento. > #### Use a API Accounts v2 para representar clientes > > A API Accounts v2 está disponível de forma geral (GA) para usuários do Connect e em prévia pública para outros usuários da Stripe. Todos os usuários da Stripe podem ativar a Accounts v2 [no Dashboard](https://dashboard.stripe.com/settings/connect/platform-setup). No entanto, ao fazer chamadas para a API Accounts v2, usuários em prévia precisam [especificar uma versão de prévia](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning). > > Para a maioria dos casos de uso, recomendamos [modelar seus clientes como objetos Account configurados pelo cliente](https://docs.stripe.com/connect/use-accounts-as-customers.md), em vez de usar objetos [Customer](https://docs.stripe.com/api/customers.md). Usar [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) exige um objeto para representar seu cliente, seja um objeto `Account` configurado pelo cliente ou um objeto `Customer`. Para salvar um novo cliente, defina [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_creation) da Checkout Session como `always`. Caso contrário, a sessão não salva o cliente nem a forma de pagamento. Se `payment_method_save` não for passado ou se o cliente não concordar em salvar a forma de pagamento, o Checkout ainda salvará as formas de pagamento criadas no modo `subscription` ou usando `setup_future_usage`. Essas formas de pagamento têm o valor `allow_redisplay` de `limited`, o que evita que sejam preenchidas para devolução de compras e permite que você cumpra as regras das bandeiras de cartão e os regulamentos de proteção de dados. Saiba como [alterar o comportamento padrão habilitado por esses modos](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) e como alterar ou sobrepor o comportamento do `allow_redisplay`. > Você pode usar o Checkout para salvar cartões e outras formas de pagamento para cobrá-los fora da sessão, mas o Checkout preenche automaticamente os cartões salvos. Saiba como [preencher previamente cartões salvos](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Para salvar uma forma de pagamento sem um pagamento inicial, [use o Checkout no modo de configuração](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Permitir que os clientes removam formas de pagamento salvas Para permitir que os clientes removam uma forma de pagamento salva para que ela não volte a aparecer em pagamentos futuros, use [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) ao criar uma sessão do Checkout. #### Accounts v2 ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "customer_account={{CUSTOMERACCOUNT_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" ``` #### Customers v1 ```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" ``` O cliente não pode remover uma forma de pagamento se ela estiver vinculada a uma assinatura ativa e o cliente não tiver uma forma de pagamento padrão salva para pagamentos de faturas e assinaturas.