Cómo funcionan PaymentIntents y SetupIntents
Descubre 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 el pago y realizar el cargo al cliente de forma inmediata. Crea un cargo y procesa una transacción para cobrar los fondos.
- API Setup Intents: se utiliza para recopilar y guardar datos del método de pago para su uso futuro sin crear un cargo. Configura las credenciales de pago sin procesar ningún pago.
API Payment Intent | API Setup Intents |
---|---|
Crea un cargo inmediato | No crea ningún cargo |
Hace un seguimiento del ciclo de vida del pago | Hace un seguimiento del 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 cobrarle, y crea un mandato o acuerdo para cargos futuros |
Los pagos asíncronos pueden ser difíciles de gestionar porque pueden depender de las acciones del cliente fuera de tu aplicación. Por ejemplo, es posible que un usuario tenga que confirmar un pago usando 3D Secure.
Para simplificar la gestión de pagos, Stripe utiliza una máquina de estados que te permite vía el estado de un flujo de pago. Para conocer los estados de cada API, selecciona la pestaña correspondiente a continuación:
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.