hosted_invoice_url de cada una, uno por invoice.
Hay dos flujos para actualizar el método de pago de una suscripción:
- Caso A (iniciado por el usuario): Envíale al cliente un nuevo link de enrolamiento. Úsalo cuando el cliente tiene que autorizar un nuevo mandato de Pago Automático de Cuentas (PAC) o ingresar los datos de una nueva tarjeta.
- Caso B (iniciado por el comercio): Asocia un método de pago que ya está activo directamente por la API, sin interacción del cliente.
Caso A: Enviar un link de reenrolamiento
Crea unCheckoutSession con flow: "setup" y envía el ID de la suscripción existente en subscription. El cliente abre el link y enrola un nuevo método de pago. Para tarjetas, Fintoc asocia el método de pago a la suscripción cuando termina el enrolamiento. Para PAC, Fintoc asocia el método de pago cuando el mandato se activa.
Servidor
Node
CheckoutSession:
redirect_url para que complete el enrolamiento.
Ventana de activación del PAC
Para PAC, la confirmación del banco toma aproximadamente 5 días hábiles. El nuevo método de pago queda en estadopending durante esa ventana, y Fintoc todavía no ejecutó el cambio.
checkout_session.finished indica que el cliente completó el flujo de enrolamiento, no que el cambio ocurrió. Espera el subscription.payment_method_updated antes de tratar el nuevo método de pago como activo.
Para revisar el estado de activación mientras el mandato está pendiente, llama a GET /v2/payment_methods/{id} y lee pac.status:
Maneja los eventos de reenrolamiento
Suscríbete a los siguientes eventos cuando actualizas el método de pago de una suscripción con un link de reenrolamiento:Caso B: Asociar un método de pago existente
Si el cliente ya tiene un método de pago activo registrado, asócialo a una suscripción directamente, sin un nuevo link de enrolamiento.Cambia el método de pago de una suscripción existente
Llama aPATCH /v2/subscriptions/{id} con el ID del método de pago activo. El método de pago debe pertenecer al mismo customer que la suscripción.
Servidor
Node
Subscription actualizada:
payment_method en la respuesta apunta al nuevo método de pago. Fintoc también emite subscription.payment_method_updated.
Crear una suscripción nueva con un método de pago existente
Crear una suscripción contra un método de pago que el cliente ya tiene no es una actualización, así que vive con el resto de la creación de suscripciones. Envía elpayment_method a Crear una suscripción, como se describe en Cobra automáticamente contra un método de pago.
Actualizar el método de pago de una suscripción no paga las invoices abiertas
Actualizar el método de pago cambia qué método cobra Fintoc en los ciclos de facturación futuros. No paga las invoices abiertas de ciclos anteriores. Si la suscripción tiene invoices abiertas cuando ocurre el cambio, cóbralas por separado usando elhosted_invoice_url de cada una, uno por invoice.
Casos borde
Una actualización a la vez: Solo puede haber una actualización de método de pago en curso por suscripción. Un segundo intento mientras un mandato PAC estápending devuelve un error payment_method_update_in_progress (409 Conflict).
Ciclo de facturación durante la ventana de activación: Si un ancla de ciclo de facturación cae mientras un nuevo mandato PAC todavía está pending, Fintoc crea la invoice en estado open sin cobro automático. Cobra la invoice usando su hosted_invoice_url.
Cancelación durante la activación: Si cancelas la suscripción mientras un mandato PAC espera la confirmación del banco, el cambio no se ejecuta. Fintoc crea y guarda el nuevo método de pago en el registro del cliente, pero no lo asocia a ninguna suscripción.
Prueba tu integración
Usando tu Secret Key de modo de prueba, ejecuta los dos flujos contra una suscripción de prueba sin mover dinero.1) Prueba el link de reenrolamiento
Crea elCheckout Session de setup con el subscription de una suscripción de prueba existente, y completa el enrolamiento en la página alojada por Fintoc con las credenciales de prueba que están en Guardar un método de pago para cobros futuros. Verifica que:
- Recibas el
checkout_session.finished, con el ID del nuevopayment_method. - Recibas el
subscription.payment_method_updated, y que tu integración trate el nuevo método de pago como activo solo después de ese evento. - Obtener una suscripción reporte el nuevo
payment_method.
checkout_session.finished. Esa es la falla que describe la ventana de activación del PAC.
2) Prueba el cambio por API
Enrola un segundo método de pago para el mismo customer de prueba y cámbialo con Actualizar una suscripción. Verifica que:- La respuesta reporte el nuevo
payment_methody mantenga la suscripciónactive. - Recibas el
subscription.payment_method_updated. - Un segundo cambio mientras otro está en curso devuelva
payment_method_update_in_progresscon409 Conflict.