Requisitos Previos
Para integrar la API de Dodo Payments, necesitarás:- Una cuenta de comerciante de Dodo Payments
- Credenciales de API (clave de API y clave secreta de webhook) desde el panel de control
Integración de API
Sesiones de Pago
Utiliza las Sesiones de Pago para vender productos de suscripción con un pago seguro y alojado. Pasa tu producto de suscripción enproduct_cart y redirige a los clientes a la checkout_url devuelta.
- SDK de Node.js
- SDK de Python
- API REST
Respuesta de API
El siguiente es un ejemplo de la respuesta:checkout_url.
Webhooks
Al integrar suscripciones, recibirás webhooks para rastrear el ciclo de vida de la suscripción. Estos webhooks te ayudan a gestionar los estados de suscripción y los escenarios de pago de manera efectiva. Para configurar tu endpoint de webhook, sigue nuestra Guía de Integración Detallada.Tipos de Eventos de Suscripción
Los siguientes eventos de webhook rastrean cambios en el estado de la suscripción:subscription.active- La suscripción se activa con éxito.subscription.updated- El objeto de suscripción fue actualizado (se activa en cualquier cambio de campo).subscription.on_hold- La suscripción se pone en espera debido a una renovación fallida.subscription.failed- La creación de la suscripción falló durante la creación del mandato.subscription.renewed- La suscripción se renueva para el próximo período de facturación.
Escenarios de Pago
Flujo de Pago Exitoso Cuando un pago tiene éxito, recibirás los siguientes webhooks:subscription.active- Indica la activación de la suscripciónpayment.succeeded- Confirma el pago inicial:- Para facturación inmediata (0 días de prueba): Espera entre 2-10 minutos
- Para días de prueba: cuando estos terminen
subscription.renewed- Indica la deducción del pago y la renovación para el próximo ciclo. (Básicamente, cada vez que se deduzca un pago por productos de suscripción, recibirás el webhooksubscription.renewedjunto conpayment.succeeded)
- Fallo de Suscripción
subscription.failed- La creación de la suscripción falló debido a un fallo en la creación de un mandato.payment.failed- Indica un pago fallido.
- Suscripción en Espera
subscription.on_hold- La suscripción se pone en espera debido a un pago de renovación fallido o un cargo fallido por cambio de plan.- Cuando una suscripción se pone en espera, no se renovará automáticamente hasta que se actualice el método de pago.
Mejor Práctica: Para simplificar la implementación, recomendamos rastrear principalmente los eventos de suscripción para gestionar el ciclo de vida de la suscripción.
Manejo de Suscripciones en Espera
Cuando una suscripción entra en estado deon_hold, necesitas actualizar el método de pago para reactivarla. Esta sección explica cuándo las suscripciones se ponen en espera y cómo manejarlas.
Cuándo las Suscripciones se Ponen en Espera
Una suscripción se pone en espera cuando:- Fallo en el pago de renovación: El cargo de renovación automática falla debido a fondos insuficientes, tarjeta expirada o rechazo bancario
- Fallo en el cargo por cambio de plan: Un cargo inmediato durante la actualización/bajada de plan falla
- Fallo en la autorización del método de pago: El método de pago no puede ser autorizado para cargos recurrentes
Reactivando Suscripciones desde Espera
Para reactivar una suscripción desde el estado deon_hold, utiliza la API de Actualización de Método de Pago. Esto automáticamente:
- Crea un cargo por las deudas restantes
- Genera una factura para el cargo
- Procesa el pago utilizando el nuevo método de pago
- Reactiva la suscripción al estado de
activetras el pago exitoso
1
Manejar el webhook subscription.on_hold
Cuando recibas un webhook
subscription.on_hold, actualiza el estado de tu aplicación y notifica al cliente:2
Actualizar método de pago
Cuando el cliente esté listo para actualizar su método de pago, llama a la API de Actualización de Método de Pago:
También puedes usar un ID de método de pago existente si el cliente tiene métodos de pago guardados:
3
Monitorear eventos de webhook
Después de actualizar el método de pago, monitorea estos eventos de webhook:
payment.succeeded- El cargo por las deudas restantes fue exitososubscription.active- La suscripción ha sido reactivada
Ejemplo de carga útil de evento de suscripción
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
business_id | string | Sí | El identificador único para el negocio |
timestamp | string | Sí | La marca temporal de cuándo ocurrió el evento (no necesariamente la misma que cuando fue entregado) |
type | string | Sí | El tipo de evento. Consulta Tipos de Eventos |
data | object | Sí | La carga útil de datos principal. Consulta Objeto de Datos |
Cambio de Planes de Suscripción
Puedes actualizar o degradar un plan de suscripción utilizando el endpoint de API de cambio de plan. Esto te permite modificar el producto de la suscripción, la cantidad y manejar la prorrata.Referencia de API de Cambio de Plan
Para información detallada sobre cómo cambiar planes de suscripción, consulta nuestra documentación de API de Cambio de Plan.
Opciones de Prorrata
Al cambiar planes de suscripción, tienes dos opciones para manejar el cargo inmediato:1. prorated_immediately
- Calcula el monto prorrateado basado en el tiempo restante en el ciclo de facturación actual
- Cobra al cliente solo por la diferencia entre el plan antiguo y el nuevo
- Durante un período de prueba, esto cambiará inmediatamente al usuario al nuevo plan, cobrando al cliente de inmediato
2. full_immediately
- Cobra al cliente el monto total de suscripción por el nuevo plan
- Ignora cualquier tiempo restante o créditos del plan anterior
- Útil cuando deseas reiniciar el ciclo de facturación o cobrar el monto total independientemente de la prorrata
3. difference_immediately
- Al actualizar, se cobra inmediatamente al cliente la diferencia entre los dos montos del plan.
- Por ejemplo, si el plan actual es de 30 Dólares y el cliente actualiza a 80 Dólares, se le cobra $50 de inmediato.
- Al degradar, el monto no utilizado del plan actual se agrega como crédito interno y se aplica automáticamente a futuras renovaciones de suscripción.
- Por ejemplo, si el plan actual es de 50 Dólares y el cliente cambia a un plan de 20 Dólares, los $30 restantes se acreditan y se utilizan para el próximo ciclo de facturación.
Comportamiento
- Cuando invocas esta API, Dodo Payments inicia inmediatamente un cargo basado en tu opción de prorrata seleccionada
- Si el cambio de plan es una degradación y utilizas
prorated_immediately, los créditos se calcularán automáticamente y se agregarán al saldo de crédito de la suscripción. Estos créditos son específicos para esa suscripción y solo se utilizarán para compensar futuros pagos recurrentes de la misma suscripción - La opción
full_immediatelyomite los cálculos de crédito y cobra el monto completo del nuevo plan
Procesamiento de Cargos
- El cargo inmediato iniciado al cambiar de plan generalmente completa el procesamiento en menos de 2 minutos
- Si este cargo inmediato falla por cualquier motivo, la suscripción se coloca automáticamente en espera hasta que se resuelva el problema
Suscripciones Bajo Demanda
Las suscripciones bajo demanda te permiten cobrar a los clientes de manera flexible, no solo en un horario fijo. Contacta al soporte para habilitar esta función.
on_demand en el cuerpo de tu solicitud. Esto te permite autorizar un método de pago sin un cargo inmediato, o establecer un precio inicial personalizado.
Para cobrar una suscripción bajo demanda:
Para cargos posteriores, utiliza el endpoint POST /subscriptions/charge y especifica el monto a cobrar al cliente por esa transacción.
Para una guía completa, paso a paso—incluyendo ejemplos de solicitud/respuesta, políticas de reintento seguras y manejo de webhooks—consulta la Guía de Suscripciones Bajo Demanda.