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 Checkout Sessions para vender productos de suscripción con un checkout seguro y alojado. Pasa tu producto de suscripción enproduct_cart y redirige a los clientes a la checkout_url devuelta.
- Node.js SDK
- Python SDK
- REST API
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 correctamente.subscription.updated- El objeto de suscripción se actualizó (se dispara con cualquier cambio de campo).subscription.on_hold- La suscripción se suspende 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 siguiente 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 y 10 minutos
- Para días de prueba: cuando este finalice
subscription.renewed- Indica que se ha deducido el pago y la renovación para el siguiente ciclo. (Básicamente, siempre que se deduzca el pago de 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 que no se pudo crear 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 entra en espera, no se renovará automáticamente hasta que se actualice el método de pago.
Mejores prácticas: Para simplificar la implementación, recomendamos rastrear principalmente los eventos de suscripción para administrar el ciclo de vida de la suscripción.
Manejo de Suscripciones en Espera
Cuando una suscripción entra en el estadoon_hold, necesitas actualizar el método de pago para reactivarla. Esta sección explica cuándo las suscripciones entran en espera y cómo gestionarlas.
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 estadoon_hold, usa la API Update Payment Method. Esto automáticamente:
- Crea un cargo por los adeudos restantes
- Genera una factura por el cargo
- Procesa el pago con el nuevo método de pago
- Reactiva la suscripción al estado
activetras el pago exitoso
Handle subscription.on_hold webhook
Cuando recibas un webhook
subscription.on_hold, actualiza el estado de tu aplicación y notifica al cliente:Update payment method
Cuando el cliente esté listo para actualizar su método de pago, llama a la API Update Payment Method:
También puedes usar un ID de método de pago existente si el cliente tiene métodos guardados:
Ejemplo de carga útil de evento de suscripción
| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
business_id | string | Yes | El identificador único para la empresa |
timestamp | string | Yes | La marca de tiempo de cuándo ocurrió el evento (no necesariamente coincide con cuándo se entregó) |
type | string | Yes | El tipo de evento. Consulta Tipos de evento |
data | object | Yes | La carga principal de datos. 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.Change Plan API Reference
Para obtener información detallada sobre cómo cambiar planes de suscripción, consulta nuestra documentación de la API Change Plan.
Opciones de Prorrata
Al cambiar planes de suscripción, tienes dos opciones para manejar el cargo inmediato:1. prorated_immediately
- Calcula el importe prorrateado según 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 cambia inmediatamente al usuario al nuevo plan, cobrando al cliente de inmediato
2. full_immediately
- Cobra al cliente el importe total de la suscripción del nuevo plan
- Ignora cualquier tiempo restante o crédito del plan anterior
- Útil cuando quieres reiniciar el ciclo de facturación o cobrar el importe completo sin importar el prorrateo
3. difference_immediately
- Al actualizar, se cobra inmediatamente al cliente la diferencia entre las dos cantidades del plan.
- Por ejemplo, si el plan actual cuesta 30 dólares y el cliente actualiza a uno de 80 dólares, se le cobra $50 instantáneamente.
- Al degradar, el importe no usado del plan actual se añade como crédito interno y se aplica automáticamente a futuras renovaciones de la suscripción.
- Por ejemplo, si el plan actual cuesta 50 dólares y el cliente cambia a un plan de 20 dólares, los $30 restantes se acreditan y se usan para el siguiente ciclo de facturación.
Comportamiento
- Cuando invocas esta API, Dodo Payments inicia inmediatamente un cargo basado en la opción de prorrateo seleccionada
- Si el cambio de plan es una degradación y usas
prorated_immediately, los créditos se calculan automáticamente y se añaden al saldo de crédito de la suscripción. Estos créditos son específicos de esa suscripción y solo se utilizarán para compensar futuros pagos recurrentes de la misma suscripción - La opción
full_immediatelyevita los cálculos de crédito y cobra el importe 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 forma flexible, no solo con un calendario fijo. Esta función está disponible para todas las cuentas.
on_demand en el cuerpo de la 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.