Cómo funcionan PaymentIntents y SetupIntents
Aprende cómo funcionan PaymentIntents y SetupIntents dentro del flujo de pago.
Los pagos relacionados con procesos asincrónicos pueden ser complejos de gestionar. Por ejemplo, es posible que se requiera que un usuario confirme un pago con 3D Secure.
Los flujos de pago asincrónicos son complejos de gestionar, ya que dependen de interacciones del cliente que ocurren fuera de tu solicitud. PaymentIntents y SetupIntents simplifican la gestión mediante el seguimiento del estado del flujo en una máquina de estados.
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.