Saltar al contenido principal
Crea un flujo de suscripción que registre un método de pago y cobre al cliente automáticamente con una periodicidad fija. Para aceptar pagos recurrentes con Fintoc, completas tres pasos:
  1. En tu backend, crea un Checkout Session con flow: subscription.
  2. Redirige al cliente para completar el registro en la página de checkout alojada por Fintoc.
  3. Maneja los eventos posteriores al registro y de pagos recurrentes (webhooks).
El siguiente diagrama muestra cómo Fintoc interactúa tanto con tu backend como con tu frontend:
fintoc-recurring-payment-diagram

Crea una Checkout Session

El objeto Checkout Session representa tu intención de registrar un método de pago para cobros recurrentes y de crear una suscripción con un monto y periodicidad fijos. Usando tu Secret Key, crea un Checkout Session en tu backend con flow en subscription. Servidor
Node
Fintoc responde con el objeto Checkout Session. Guarda su id y redirect_url para continuar el flujo:
La respuesta incluye un atributo redirect_url. En el siguiente paso, redirige al cliente a esta ubicación para completar la suscripción. La siguiente tabla describe los parámetros que envías al crear un Checkout Session:

Incluir datos del cliente (requerido para suscripciones)

Al crear un Checkout Session con flow: subscription, debes incluir información del cliente. Puedes hacerlo ya sea referenciando un ID de customer existente (customer) o enviando customer_data para crear uno en línea:

Incluir una lista de ítems (requerido para suscripciones)

Al crear un Checkout Session con flow: subscription, debes incluir los ítems a los que se suscribe el cliente. Esta información permite a Fintoc mostrar los ítems en la página de checkout y mostrar solo los métodos de pago disponibles para productos específicos. Cada ítem en line_items debe incluir price_data.

Objeto price_data

Objeto product_data

Redirige al cliente para completar el registro

A continuación, redirige al cliente a la página de checkout alojada por Fintoc usando el redirect_url. Después de que el cliente complete el registro, Fintoc lo redirige de vuelta a tu sitio: al success_url en caso de éxito, o al cancel_url si cancela. Cliente

Maneja los eventos posteriores a la sesión

Una vez que un Checkout Session finaliza, manejas el resultado en tu frontend y completas la suscripción en tu backend. Para tu backend, usas los eventos que Fintoc envía a través de webhooks.

Completa la suscripción en tu backend

Fintoc envía un evento checkout_session.finished cuando la sesión se completa. En un flujo de suscripción, este evento incluye información sobre la sesión y referencias a la subscription y al payment_method creados durante el registro.
Debes manejar los siguientes eventos posteriores a la sesión:

Prueba tu integración

Para confirmar que tu integración funciona correctamente, puedes simular suscripciones y pagos recurrentes programados sin mover dinero.

1) Crea una Checkout Session de suscripción usando credenciales de usuario de prueba

Usando tu Secret Key de modo de prueba, crea un Checkout Session con flow: subscription en tu backend. Luego completa el registro en la página de checkout alojada por Fintoc con las siguientes credenciales: Credenciales de prueba
  • Usuario (RUT): 11.111.111-1
  • Contraseña: jonsnow

2) Maneja pagos programados simulados de la suscripción

En modo de prueba, los pagos programados de la suscripción son simulados para que puedas verificar cómo maneja tu integración el éxito y la falla sin mover dinero. Los manejas a través de los mismos eventos invoice.* y payment_intent.* descritos en la sección Manage invoices a continuación: un cargo exitoso emite invoice.payment_succeeded y payment_intent.succeeded, y uno fallido emite invoice.payment_failed y payment_intent.failed.
El modo de prueba aún no está disponible para pagos recurrentes en México.

Gestionar invoices

Cuando se crea una suscripción después de un registro exitoso en checkout, Fintoc genera automáticamente un Invoice para cada ciclo de facturación. Una invoice representa el monto que el cliente debe por un período dado. Fintoc intenta cobrar el pago de la invoice usando el método de pago registrado. Para detalles completos sobre invoices, consulta el Invoice Object.

Invoices en el flujo de suscripción

Después del evento checkout_session.finished, la suscripción pasa a active y Fintoc crea la primera invoice. A partir de ese momento, debes manejar los siguientes eventos relacionados a invoices junto con los eventos posteriores a la sesión descritos arriba: Mes 1: Justo después de que se crea la suscripción, Fintoc genera la primera invoice e intenta el pago inmediatamente. Recibirás invoice.created, seguido de invoice.finalized, luego invoice.payment_succeeded y payment_intent.succeeded en caso de éxito. Mes 2 en adelante: En cada renovación de ciclo de facturación (basado en el billing_cycle_anchor de la suscripción), Fintoc crea una nueva invoice en estado draft. Después de 1 hora, Fintoc intenta el pago automáticamente. En éxito recibes invoice.payment_succeeded. En falla, invoice.payment_failed.

Recuperar un pago fallido

Cuando un cobro automático falla, Fintoc emite invoice.payment_failed. Para recuperar el pago, envía el hosted_invoice_url de la invoice a tu cliente por tu propio canal, como email o WhatsApp. La página alojada permite que tu cliente pague usando los métodos de pago habilitados en la cuenta de tu organización. Un pago exitoso crea un payment_intent en la invoice y salda la deuda. El método de pago inscrito de la suscripción sigue siendo válido, y Fintoc cobra el siguiente ciclo automáticamente. El hosted_invoice_url queda disponible en el objeto Invoice una vez que la invoice alcanza el estado open. Para más detalles, consulta el Invoice object.
Una invoice acepta solo un pago a la vez. Si abres el hosted_invoice_url mientras un cobro automático está en curso, la página muestra que hay un pago de invoice en progreso y el enlace de pago queda deshabilitado. Fintoc vuelve a habilitar el enlace de pago si el cobro automático falla.

Probar la creación de invoice con estado draft

Para probar una invoice que se crea en estado draft, crea una suscripción con un line item usando el nombre de producto sandbox_draft: Servidor
Node
Fintoc crea el Checkout Session:
Fintoc crea la invoice en estado draft, de modo que puedas editar sus ítems con el endpoint Add Lines antes de que la invoice transicione al siguiente estado.