Cómo funciona PaymentIntents
Descubre cómo funcionan los PaymentIntents dentro del flujo de pago.
Los pagos que involucran procesos asincrónicos pueden ser complejos de administrar. Por ejemplo, es posible que se le solicite a un usuario que confirme un pago usando 3D Secure. Los flujos de pago asincrónicos son difíciles de gestionar porque dependen de las interacciones del cliente que suceden fuera de tu aplicación. PaymentIntents y SetupIntents simplifican la gestión mediante el seguimiento del estado del flujo en una state machine.
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.