¿Te interesa utilizar Stripe Billing, Tax, descuentos, envío o conversión de divisas?
Estamos desarrollando una integración de Payment Element que gestiona las suscripciones, los impuestos, los descuentos, los envíos y la conversión de divisas. Para más información, lee la guía para Crear una página de proceso de compra.
Descubre cómo migrar tu integración de la API Charges y tus tarjetas actuales.
Puede resultar abrumador migrar el flujo de pagos. Es más prudente adoptar progresivamente la API Payment Intents en paralelo con la API Charges. Para ello, puedes dividir la migración en los siguientes pasos:
Si corresponde, migra el código que lee las propiedades 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 te aseguras de que la integración de lectura funcione tanto para la integración anterior de pagos como para la nueva.
Migra tu integración actual de la API Charges para web, iOS y Android para usar la API Payment Intents.
Actualiza tu versión de la 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 ha pasado a llamarse requires_payment_method
requires_source_action ha pasado a llamarse requires_action
Además, si usas uno de nuestros SDK, actualiza a la última versión de la biblioteca para poder usar la API Payment Intents.
Migra tus flujos para pagos puntuales
Una integración creada con Stripe.js y Elements consta de los siguientes pasos:
Registra tu intención de cobrar el pago del lado del servidor
Recopila los datos del pago del lado del cliente
Inicia la creación del pago
Completa el pedido del cliente del lado del servidor
Paso 1: Registrar la intención de cobrar el pago del lado del servidor
Paso 2: Recopilar los datos de pago del lado del cliente
Usa la función confirmCardPayment, que recopila la información del 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 tu servidor. Esto ya no es necesario, ya que la función confirmCardPayment, llamada en el paso anterior, inicia la creación del cargo.
Con la confirmación automática, tu cargo se crea de forma asincrónica en función de la acción realizada por el cliente en su lado, por lo que debes controlar los webhooks para determinar si el pago se hace efectivo. Para llevar a cabo pasos como completar el pedido del cliente después de confirmarse que el pago se ha hecho efectivo, implementa soporte para webhooks y supervisa el evento payment_intent.succeeded.
Antes
Después
Si el cargo se hace efectivo, se completa el pedido.
Suscríbete al webhook payment_intent.succeeded y completa el pedido en el controlador de webhooks.
Ahora que has hecho la migración, usa las tarjetas de prueba en la siguiente sección para verificar que la integración actualizada gestiona la autenticación mediante 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 en el flujo de finalización de compra consta de los siguientes pasos:
Registra tu intención de cobrar el pago del lado del servidor
Recopila los datos del pago del lado del cliente
Inicia la creación del pago
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 como off_session si principalmente tienes la intención de cobrar a los usuarios cuando están fuera de tu aplicación o como on_session si planeas cobrarles en la aplicación. Si tienes previsto utilizar la tarjeta para pagos durante y fuera de la sesión, utiliza off_session. Si proporcionas el parámetro setup_future_usage junto con un ID de cliente, el PaymentMethod resultante se guardará en 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.
Paso 2: Recopilar los datos de pago del lado del cliente
Usa la función confirmCardPayment, que recopila la información del 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.
En tu integración actual, el último paso consiste en utilizar la información de pago tokenizada para crear un cargo en tu servidor. Esto ya no es necesario, ya que la función confirmCardPayment, llamada en el paso anterior, inicia la creación del cargo.
Con la confirmación automática, tu cargo se crea de forma asincrónica en función de la acción realizada por el cliente en su lado, por lo que debes controlar los webhooks para determinar si el pago se hace efectivo. Para llevar a cabo pasos como completar el pedido del cliente después de confirmarse que el pago se ha hecho efectivo, implementa soporte para webhooks y supervisa el evento payment_intent.succeeded.
Antes
Después
Si el cargo se hace efectivo, se completa el pedido.
Suscríbete al webhook payment_intent.succeeded y completa el pedido en el controlador de webhooks.
Ahora que has hecho la migración, usa las tarjetas de prueba en la siguiente sección para verificar que la integración actualizada gestiona la autenticación mediante 3D Secure.
Acceder a métodos de pago guardados
Para mostrar las Cards, Sources y PaymentMethods previamente guardados por el cliente, enumera los métodos de pago en lugar de leer la propiedad sources del objeto del cliente. Esto es necesario porque los nuevos PaymentMethods añadidos a un cliente no se duplicarán en la propiedad sources del objeto Customer.
Es importante que pruebes exhaustivamente la integración para asegurarte de que gestionas bien las tarjetas que requieren autenticación adicional y las que no. Usa estos números de tarjeta en un entorno de prueba con cualquier fecha de caducidad en el futuro y cualquier código CVC de tres dígitos para validar tu integración cuando se requiera autenticación y cuando no se requiera.
Número
Autenticación
Descripción
Exigido en la configuración o en la primera transacción
Esta tarjeta de prueba requiere la autenticación de los pagos puntuales. No obstante, si configuras la tarjeta con la API Setup Intents y usas la tarjeta guardada para pagos sucesivos, ya no se necesitará realizar la autenticación.
Obligatorio
Esta tarjeta de prueba requiere la autenticación de todas las transacciones.
Obligatorio
Esta tarjeta de prueba requiere la autenticación, pero los pagos se rechazarán con el código de error insufficient_funds después de completarse correctamente la autenticación.
Aceptado
Esta tarjeta de prueba acepta la autenticación mediante 3D Secure 2, pero no es obligatoria. Los pagos efectuados con esta tarjeta no requieren autenticación adicional en un entorno de prueba, a menos que las reglas de Radar del entorno de prueba soliciten la autenticación.
Usa estas tarjetas en tu aplicación o en la demo de pagos para ver la diferencia de comportamiento.