Ir a contenido
Crea una cuenta
o
Inicia sesión
Logotipo de Stripe Docs
/
Pregúntale a la IA
Crear una cuenta
Iniciar sesión
Empieza ahora
Pagos
Automatización contable
Plataformas y marketplaces
Gestión del dinero
Herramientas para desarrolladores
Empieza ahora
Pagos
Automatización contable
Empieza ahora
Pagos
Automatización contable
Plataformas y marketplaces
Gestión del dinero
ResumenConoce todos los productos
Empieza a desarrollar
Empezar a desarrollar
Proyectos de muestra
Acerca de las API
    Visita a las API
    API Payment Intents
    API Setup Intents
    Métodos de pago
    API anteriores
      Cargos
        Migrar a las nuevas API
        Aceptar un pago con tarjeta
        Guardar una tarjeta
        Bloquear un importe en una tarjeta
        Charges con Connect
      Sources
    Fases de lanzamiento
Creación de LLM
Utiliza Stripe sin necesidad de programación
Configura Stripe
Crea una cuenta.
Productos y precios
Dashboard web
Dashboard móvil
Migra a Stripe
Migrar datos de clientes
Migra datos de pago
Migrar suscripciones
Gestiona el riesgo de fraude
Comprender el fraude
Protección contra fraudes de Radar
Gestionar disputas
Verificar identidades
Soporte normativo
InicioEmpieza ahoraAbout the APIsOlder APIsCharges

Cómo migrar a la API Payment Intents

Copiar página

¿Te interesa usar Stripe Billing, Tax, descuentos, envíos o conversión de moneda?

Estamos desarrollando una integración del Payment Element que gestiona las suscripciones, los impuestos, los descuentos, los envíos y la conversión de monedas. Para obtener más información, lee la guía Crea una página de proceso de compra.

Aprende a migrar tu integración actual de la API Charges y tarjetas.

La migración del flujo de pago puede resultar una tarea titánica. Es más seguro empezar a usar la API Payment Intents de a poco en paralelo con la API Charges. Para ello, puedes dividir la migración en los siguientes pasos:

  1. Actualiza la versión de la API y la biblioteca de cliente.
  2. Si corresponde, migra el código que lee las propiedades de Charge para tener una ruta de lectura uniforme entre los cargos creados por la API Charges y los cargos creados por la API Payment Intents. De esta manera, garantizas que la integración de lectura funcione tanto para la integración anterior de pagos como para la nueva.
  3. Migra tu integración actual de la API Charges para web, iOS y Android para usar la API Payment Intents.
  4. Migra la integración para guardar tarjetas en los objetos Customer.
  5. Haz pruebas con tarjetas de prueba reglamentarias para garantizar que la integración actualizada gestione la autenticación correctamente.

Actualiza tu versión de API y la biblioteca de cliente

Si bien la API Payment Intents funciona en todas las versiones de API, te recomendamos actualizar a la última versión. Si decides usar una versión de API anterior a 2019-02-11, presta atención a los siguientes dos cambios cuando repases los ejemplos de códigos:

  • requires_source ahora se llama requires_payment_method
  • requires_source_action ahora se llama requires_action

In addition, if you use one of our SDKs, upgrade to the latest version of the library to use the Payment Intents API.

Migra tus flujos para pagos puntuales

Una integración creada con Stripe.js y Elements consta de los siguientes pasos:

  1. Registra tu intención de cobrar el pago del lado del servidor
  2. Recopila los datos del pago del lado del cliente
  3. Inicia la creación del pago
  4. Completa el pedido del cliente del lado del servidor

Paso 1: Registrar la intención de cobrar el pago del lado del servidor

Crea un PaymentIntent en tu servidor y hazlo accesible del lado del cliente.

Antes
Después

Antes no era posible

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1099 \ -d "currency"="usd"

Paso 2: Recopilar los datos de pago del lado del cliente

Usa la función confirmCardPayment, que recopila la información de pago y la envía directamente a Stripe.

Antes
Después
stripe.createToken( cardElement ).then(function(token) { // Send token to server });
stripe.confirmCardPayment( INTENT_SECRET_FROM_STEP_1, { payment_method: {card: cardElement} } ).then(function(result) { if (result.error) { // Display error.message in your UI. } else { // The payment has succeeded // Display a success message } });

Paso 3: Iniciar la creación del pago

En tu integración actual, el último paso consiste en utilizar la información de pago tokenizada para crear un cargo en el servidor. Esto ya no es necesario, ya que la función confirmCardPayment, invocada en el paso anterior, inicia la creación del cargo.

Antes
Después
Command Line
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{FROM_PREVIOUS_STEP}}" \ -d "amount"=1099 \ -d "currency"="usd"

Se completa en el paso anterior

Paso 4: Completar el pedido del cliente

Con la confirmación automática, el cargo se crea de forma asincrónica en función de la acción que ejecuta el cliente de su lado, por lo que debes controlar los webhooks para determinar si se concreta el pago. Para tomar medidas como completar el pedido del cliente después de la confirmación del pago, implementa soporte para webhooks y monitorea el evento payment_intent.succeeded.

Antes
Después

Si el cargo se efectúa con éxito, completa el pedido.

Suscríbete al webhook payment_intent.succeeded y procesa en el controlador de webhooks.

Ahora que has hecho la migración, usa las tarjetas de prueba en la siguiente sección para verificar si la integración actualizada gestiona la autenticación con 3D Secure.

Migra la integración para guardar tarjetas en objetos Customer

La integración de la API Payment Intents que recopila información de tarjetas dentro del flujo de finalización de compra consta de los siguientes pasos:

  1. Registra tu intención de cobrar el pago del lado del servidor
  2. Recopila los datos del pago del lado del cliente
  3. Inicia la creación del pago
  4. Completa el pedido del cliente del lado del servidor

Paso 1: Registrar la intención de cobrar el pago del lado del servidor

Crea un PaymentIntent en tu servidor. Establece setup_future_usage en off_session si tu idea principal es cobrar a los usuarios cuando están fuera de la aplicación, o en on_session si planeas cobrarles en la aplicación. Si planeas usar la tarjeta para pagos dentro y fuera de la sesión, usa off_session. Si proporcionas el parámetro setup_future_usage junto con una identificación de cliente, se guardará el PaymentMethod resultante para ese cliente después de que se haya confirmado el PaymentIntent y se hayan completado las acciones requeridas por parte del cliente. A continuación, haz que el PaymentIntent sea accesible del lado del cliente.

Antes
Después

Antes no era posible

Command Line
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "setup_future_usage"="off_session" \ -d "amount"=1099 \ -d "currency"="usd"

Paso 2: Recopilar los datos de pago del lado del cliente

Usa la función confirmCardPayment, que recopila la información de pago y la envía directamente a Stripe.

Antes
Después
stripe.createToken( // or stripe.createSource cardElement ).then(function(token) { // Send token to server });
stripe.confirmCardPayment( '{{INTENT_SECRET_FROM_STEP_1}}', { payment_method: {card: cardElement}, } ).then(function(result) { if (result.error) { // Display error.message in your UI. } else { // The payment has succeeded // Display a success message } });

Por último, adjunta el método de pago (paymentIntent.payment_method) al cliente.

Antes
Después
Command Line
curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}}/sources \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{TOKEN_OR_SOURCE}}"
Command Line
curl https://api.stripe.com/v1/payment_method/{{PAYMENT_METHOD_ID}}/attach \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "customer"="{{CUSTOMER_ID}}"

Paso 3: Iniciar la creación del pago

En tu integración actual, el último paso consiste en utilizar la información de pago tokenizada para crear un cargo en el servidor. Esto ya no es necesario, ya que la función confirmCardPayment, invocada en el paso anterior, inicia la creación del cargo.

Antes
Después
Command Line
curl https://api.stripe.com/v1/charges \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "source"="{{FROM_PREVIOUS_STEP}}" \ -d "customer"="{{CUSTOMER_ID}}" \ -d "amount"=1099 \ -d "currency"="usd"

Se completa en el paso anterior

Paso 4: Completar el pedido del cliente

Con la confirmación automática, el cargo se crea de forma asincrónica en función de la acción que ejecuta el cliente de su lado, por lo que debes controlar los webhooks para determinar si se concreta el pago. Para tomar medidas como completar el pedido del cliente después de la confirmación del pago, implementa soporte para webhooks y monitorea el evento payment_intent.succeeded.

Antes
Después

Si el cargo se efectúa con éxito, completa el pedido.

Suscríbete al webhook payment_intent.succeeded y procesa en el controlador de webhooks.

Ahora que has hecho la migración, usa las tarjetas de prueba en la siguiente sección para verificar si la integración actualizada gestiona la autenticación con 3D Secure.

Acceder a métodos de pago guardados

Para mostrar los objetos Cards, Sources y PaymentMethods ya guardados del cliente, indica los métodos de pago en lugar de leer la propiedad sources del objeto Customer. Esta acción es necesaria porque los nuevos PaymentMethods agregados a un cliente no se duplicarán en la propiedad sources del objeto Customer.

Antes
Después
Command Line
customer.sources
Command Line
curl https://api.stripe.com/v1/payment_methods?customer={{CUSTOMER_ID}}&type=card \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:

Probar la integración

Es importante que pruebes la integración a conciencia para asegurarte de estar gestionando correctamente las tarjetas que requieren otra autenticación y las que no. Usa estos números de tarjeta en un entorno de prueba con cualquier fecha de vencimiento futura y cualquier código CVC de tres dígitos a fin de validar tu integración para ambos tipos de tarjeta.

NúmeroAutenticaciónDescripción
Exigido en la configuración o en la primera transacciónEsta tarjeta de prueba exige la autenticación de los pagos únicos. No obstante, si configuras la tarjeta con la API Setup Intents y usas la tarjeta guardada para pagos sucesivos, no es necesario hacer otra autenticación.
ObligatorioEsta tarjeta de prueba exige la autenticación en todas las transacciones.
ObligatorioEsta tarjeta de prueba exige la autenticación, pero los pagos serán rechazados con el código de error insufficient_funds después de completarse con éxito la autenticación.
AceptadoThis test card supports authentication through 3D Secure 2, but does not require it. Payments using this card do not require additional authentication in a sandbox unless your sandbox Radar rules request authentication.

Usa estas tarjetas en tu aplicación o en la demostración de pagos para ver la diferencia de comportamiento.

Consulta también

  • Payment Intents en iOS
  • Payment Intents en Android
¿Te fue útil esta página?
SíNo
¿Necesitas ayuda? Ponte en contacto con soporte.
Únete a nuestro programa de acceso anticipado.
Echa un vistazo a nuestro registro de cambios.
¿Tienes alguna pregunta? Contacto.
¿LLM? Lee llms.txt.
Con tecnología de Markdoc