# Guía de migración de Checkout
Aprende a migrar a las últimas integraciones de Stripe.

La versión heredada de Checkout presentaba a los clientes un cuadro de diálogo para recopilar los datos de tarjeta y devolvía un token o una fuente a tu sitio web. En cambio, [Payment Links](https://docs.stripe.com/payment-links.md) y la nueva versión de [Checkout](https://docs.stripe.com/payments/checkout.md) son páginas de pagos inteligentes alojadas por Stripe que crean pagos o *suscripciones* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis). Ambas integraciones admiten Apple Pay, Google Pay, *3D Secure dinámico* (3D Secure (3DS) provides an additional layer of authentication for credit card transactions that protects businesses from liability for fraudulent card payments), *Connect* (Connect is Stripe's solution for multi-party businesses, such as marketplace or software platforms, to route payments between sellers, customers, and other recipients), la reutilización de *clientes* (Customer objects represent customers of your business. They let you reuse payment methods and give you the ability to track multiple payments) existentes y muchas otras funcionalidades. También puedes [comparar otras integraciones de pago](https://docs.stripe.com/payments/online-payments.md#compare-features-and-availability) si Payment Links o Checkout no se ajustan a tu caso de uso.
## Before you begin
Si usas las [SDK](https://docs.stripe.com/sdks.md) de Stripe, actualiza a la última versión.
## Elige tu modelo de negocio
Para migrar de la versión heredada de Checkout, sigue la guía que se ajuste mejor a tu modelo de negocio. Cada guía recomienda una ruta de integración junto con un código de ejemplo.
- [Catálogo de productos y precios dinámicos](https://docs.stripe.com/payments/checkout/migration.md#api-products)
Por ejemplo, tienes un gran catálogo de productos o necesitas compatibilidad para ítems de factura generados en forma dinámica (como donaciones o impuestos).
- [Suscripciones dinámicas](https://docs.stripe.com/payments/checkout/migration.md#api-subscriptions)
Si eres proveedor de SaaS que factura a sus usuarios y necesita compatibilidad para funciones avanzadas.
- [Plataformas y marketplaces Connect](https://docs.stripe.com/payments/checkout/migration.md#connect)
Si operas un marketplace que conecta a proveedores de servicios con clientes.
- [Cómo guardar métodos de pago para uso futuro](https://docs.stripe.com/payments/checkout/migration.md#setup-mode)
Si operas una empresa que les cobra a los clientes recién después de la prestación de los servicios.
- [Catálogo simple de productos con precios fijos](https://docs.stripe.com/payments/checkout/migration.md#simple-products)
Si vendes algunos productos con precios predeterminados.
- [Suscripciones simples](https://docs.stripe.com/payments/checkout/migration.md#simple-subscriptions)
Si eres un proveedor de SaaS con un plan de suscripción mensual.
Al seguir la guía de migración correspondiente, también puedes consultar la [tabla de conversión](https://docs.stripe.com/payments/checkout/migration.md#parameter-conversion) para establecer las correspondencias de los parámetros y las opciones de configuración específicos.
## Catálogo de productos y precios dinámicos
Si vendes productos en los que el importe o las partidas se determinan de forma dinámica (por ejemplo, un gran catálogo de productos o donaciones), consulta [aceptar pagos únicos](https://docs.stripe.com/payments/accept-a-payment.md?integration=checkout).
Es posible que hayas utilizado la versión heredada de Checkout para crear un token o una fuente en el cliente, y que lo hayas pasado a tu servidor para crear un cargo. La versión actual de Checkout revierte este flujo: crea una sesión en su servidor, redirige a su cliente a Checkout, quien luego es redirigido a su aplicación después del pago.
### Antes
Con la versión heredada de Checkout, mostrabas el importe y la descripción dinámicos y recopilabas los datos de la tarjeta del cliente.
```html
```
A continuación, enviabas el token o la fuente resultante a tu servidor y efectuabas el cargo.
#### curl
```bash
curl https://api.stripe.com/v1/customers \
-u <>: \
-d "email"="customer@example.com" \
-d "source"="{{STRIPE_TOKEN}}"
curl https://api.stripe.com/v1/charges \
-u <>: \
-d "customer"="{{CUSTOMER_ID}}" \
-d "description"="Custom t-shirt" \
-d "amount"="{{ORDER_AMOUNT}}" \
-d "currency"="usd"
```
### Después
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).
```html
Buy cool new product
```
Una sesión de Checkout es la representación mediante programación 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 a utilizar
Incluye una `success_url` con la URL de una página de tu sitio web a la que se redirige al cliente después de que efectiviza el pago.
```curl
curl https://api.stripe.com/v1/checkout/sessions \
-u "<>:" \
-d "line_items[0][price_data][currency]=usd" \
-d "line_items[0][price_data][product_data][name]=Custom 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"
```
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. Si necesitas completar los productos comprados después del pago, consulta [Completar los pagos de Checkout y Payment Link payments](https://docs.stripe.com/checkout/fulfillment.md).
## Suscripciones dinámicas
Si prestas servicios de suscripción que se determinan en forma dinámica o necesitan compatibilidad con otras funcionalidades avanzadas, consulta [cómo configurar una suscripción](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md).
Es posible que hayas utilizado la versión heredada de Checkout para crear un token o una fuente en el cliente, y que lo hayas pasado a tu servidor para crear un cliente y una suscripción. La versión actual de Checkout revierte este flujo: primero creas una sesión en tu servidor, rediriges a tu cliente a Checkout, quien luego es redirigido de nuevo a tu aplicación cuando tiene éxito.
### Antes
Con la versión heredada de Checkout, mostrabas los datos de la suscripción y recopilabas los datos de la tarjeta del cliente.
```html
```
A continuación, enviabas el token o la fuente resultante a tu servidor para crear un cliente y una suscripción.
#### curl
```bash
curl https://api.stripe.com/v1/customers \
-u <>: \
-d "email"="customer@example.com" \
-d "source"="{{STRIPE_TOKEN}}"
curl https://api.stripe.com/v1/subscriptions \
-u <>: \
-d "customer"="{{CUSTOMER_ID}}" \
-d "items[0][price]"="{PRICE_ID}" \
-d "trial_period_days"=30
```
### Después
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).
```html
Subscribe to cool new service
```
Una sesión de Checkout es la representación mediante programación 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 a utilizar
Incluye una `success_url` con la URL de una página de tu sitio web a la que se redirige al cliente después de que efectiviza el pago.
```curl
curl https://api.stripe.com/v1/checkout/sessions \
-u "<>:" \
-d "line_items[0][price]={{PRICE_ID}}" \
-d "line_items[0][quantity]=1" \
-d "subscription_data[trial_period_days]=30" \
-d mode=subscription \
--data-urlencode "success_url=https://example.com/success"
```
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. El cliente es redirigido a la `success_url` después de haber creado el cliente y la suscripción. Si necesitas cumplir con los servicios adquiridos después del pago, consulta [Completar los pagos de Checkout y Payment Link payments](https://docs.stripe.com/checkout/fulfillment.md).
## Plataformas y marketplaces Connect
Si operas una plataforma o marketplace Connect y creas pagos que involucran cuentas conectadas, piensa en usar la versión actual de Checkout.
En el siguiente ejemplo se muestra el uso de la API Checkout Sessions para procesar un cargo Direct. También puedes usar Checkout y Conectar con [cargos a un destino](https://docs.stripe.com/connect/destination-charges.md?platform=web&ui=stripe-hosted) y [cargos y envíos de fondos separados](https://docs.stripe.com/connect/separate-charges-and-transfers.md?platform=web&ui=stripe-hosted).
### Antes
Con la versión heredada de Checkout, recopilarás los datos de la tarjeta de tu cliente del lado del cliente.
```html
```
A continuación, enviabas el token o la fuente resultante a tu servidor y efectuabas el cargo en nombre de la cuenta conectada.
#### curl
```bash
curl https://api.stripe.com/v1/charges \
-u <>: \
-d "source"="{{TOKEN_ID}}" \
-d "description"="10 cucumbers from Roger\"s Farm" \
-d "amount"=2000 \
-d "currency"="usd" \
-d "application_fee_amount"=200 \
-H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}"
```
### Después
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).
```html
Roger's Farm
```
Una sesión de Checkout es la representación mediante programación 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 a utilizar
Incluye una `success_url` con la URL de una página de tu sitio web a la que se redirige al cliente después de que efectiviza el pago.
```curl
curl https://api.stripe.com/v1/checkout/sessions \
-u "<>:" \
-H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
-d "line_items[0][price_data][currency]=usd" \
--data-urlencode "line_items[0][price_data][product_data][name]=Cucumbers from Roger's Farm" \
-d "line_items[0][price_data][unit_amount]=200" \
-d "line_items[0][quantity]=10" \
-d "payment_intent_data[application_fee_amount]=200" \
-d mode=payment \
--data-urlencode "success_url=https://example.com/success"
```
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. Si necesitas cumplir con los bienes o servicios comprados después del pago, consulta [Cumplir con los pagos de Checkout y Payment Link](https://docs.stripe.com/checkout/fulfillment.md).
## Cómo guardar métodos de pago para uso futuro
Si prestas servicios que no cobras de inmediato a tus clientes, consulta [cómo configurar pagos futuros](https://docs.stripe.com/payments/save-and-reuse.md?platform=checkout).
Es posible que hayas utilizado la versión heredada de Checkout para crear un token o una fuente en el cliente, y que lo hayas pasado a tu servidor para guardarlo para su uso posterior. La versión actual de Checkout revierte este flujo: primero creas una sesión en tu servidor, rediriges a tu cliente a Checkout, quien luego es redirigido de nuevo a tu aplicación cuando tiene éxito.
### Antes
Con la versión heredada de Checkout, mostrabas los datos del cargo y recopilabas los datos de la tarjeta del cliente.
```html
```
A continuación, enviarás el token o la fuente resultante a tu servidor para, en última instancia, crear un cargo.
#### curl
```bash
curl https://api.stripe.com/v1/customers \
-u <>: \
-d "email"="customer@example.com" \
-d "source"="{{STRIPE_TOKEN}}"
curl https://api.stripe.com/v1/charges \
-u <>: \
-d "customer"="{{CUSTOMER_ID}}" \
-d "description"="Cleaning service" \
-d "amount"="{{ORDER_AMOUNT}}" \
-d "currency"="usd"
```
### Después
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).
```html
Cleaning service
```
Una sesión de Checkout es la representación mediante programación 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 a utilizar
Incluye una `success_url` con la URL de una página de tu sitio web a la que se redirige al cliente después de que complete la configuración del pago.
```curl
curl https://api.stripe.com/v1/checkout/sessions \
-u "<>:" \
-d mode=setup \
-d currency=usd \
--data-urlencode "success_url=https://example.com/success?session_id={CHECKOUT_SESSION_ID}"
```
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) que se devuelve en la respuesta para recopilar los datos del método de pago. Se redirigirá al cliente a la `success_url` una vez completado el flujo. Cuando tengas todo listo para cobrar un pago, [recupera el SetupIntent](https://docs.stripe.com/payments/checkout/save-and-reuse.md?payment-ui=stripe-hosted#retrieve-checkout-session) de la sesión de Checkout y úsalo para preparar la transacción.
## Catálogo simple de productos con precios fijos
Si vendes productos con precios fijos (como camisetas o libros electrónicos), consulta la guía sobre [enlaces de pago](https://docs.stripe.com/payment-links/create.md). Es posible que hayas utilizado la versión heredada de Checkout para crear un token o una fuente en el cliente, y que lo hayas pasado a tu servidor para crear un cargo.
### Antes
Con la versión heredada de Checkout, mostrabas el importe y la descripción y recopilabas los datos de la tarjeta de tu cliente.
```html
```
A continuación, enviabas el token o la fuente resultante a tu servidor para crear un cliente y un cargo.
#### Curl
```bash
curl https://api.stripe.com/v1/customers \
-u <>: \
-d "email"="{{STRIPE_EMAIL}}" \
-d "source"="{{STRIPE_TOKEN}}"
curl https://api.stripe.com/v1/charges \
-u <>: \
-d "customer"="{{CUSTOMER_ID}}" \
-d "description"="T-shirt" \
-d "amount"=500 \
-d "currency"="usd"
```
### Después
Crea un [producto](https://docs.stripe.com/api/products.md) y un [precio](https://docs.stripe.com/api/prices.md) que representen el artículo. El siguiente ejemplo crea el producto en línea. También puedes crear estos objetos en el [Dashboard](https://dashboard.stripe.com/test/products).
```curl
curl https://api.stripe.com/v1/prices \
-u "<>:" \
-d currency=usd \
-d unit_amount=500 \
-d "product_data[name]=T-shirt"
```
Crea un [enlace de pago](https://dashboard.stripe.com/payment-links/create) en el Dashboard con el Producto y el Precio. Después de crear el enlace, haz clic en el **botón Comprar** para configurar el diseño y generar el código que puedes copiar y pegar en tu sitio web.
#### HTML
```html
Purchase your new kit
```
## Suscripciones simples
Si ofreces un servicio de suscripción sencillo (como el acceso mensual al software), consulta la guía en [enlaces de pago](https://docs.stripe.com/payment-links/create.md). Es posible que hayas utilizado la versión heredada de Checkout para crear un token o una fuente en el cliente, y que lo hayas pasado a tu servidor para crear un cliente y una suscripción.
### Antes
Con la versión heredada de Checkout, mostrabas los datos de la suscripción y recopilabas los datos de la tarjeta del cliente.
```html
```
A continuación, enviabas el token o la fuente resultante a tu servidor para crear un cliente y una suscripción.
#### Curl
```bash
curl https://api.stripe.com/v1/customers \
-u <>: \
-d "email"="{{STRIPE_EMAIL}}" \
-d "source"="{{STRIPE_TOKEN}}"
curl https://api.stripe.com/v1/subscriptions \
-u <>: \
-d "customer"="{{CUSTOMER_ID}}" \
-d "items[][price]"="{PRICE_ID}" \
-d "items[][quantity]"=1
```
### Después
Crea un [producto](https://docs.stripe.com/api/products.md) y un [precio](https://docs.stripe.com/api/prices.md) que representen la suscripción. El siguiente ejemplo crea el producto en línea. También puedes crear estos objetos en el [Dashboard](https://dashboard.stripe.com/test/products).
```curl
curl https://api.stripe.com/v1/prices \
-u "<>:" \
-d currency=usd \
-d unit_amount=2000 \
-d "recurring[interval]=month" \
-d "product_data[name]=Gold Tier"
```
Crea un [enlace de pago](https://dashboard.stripe.com/payment-links/create) en el Dashboard con el Producto y el Precio. Después de crear el enlace, haz clic en el **botón Comprar** para configurar el diseño y generar el código que puedes copiar y pegar en tu sitio web.
#### HTML
```html
Purchase your new kit
```
## Conversión de parámetros
La versión actual de Checkout admite la mayoría de las funcionalidades de la versión heredada. Sin embargo, no comparten la misma API. En la tabla siguiente se establece las correspondencias de los parámetros y las opciones de configuración entre la versión heredada y la versión actual. Para obtener una lista completa de las opciones de configuración, consulta [Checkout Sessiones](https://docs.stripe.com/api/checkout/sessions.md).
| Versión heredada | Versión actual | Consejos de integración |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `allowRememberMe` | No compatible | Especifica el parámetro `customer` cuando crees una [Checkout Session](https://docs.stripe.com/api/checkout/sessions/create.md) a fin de reutilizar clientes existentes. También puedes habilitar [Link](https://docs.stripe.com/payments/link/checkout-link.md) para permitir que tus clientes guarden y reutilicen de forma segura su información de pago. |
| `amount` | Se calcula automáticamente como la suma de los importes de todos los `line_items` | El importe total corresponde a la suma de los ítems de factura especificados en Checkout. |
| `billingAddress` | `Session.billing_address_collection` | Checkout recopila automáticamente la dirección de facturación cuando es obligatorio a efectos de la prevención del fraude o conforme a la normativa. Establece este parámetro en `required` para recopilar siempre la dirección de facturación. |
| `closed` | Cuando un cliente quiere cerrar Checkout, cierra la pestaña del navegador. |
| `currency` | `Session.currency` | |
| `description` | `Session.line_items.description` o `product.description` | Si especificas un precio, Checkout muestra una descripción generada automáticamente sobre la frecuencia con que se producen los pagos. Si especificas `Session.line_items`, Checkout muestra el `name` de cada ítem de factura. |
| `email` | `Session.customer_email` | Si ya conoces el correo electrónico de tu cliente, puedes completarlo previamente con [customer_email](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-customer_email) al crear la sesión de Checkout. |
| `image` | **Imagen de marca de la empresa**: sube el logotipo o el ícono de tu empresa en el Dashboard.
\** Imágenes del producto **: Especifica imágenes para cada partida con `product.images`. | Checkout usa imágenes específicas para la [imagen de marca](https://docs.stripe.com/payments/checkout/customization/appearance.md#branding) de tu empresa y para los productos que vendes. Checkout muestra el logotipo de tu empresa por defecto y recurre al ícono de empresa junto al nombre de tu empresa. |
| `key` | Parámetro que ya no se especifica en Checkout | |
| `locale` | `Session.locale` | Puedes especificar una [configuración regional](https://docs.stripe.com/payments/checkout/custom-components.md#localization) admitida cuando crees una Checkout Session. |
| `name` | `product.name` para precios especificados en `Session.line_items` | Si especificas un precio, Checkout le muestra al cliente el nombre del producto al que pertenece el precio. Si especificas `Session.line_items`, Checkout muestra el `name` de cada ítem de factura. |
| `panelLabel` | `submit_type` | Checkout personaliza el texto del botón de forma automática en función de los artículos que vendes. A fin de personalizar el texto del botón para pagos puntuales, utiliza [submit_type](https://docs.stripe.com/payments/checkout/custom-components.md#submit-button). |
| `shippingAddress` | `session.shipping_address_collection` | [Recopila los datos de la dirección de envío](https://docs.stripe.com/payments/collect-addresses.md?payment-ui=checkout) especificando una matriz de `allowed_countries` a los que quieres hacer envíos. |
| `token` o `source` | `success_url` | Ya no hay una devolución de llamada en JavaScript al completarse el pago. Como tu cliente paga en otra página, establece la `success_url` a la que redirigirás al cliente después de que haya completado el pago. |
| `zipCode` | Recopilado automáticamente por Checkout | Checkout recopila automáticamente el código postal cuando es obligatorio a efectos de la prevención del fraude o conforme a la normativa. |
## See also
- [Agregar más métodos de pago](https://docs.stripe.com/payments/payment-methods/overview.md)
- [Recopilar direcciones y números de teléfono](https://docs.stripe.com/payments/collect-addresses.md)