# Guarda datos de pago durante el pago Aprende a 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. Utiliza [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. ## Configurar Stripe [Lado del servidor] Primero, [inscríbete](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' ``` ## Crear 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. > #### Comparar referencias de Customers v1 y Accounts v2 > > Si tu plataforma Connect usa [Cuentas configuradas por clientes](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), usa nuestra [guía](https://docs.stripe.com/connect/use-accounts-as-customers.md) para reemplazar las referencias de `Clientes` y eventos en tu código con las referencias de la API Accounts v2 equivalentes. ```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 de la `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 sesión de Checkout [Lado del cliente] [Lado del servidor] Agrega un botón de confirmación de compra a tu sitio web que llame a un punto de conexión del lado del servidor para crear una [sesión de Checkout](https://docs.stripe.com/api/checkout/sessions/create.md). También puedes crear una Checkout Session para un [cliente existente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), lo que te permite completar previamente 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 sesión de Checkout es la representación programática de lo que ve tu cliente cuando es redirigido al formulario de pago. Puedes configurarla con opciones como estas: - [Partidas](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) a cobrar - Monedas que se utilizarán Debes completar `success_url` con el valor de URL de una página en tu sitio web a la que Checkout devuelve a tu cliente después de que complete el pago. > Las Checkout Sessions vencen 24 horas después de su creación de forma predeterminada. Después de crear una sesión de Checkout, redirige a tu 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 moneda 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 una ID de transacción o establece el importe y la moneda de un pedido en el Dashboard. Puedes habilitar Apple Pay y Google Pay en tu [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 los filtra incluso cuando están habilitados. Filtramos Google Pay si [habilitas el cálculo automático de impuestos](https://docs.stripe.com/tax/checkout.md) sin recopilar una 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 de la mima manera que otros pagos con tarjeta. ### Confirma tu punto de conexión Confirma que tu punto de conexión es 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 "" ``` Debes ver una respuesta en tu terminal parecida a esta: ```bash HTTP/1.1 303 See Other Location: https://checkout.stripe.com/c/pay/cs_test_... ... ``` ### Pruebas Ya deberías tener un botón de confirmación de compra para redirigir al cliente a Stripe Checkout. 1. Haz clic en el botón de confirmación de compra. 1. Serás redirigido al formulario de pago de Stripe Checkout. Si tu integración no funciona: 1. Abre la pestaña Red en las herramientas de desarrollador de tu navegador. 1. Haz click en el botón de confirmación de compra y confirma que se le haya enviado una solicitud XHR a tu punto de conexión de lado del servidor (`POST /create-checkout-session`). 1. Verifica que la solicitud devuelva un código de estado 200. 1. Usa `console.log(session)` dentro del oyente de click del botón para confirmar que se devolvieron los datos correctos. Para obtener más información sobre cómo configurar y probar tu integración de Checkout alojado, consulta [Aceptar un pago](https://docs.stripe.com/payments/accept-a-payment.md?platform=web&ui=hosted-form). ## Guardar método de pago [Lado del servidor] Después de configurar tu integración de Checkout alojado, elige una configuración para tu integración con el fin de guardar los métodos de pago utilizados por tus clientes. De forma predeterminada, los métodos de pago utilizados para realizar pagos únicos con Checkout no están disponibles para su uso futuro. ### Guarda los métodos de pago para cargarlos fuera de sesión Puedes configurar Checkout para que guarde 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). Esta opción es útil si necesitas capturar un método de pago en el archivo 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 `subscription`, Stripe guarda automáticamente el método de pago para cobrar pagos posteriores. Los métodos de pago con tarjeta guardados para clientes mediante `setup_future_usage` o el modo`subscription` no aparecen para las compras posteriores en Checkout (más información a continuación). Te recomendamos que utilices [texto personalizado](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) con enlaces a las condiciones pertinentes sobre el uso de la información de pago guardada. > Las leyes mundiales sobre privacidad son complicadas y están llenas de matices. Te recomendamos que te comuniques 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 la Junta Europea 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 previamente 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 su información de pago de forma segura. Si prefieres administrar los métodos de pago tú mismo, utiliza [saved_pago_method_options.pago_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 en 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 pasas este parámetro ya sea en 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 les 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: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout usa este parámetro para determinar si un método de pago puede completarse previamente en futuras compras. Al usar `saved_payment_method_options.payment_method_save`, no necesitas especificar `setup_future_usage` para guardar el método de pago. Si tu plataforma Connect usa [Cuentas configuradas por clientes](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), usa nuestra [guía](https://docs.stripe.com/connect/use-accounts-as-customers.md) para reemplazar las referencias de `Clientes` y eventos en tu código con las referencias de la API Accounts v2 equivalentes. El uso de [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) requiere un `Customer`. Para guardar a un nuevo cliente, configura la [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) de la sesión de Checkout en `always`. De lo contrario, la sesión no guardará 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 guardará los métodos de pago creados en modo `subscription` o con `setup_future_usage`. Estos métodos de pago tienen un valor `allow_redisplay` de `limited`, lo que evita que se completen previamente para la devolución de 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 a cambiar o anular el comportamiento `allow_redisplay`. > Puedes usar Checkout para guardar tarjetas y otros métodos de pago para cargarlos fuera de la sesión, pero Checkout solo completa automáticamente las tarjetas guardadas. Obtén información sobre cómo [completar automáticamente las 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 modo de configuración](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Permitir a los clientes eliminar métodos de pago guardados Para permitir que tus clientes eliminen un método de pago guardado de modo 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) cuando crees una Checkout Session. ```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. Utiliza [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. ## Configurar Stripe [Lado del servidor] Primero, [inscríbete](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' ``` ## Crear 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. > #### Comparar referencias de Customers v1 y Accounts v2 > > Si tu plataforma Connect usa [Cuentas configuradas por clientes](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), usa nuestra [guía](https://docs.stripe.com/connect/use-accounts-as-customers.md) para reemplazar las referencias de `Clientes` y eventos en tu código con las referencias de la API Accounts v2 equivalentes. ```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 de la `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 sesión de Checkout [Lado del servidor] Desde tu servidor, crea una *sesión de Checkout* (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) y establece el [ui_mode](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-ui_mode) en `embedded_page`. Puedes configurar la [sesión de Checkout](https://docs.stripe.com/api/checkout/sessions/create.md) con [partidas](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-line_items) para incluir y opciones como [monedas](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-currency). También puedes crear una Checkout Session para un [cliente existente](https://docs.stripe.com/payments/existing-customers.md?platform=web&ui=stripe-hosted), lo que te permite completar previamente los campos de Checkout con información de contacto conocida y unificar tu historial de compras para ese cliente. Para que los clientes regresen 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 la ID de la sesión de Checkout antes de redirigir al usuario. Lee más 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 redirección](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 código `client_secret` que se devolvió en la respuesta para [montar 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 agregándolo al encabezado de tu archivo HTML. A continuación, crea un nodo DOM vacío (contenedor) para usarlo en el montaje. ```html
``` Inicializa Stripe.js con la clave publicable de tu API. Crea una función `fetchClientSecret` asincrónica que haga una solicitud a tu servidor para crear la sesión de Checkout y recuperar el secreto de cliente. Pasa esta función a `options` al crear 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 utilizar el componente Embedded Checkout, crea un `EmbeddedCheckoutProvider`. Llama a `loadStripe` con tu clave de API publicable y pasa la `Promise` devuelta al proveedor. Crea una función `fetchClientSecret` asíncrona que haga una solicitud a tu servidor para que cree la sesión de Checkout y recupere el secreto de cliente. Pasa esta función al accesorio `options` aceptado 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 en modo seguro a través de una conexión HTTPS. > Evita colocar Checkout en otro iframe, ya que algunos métodos de pago requieren un redireccionamiento a otra página para confirmar el pago. ## Guardar método de pago [Lado del servidor] Después de configurar tu integración integrada de Checkout, 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 utilizados para realizar pagos únicos con Checkout no están disponibles para su uso futuro. ### Guarda los métodos de pago para cargarlos fuera de sesión Puedes configurar Checkout para que guarde 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). Esta opción es útil si necesitas capturar un método de pago en el archivo 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 `subscription`, Stripe guarda automáticamente el método de pago para cobrar pagos posteriores. Los métodos de pago con tarjeta guardados para clientes mediante `setup_future_usage` o el modo`subscription` no aparecen para las compras posteriores en Checkout (más información a continuación). Te recomendamos que utilices [texto personalizado](https://docs.stripe.com/payments/checkout/custom-components.md#customize-text) con enlaces a las condiciones pertinentes sobre el uso de la información de pago guardada. > Las leyes mundiales sobre privacidad son complicadas y están llenas de matices. Te recomendamos que te comuniques 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 la Junta Europea 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 previamente 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 su información de pago de forma segura. Si prefieres administrar los métodos de pago tú mismo, utiliza [saved_pago_method_options.pago_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 en 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 pasas este parámetro ya sea en 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 les 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: always](https://docs.stripe.com/api/payment_methods/object.md#payment_method_object-allow_redisplay). Checkout usa este parámetro para determinar si un método de pago puede completarse previamente en futuras compras. Al usar `saved_payment_method_options.payment_method_save`, no necesitas especificar `setup_future_usage` para guardar el método de pago. Si tu plataforma Connect usa [Cuentas configuradas por clientes](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), usa nuestra [guía](https://docs.stripe.com/connect/use-accounts-as-customers.md) para reemplazar las referencias de `Clientes` y eventos en tu código con las referencias de la API Accounts v2 equivalentes. El uso de [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) requiere un `Customer`. Para guardar a un nuevo cliente, configura la [customer_creation](https://docs.stripe.com/api/checkout/sessions/create.md) de la sesión de Checkout en `always`. De lo contrario, la sesión no guardará 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 guardará los métodos de pago creados en modo `subscription` o con `setup_future_usage`. Estos métodos de pago tienen un valor `allow_redisplay` de `limited`, lo que evita que se completen previamente para la devolución de 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 a cambiar o anular el comportamiento `allow_redisplay`. > Puedes usar Checkout para guardar tarjetas y otros métodos de pago para cargarlos fuera de la sesión, pero Checkout solo completa automáticamente las tarjetas guardadas. Obtén información sobre cómo [completar automáticamente las 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 modo de configuración](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout). ### Permitir a los clientes eliminar métodos de pago guardados Para permitir que tus clientes eliminen un método de pago guardado de modo 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) cuando crees una Checkout Session. ```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.