Cómo funcionan PaymentIntents y SetupIntents
Aprende cómo funcionan PaymentIntents y SetupIntents dentro del flujo de pago.
La principal diferencia entre la API Payment Intents y la API Setup Intents es su finalidad:
- API Payment Intents: se utiliza para cobrar pagos y aceptar pagos de un cliente inmediatamente. Crea un cargo y procesa una transacción para cobrar fondos.
- API Setup Intents: Se utiliza para cobrar y guardar los datos del método de pago para su uso futuro sin crear un aceptar pagos. Configura las credenciales de pago sin procesar ningún pago.
API pago Intent | API Setup Intents |
---|---|
Crea un cargo inmediato | No acepta pagos |
Rastrea el ciclo de vida de un pago | Rastrea el progreso de la configuración de un método de pago |
Utiliza 3D Secure para autenticar al cliente para la transacción correspondiente | Utiliza 3D Secure para autenticar un método de pago sin cobrarlo, y crea una orden o acuerdo para cargos futuros |
Los pagos asincrónicos pueden ser difíciles de gestionar porque dependen de las acciones del cliente que ocurren fuera de tu solicitud. Por ejemplo, es posible que un usuario deba confirmar un pago con 3D Secure.
Para simplificar los pagos, Stripe utiliza una máquina de estados que te permite registrar el estado de un flujo de pago. Para conocer los estados de cada API, selecciona la pestaña aplicable a continuación:
Cuando se crea el PaymentIntent, el estado es requires_
1 hasta que se asocie un método de pago.
Te recomendamos crear el PaymentIntent en cuanto sepas cuánto quieres cobrar, así Stripe puede registrar todos los intentos de pago.
Después de que el cliente proporciona la información de pago, el PaymentIntent está listo para ser confirmado.
En la mayoría de las integraciones, se omite este estado porque la información del método de pago se envía al mismo tiempo que se confirma el pago.
Si el pago requiere más acciones, como la autenticación con 3D Secure, el estado del PaymentIntent es requires_
1.
Una vez cumplidas las acciones requeridas, el PaymentIntent cambia a processing
para los métodos de pago asincrónicos, como los débitos bancarios. El procesamiento de estos métodos puede demorar varios días. Otros métodos de pago, como las tarjetas, se procesan con mayor rapidez y no entran en estadoprocessing
.
Si autorizas y capturas fondos por separado, tu PaymentIntent puede cambiar a requires_
. En ese caso, si se intenta capturar los fondos, el estado pasa a processing
.
Si el estado de un PaymentIntent indica que se ha efectuado con éxito, implica que el flujo de pago ha finalizado.
Los fondos ya están en tu cuenta y puedes completar el pedido con confianza. Si necesitas hacerle un rembolso al cliente, puedes utilizar la API Refunds.
Si el intento de pago falla (por ejemplo debido a un rechazo), el estado del PaymentIntent vuelve a requires_
para que se pueda volver a intentar el pago.
Puedes cancelar un PaymentIntent en cualquier momento antes de que el estado pase a ser processing
2 o succeeded
. Cancelarlo invalida el PaymentIntent para futuros intentos de pago y esta acción no se puede deshacer. Si se retuvieron fondos, la cancelación los liberará.
También es posible que los PaymentIntents pasen automáticamente al estado canceled
después de haberse confirmado demasiadas veces.
1 Las versiones del API anteriores a 2019-02-11 muestran requires_
en lugar de requires_
y requires_
en lugar de requires_
.
2 Puedes cancelar un PaymentIntent con el estado processing
cuando el Método de pago asociado es una Cuenta bancaria de EE. UU. Sin embargo, es posible que falle debido a un período de cancelación limitado y variable.