# Guardar datos de pago durante el pago Descubre cómo aceptar un pago y guardar los datos de pago de tu cliente para futuras compras. # Página alojada > This is a Página alojada 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. Usa [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) para lograr una integración rápida y con poca programación que permita a tus clientes guardar sus datos de pago para futuras compras. ## Configura Stripe [Lado del servidor] Primero, [regístrate](https://dashboard.stripe.com/register) para obtener una cuenta de Stripe. Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación: #### 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' ``` ## Crea un cliente [Lado del servidor] Para configurar una tarjeta para pagos futuros, debes adjuntarla 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 el objeto Customer cuando tu cliente cree una cuenta en tu empresa. Los objetos Customer permiten reutilizar métodos de pago y hacer el seguimiento de varios pagos. > #### Use the Accounts v2 API to represent customers > > If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](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" ``` La creación correcta devuelve el objeto [Customer](https://docs.stripe.com/api/customers/object.md). Puedes inspeccionar el objeto en busca del `id` del cliente y almacenar el valor en tu base de datos para recuperarlo más tarde. Puedes encontrar a estos clientes en la página [Clientes](https://dashboard.stripe.com/customers) del Dashboard. ## Crea una Checkout Session [Lado del cliente] [Lado del servidor] Añade un botón de finalización de compra en tu sitio web que llame a un punto de conexión del lado del servidor para crear una [Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md). También puedes crear una sesión de Checkout para un [cliente existente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), lo que te permite rellenar automáticamente los campos de Checkout con información de contacto conocida y unificar tu historial de compras para ese cliente. ```html Buy cool new product
``` Una Checkout Session es la representación programática de lo que ve tu cliente cuando se le redirecciona al formulario de pago. Puedes configurarla con opciones como las siguientes: - [Partidas individuales](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) que se cobrarán - Divisas que se usarán Debes completar `success_url` con el valor URL de una página de tu sitio web a la que Checkout redirige al cliente después de completar el pago. > De forma predeterminada, las Checkout Sessions caducan a las 24 horas de crearse. Después de crear una sesión de Checkout, redirige al cliente a la [URL](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-url) devuelta en la respuesta. #### 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 ``` ### Métodos de pago De forma predeterminada, Stripe habilita las tarjetas y otros métodos de pago comunes. Puedes activar o desactivar métodos de pago individuales en el [Dashboard de Stripe](https://dashboard.stripe.com/settings/payment_methods). En Checkout, Stripe evalúa la divisa y las restricciones y, a continuación, presenta al cliente de forma dinámica los métodos de pago admitidos. Para ver cómo se muestran tus métodos de pago a los clientes, introduce un ID de transacción o establece el importe y la divisa de un pedido en el Dashboard. Puedes habilitar Apple Pay y Google Pay en la [configuración de métodos de pago](https://dashboard.stripe.com/settings/payment_methods). De forma predeterminada, Apple Pay está habilitado y Google Pay está deshabilitado. Sin embargo, en algunos casos Stripe las filtra incluso cuando están habilitadas. Filtramos Google Pay si [habilitas el impuesto automático](https://docs.stripe.com/tax/checkout.md) sin recopilar la dirección de envío. Las páginas alojadas en Stripe de Checkout no necesitan cambios de integración para habilitar Apple Pay o Google Pay. Stripe gestiona estos pagos igual que otros pagos con tarjeta. ### Confirma tu punto de conexión Confirma que tu punto de conexión sea accesible iniciando tu servidor web (por ejemplo, `localhost:4242`) y ejecutando el siguiente comando: ```bash curl -X POST -is "http://localhost:4242/create-checkout-session" -d "" ``` Deberías ver una respuesta en tu terminal de este estilo: ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### Verify your integration Ya deberías tener un botón de finalización de compra en funcionamiento que redireccione al cliente a Stripe Checkout. 1. Haz clic en el botón de finalización de compra. 1. Se te redireccionará al formulario de pago de Stripe Checkout. Si tu integración no funciona, haz lo siguiente: 1. Abre la pestaña Red en las herramientas para desarrolladores de tu navegador. 1. Haz clic en el botón de finalización de compra y confirma que se le haya enviado una petición XHR a tu punto de conexión de lado del servidor (`POST /create-checkout-session`). 1. Verifica que la petición devuelva un código de estado 200. 1. Usa `console.log(session)` dentro del oyente de clic del botón para confirmar que se hayan devuelto los datos correctos. Para obtener más información sobre cómo configurar y probar tu integración con Checkout alojado, consulta [Aceptar un pago](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form). ## Guarda el método de pago [Lado del servidor] Después de configurar la integración de Checkout alojada, elige una configuración para que tu integración guarde los métodos de pago utilizados por tus clientes. De forma predeterminada, los métodos de pago que se utilizan para hacer un pago único con Checkout no están disponibles para usarlos en el futuro. ### Guarda métodos de pago para cargarlos fuera de la sesión Puedes configurar Checkout para guardar los métodos de pago utilizados para realizar un pago único especificando el 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). Esto es útil si necesitas capturar un método de pago registrado para usarlo en comisiones futuras, como comisiones de cancelación o de no presentación. ```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" ``` Si utilizas Checkout en modo `suscripción`, Stripe guarda automáticamente el método de pago para realizar los cobros de los pagos posteriores. Los métodos de pago con tarjeta guardados para los clientes que utilizan el modo `setup_future_usage` o `suscripción` no aparecen en Checkout en caso de nuevas compras (más información al respecto a continuación). Recomendamos utilizar [texto personalizado](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) para incluir un enlace a cualquier condición relevante relativa al uso de la información de pago guardada. > Las leyes internacionales de privacidad son complicadas y tienen muchos matices. Te recomendamos que te pongas en contacto con tu equipo legal y de privacidad antes de implementar [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage), ya que podría afectar a tu marco existente de cumplimiento de la normativa de privacidad. Consulta [la guía emitida por el Consejo Europeo de Protección](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) para obtener más información sobre cómo guardar los datos de pago. ### Guarda los métodos de pago para completarlos automáticamente en Checkout De forma predeterminada, el proceso de compra utiliza [Link](https://docs.stripe.com/payments/link/checkout-link.md) para ofrecer a tus clientes la opción de guardar y reutilizar de forma segura su información de pago. Si prefieres gestionar los métodos de pago tú mismo, utiliza [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) al crear una sesión de proceso de compra para permitir que tus clientes guarden sus métodos de pago para futuras compras durante el proceso de compra. ```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" ``` Si se especifica este parámetro en el modo de [pago](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) o [suscripción](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode), se muestra una casilla de verificación opcional que permite a los clientes guardar explícitamente su método de pago para futuras compras. Cuando los clientes marcan esta casilla, Checkout guarda el método de pago con [allow_redisplay: siempre](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout utiliza este parámetro para determinar si un método de pago puede completarse automáticamente en futuras compras. Cuando uses `saved_payment_method_options.payment_method_save`, no necesitarás transferir `setup_future_usage` para guardar el método de pago. If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](https://docs.stripe.com/connect/use-accounts-as-customers.md). Para 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) se requiere un `Customer`. Para guardar un nuevo cliente, establece el valor de la sesión de Checkout [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) en `always`. De lo contrario, la sesión no guarda el cliente ni el método de pago. Si no se especifica `payment_method_save` o si el cliente no acepta guardar el método de pago, Checkout aún guarda los métodos de pago creados en modo `subscription` o que utilizan `setup_future_usage`. Estos métodos de pago tienen un valor `allow_redisplay` de `limited`, lo que evita que se rellenen previamente para devolver compras y te permite cumplir con las reglas de la red de tarjetas y las normativas de protección de datos. Aprende a [cambiar el comportamiento predeterminado habilitado por estos modos](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) y cómo cambiar o anular el comportamiento `allow_redisplay`. > Puedes usar Checkout para guardar tarjetas y otros métodos de pago para cargarlas fuera de la sesión, pero Checkout solo rellena automáticamente las tarjetas guardadas. Descubre cómo [rellenar automáticamente tarjetas guardadas](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Para guardar un método de pago sin un pago inicial, [usa Checkout en el modo de configuración](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Permite que los clientes eliminen los métodos de pago guardados Para permitir que tus clientes eliminen un método de pago guardado para que no vuelva a aparecer en pagos futuros, usa [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) al crear una sesión de 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" ``` El cliente no puede eliminar un método de pago si está vinculado a una suscripción activa y el cliente no tiene un método de pago predeterminado guardado para los pagos de facturas y suscripciones. # 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. Usa [Stripe Checkout](https://docs.stripe.com/payments/checkout.md) para integrar un formulario de pago prediseñado en tu sitio web que permita a tus clientes guardar sus datos de pago para futuras compras. ## Configura Stripe [Lado del servidor] Primero, [regístrate](https://dashboard.stripe.com/register) para obtener una cuenta de Stripe. Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación: #### 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' ``` ## Crea un cliente [Lado del servidor] Para configurar una tarjeta para pagos futuros, debes adjuntarla 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 el objeto Customer cuando tu cliente cree una cuenta en tu empresa. Los objetos Customer permiten reutilizar métodos de pago y hacer el seguimiento de varios pagos. > #### Use the Accounts v2 API to represent customers > > If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](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" ``` La creación correcta devuelve el objeto [Customer](https://docs.stripe.com/api/customers/object.md). Puedes inspeccionar el objeto en busca del `id` del cliente y almacenar el valor en tu base de datos para recuperarlo más tarde. Puedes encontrar a estos clientes en la página [Clientes](https://dashboard.stripe.com/customers) del Dashboard. ## Crea una Checkout Session [Lado del servidor] 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). También puedes crear una sesión de Checkout para un [cliente existente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), lo que te permite rellenar automáticamente los campos de Checkout con información de contacto conocida y unificar tu historial de compras para ese cliente. Para devolver a los clientes a una página personalizada que alojas en tu sitio web, especifica la URL de esa página en el parámetro [return_url](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-return_url). Incluye la variable de plantilla `{CHECKOUT_SESSION_ID}` en la URL para recuperar el estado de la sesión en la página de retorno. Checkout sustituye automáticamente la variable con el ID de la sesión de Checkout antes de redireccionar. Consigue más información sobre [cómo configurar la página de retorno](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=embedded-form#return-page) y otras opciones para [personalizar el comportamiento de redireccionamiento](https://docs.stripe.com/payments/checkout/custom-success-page.md?payment-ui=embedded-form). Después de crear la sesión de Checkout, usa el `client_secret` devuelto en la respuesta para [activar 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 ``` ## Montar Checkout [Lado del cliente] [Lado del servidor] #### HTML + JS Checkout está disponible como parte de [Stripe.js](https://docs.stripe.com/js.md). Incluye el script de Stripe.js en tu página añadiéndolo al encabezado de tu archivo HTML. A continuación, crea un nodo DOM vacío (contenedor) para utilizarlo para el montaje. ```html
``` Inicializa Stripe.js con la clave publicable de la API. Crea una función asincrónica `fetchClientSecret` que haga una petición a tu servidor para crear la Checkout Session y recuperar el secreto de cliente. Especifica esta función en `options` cuando crees la instancia de 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 Instala [react-stripe-js](https://docs.stripe.com/sdks/stripejs-react.md) y el cargador Stripe.js desde npm: ```bash npm install --save @stripe/react-stripe-js @stripe/stripe-js ``` Para usar el componente Embedded Checkout, crea un `EmbeddedCheckoutProvider`. Llama a `loadStripe` con tu clave publicable de la API y especifica la `Promise` devuelta al proveedor. Crea una función asincrónica `fetchClientSecret` para que haga una petición a tu servidor para crear la Checkout Session y recupere el secreto de cliente. Especifica esta función en la propiedad `options` aceptada por el proveedor. ```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 se representa en un iframe que envía la información del pago a Stripe de forma segura a través de una conexión HTTPS. > Evita colocar Checkout dentro de otro iframe, ya que algunos métodos de pago requieren un redireccionamiento a otra página para confirmar el pago. ## Guarda el método de pago [Lado del servidor] Después de configurar la integración de Checkout integrada, elige una configuración para que tu integración guarde los métodos de pago utilizados por tus clientes. De forma predeterminada, los métodos de pago que se utilizan para hacer un pago único con Checkout no están disponibles para usarlos en el futuro. ### Guarda métodos de pago para cargarlos fuera de la sesión Puedes configurar Checkout para guardar los métodos de pago utilizados para realizar un pago único especificando el 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). Esto es útil si necesitas capturar un método de pago registrado para usarlo en comisiones futuras, como comisiones de cancelación o de no presentación. ```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" ``` Si utilizas Checkout en modo `suscripción`, Stripe guarda automáticamente el método de pago para realizar los cobros de los pagos posteriores. Los métodos de pago con tarjeta guardados para los clientes que utilizan el modo `setup_future_usage` o `suscripción` no aparecen en Checkout en caso de nuevas compras (más información al respecto a continuación). Recomendamos utilizar [texto personalizado](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) para incluir un enlace a cualquier condición relevante relativa al uso de la información de pago guardada. > Las leyes internacionales de privacidad son complicadas y tienen muchos matices. Te recomendamos que te pongas en contacto con tu equipo legal y de privacidad antes de implementar [setup_future_usage](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-setup_future_usage), ya que podría afectar a tu marco existente de cumplimiento de la normativa de privacidad. Consulta [la guía emitida por el Consejo Europeo de Protección](https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf) para obtener más información sobre cómo guardar los datos de pago. ### Guarda los métodos de pago para completarlos automáticamente en Checkout De forma predeterminada, el proceso de compra utiliza [Link](https://docs.stripe.com/payments/link/checkout-link.md) para ofrecer a tus clientes la opción de guardar y reutilizar de forma segura su información de pago. Si prefieres gestionar los métodos de pago tú mismo, utiliza [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) al crear una sesión de proceso de compra para permitir que tus clientes guarden sus métodos de pago para futuras compras durante el proceso de compra. ```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" ``` Si se especifica este parámetro en el modo de [pago](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode) o [suscripción](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-mode), se muestra una casilla de verificación opcional que permite a los clientes guardar explícitamente su método de pago para futuras compras. Cuando los clientes marcan esta casilla, Checkout guarda el método de pago con [allow_redisplay: siempre](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout utiliza este parámetro para determinar si un método de pago puede completarse automáticamente en futuras compras. Cuando uses `saved_payment_method_options.payment_method_save`, no necesitarás transferir `setup_future_usage` para guardar el método de pago. If your integration uses [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), replace `Customer` and event references in the code examples with the equivalent Accounts v2 API references. For more information, see [Represent customers with Account objects](https://docs.stripe.com/connect/use-accounts-as-customers.md). Para 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) se requiere un `Customer`. Para guardar un nuevo cliente, establece el valor de la sesión de Checkout [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) en `always`. De lo contrario, la sesión no guarda el cliente ni el método de pago. Si no se especifica `payment_method_save` o si el cliente no acepta guardar el método de pago, Checkout aún guarda los métodos de pago creados en modo `subscription` o que utilizan `setup_future_usage`. Estos métodos de pago tienen un valor `allow_redisplay` de `limited`, lo que evita que se rellenen previamente para devolver compras y te permite cumplir con las reglas de la red de tarjetas y las normativas de protección de datos. Aprende a [cambiar el comportamiento predeterminado habilitado por estos modos](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout) y cómo cambiar o anular el comportamiento `allow_redisplay`. > Puedes usar Checkout para guardar tarjetas y otros métodos de pago para cargarlas fuera de la sesión, pero Checkout solo rellena automáticamente las tarjetas guardadas. Descubre cómo [rellenar automáticamente tarjetas guardadas](https://support.stripe.com/questions/prefilling-saved-cards-in-checkout). Para guardar un método de pago sin un pago inicial, [usa Checkout en el modo de configuración](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Permite que los clientes eliminen los métodos de pago guardados Para permitir que tus clientes eliminen un método de pago guardado para que no vuelva a aparecer en pagos futuros, usa [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) al crear una sesión de 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" ``` El cliente no puede eliminar un método de pago si está vinculado a una suscripción activa y el cliente no tiene un método de pago predeterminado guardado para los pagos de facturas y suscripciones.