Cómo funciona PaymentIntents
Descubre cómo funciona PaymentIntents dentro del flujo de pago.
Los pagos que involucran procesos asíncronos pueden ser complejos de gestionar. Por ejemplo, es posible que a un usuario se le pida que confirme un pago con 3D Secure. Los flujos de pago asíncronos son difíciles de gestionar porque dependen de las interacciones de los clientes que tienen lugar 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 asocia un método de pago.
En cuanto sepas cuánto quieres cobrar, te recomendamos crear el PaymentIntent para que Stripe pueda registrar todos los intentos de pago.
El PaymentIntent podrá confirmarse una vez que el cliente proporcione la información de pago.
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 acciones adicionales, como la autenticación con 3D Secure, el PaymentIntent tiene un estado de requires_
1.
Una vez cumplidas las acciones requeridas, el PaymentIntent cambia al estado processing
para los métodos de pago asíncronos, como los adeudos bancarios. Este tipo de métodos de pago pueden tardar varios días en procesarse. Otros métodos de pago, como las tarjetas, se procesan más rápidamente y no pasan al estado processing
.
Si autorizas y recoges fondos por separado, tu PaymentIntent puede cambiar a requires_
. En ese caso, si intentas capturar los fondos, pasará a processing
.
Si el estado de un PaymentIntent es succeeded significa que el flujo de pago se ha completado.
Los fondos ya están en tu cuenta y puedes completar el pedido con confianza. Si necesitas hacer un reembolso 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 se encuentre en el estado processing
2 o succeeded
. Cancelarlo invalida el PaymentIntent para futuros intentos de pago y no se puede deshacer. Si se han retenido fondos, la cancelación los libera.
Los PaymentIntents también podrían pasar automáticamente al estado canceled
después de haber sido confirmados demasiadas veces.
1 Las versiones de las API anteriores al 11/02/2019 muestran requires_
en lugar de requires_
, y requires_
en lugar de requires_
.
2 Puedes cancelar un PaymentIntent en el estado processing
cuando el método de pago asociado sea una cuenta bancaria de EE. UU. Sin embargo, puede fallar debido a un período de tiempo de cancelación limitado y variable.