Referencia de API para Cambiar Plan
API de Vista Previa de Cambio de Plan
Guía de Integración de Suscripciones
¿Qué es una actualización o downgrade de suscripción?
Cambiar de plan te permite mover a un cliente entre niveles o cantidades de suscripción. Úsalo para:- Alinear precios con uso o características
- Pasar de mensual a anual (o viceversa)
- Ajustar la cantidad para productos basados en asientos
Cuándo usar cambios de plan
- Actualiza cuando un cliente necesita más características, uso o asientos
- Downgrade cuando el uso disminuye
- Migra usuarios a un nuevo producto o precio sin cancelar su suscripción
Requisitos previos
Antes de implementar cambios en el plan de suscripción, asegúrate de tener:- Una cuenta de comerciante de Dodo Payments con productos de suscripción activos
- Credenciales de API (clave de API y clave secreta de webhook) desde el panel de control
- Una suscripción activa existente para modificar
- Un endpoint de webhook configurado para manejar eventos de suscripción
Guía de Implementación Paso a Paso
Sigue esta guía completa para implementar cambios en el plan de suscripción en tu aplicación:Entender los Requisitos de Cambio de Plan
- Qué productos de suscripción se pueden cambiar a cuáles otros
- Qué modo de prorrata se ajusta a tu modelo de negocio
- Cómo manejar los cambios de plan fallidos de manera elegante
- Qué eventos de webhook rastrear para la gestión de estado
Elige tu Estrategia de Prorrata
- prorated_immediately
- difference_immediately
- full_immediately
- Calcula el monto prorrateado exacto basado en el tiempo restante del ciclo
- Cobra un monto prorrateado basado en el tiempo no utilizado restante en el ciclo
- Proporciona facturación transparente a los clientes
Implementar la API de Cambio de Plan
prorated_immediately, full_immediately, o difference_immediately.Manejar Eventos de Webhook
subscription.active: Cambio de plan exitoso, suscripción actualizadasubscription.plan_changed: Plan de suscripción cambiado (actualización/downgrade/actualización de addon)subscription.on_hold: El cargo por cambio de plan falló, suscripción pausadapayment.succeeded: Cargo inmediato por cambio de plan exitosopayment.failed: Cargo inmediato fallido
Actualizar el Estado de tu Aplicación
- Concede/revoca características basadas en el nuevo plan
- Actualiza el panel del cliente con los nuevos detalles del plan
- Envía correos electrónicos de confirmación sobre cambios de plan
- Registra cambios de facturación para fines de auditoría
Probar y Monitorear
- Prueba todos los modos de prorrata con diferentes escenarios
- Verifica que el manejo de webhooks funcione correctamente
- Monitorea las tasas de éxito de los cambios de plan
- Configura alertas para cambios de plan fallidos
Vista Previa de Cambios de Plan
Antes de comprometerte a un cambio de plan, usa la API de Vista Previa para mostrar a los clientes exactamente lo que se les cobrará:- Node.js SDK
- Python SDK
API de Cambio de Plan
Usa la API de Cambio de Plan para modificar el producto, la cantidad y el comportamiento de prorrata para una suscripción activa.Ejemplos de inicio rápido
- Node.js SDK
- Python SDK
- Go SDK
- HTTP
invoice_id y payment_id se devuelven solo cuando se crea un cargo inmediato y/o una factura durante el cambio de plan. Siempre confía en los eventos de webhook (por ejemplo, payment.succeeded, subscription.plan_changed) para confirmar resultados.Gestión de Addons
Al cambiar planes de suscripción, también puedes modificar addons:Modos de Prorrata
Elige cómo facturar al cliente al cambiar de planes:prorated_immediately
- Cobra por la diferencia parcial en el ciclo actual
- Si está en prueba, cobra de inmediato y cambia al nuevo plan ahora
- Downgrade: puede generar un crédito prorrateado aplicado a futuras renovaciones
full_immediately
- Cobra el monto total del nuevo plan de inmediato
- Ignora el tiempo restante del antiguo plan
difference_immediately son específicos de la suscripción y distintos de Créditos de Clientes. Se aplican automáticamente a futuras renovaciones de la misma suscripción y no son transferibles entre suscripciones.difference_immediately
- Actualización: cobra inmediatamente la diferencia de precio entre los planes antiguo y nuevo
- Downgrade: agrega el valor restante como crédito interno a la suscripción y se aplica automáticamente en las renovaciones
Escenarios de Ejemplo
Actualización: Básico ($30) → Pro ($80) con difference_immediately
Actualización: Básico ($30) → Pro ($80) con difference_immediately
Downgrade: Plus ($50) → Starter ($20) con difference_immediately
Downgrade: Plus ($50) → Starter ($20) con difference_immediately
Actualización a mitad de ciclo con prorated_immediately
Actualización a mitad de ciclo con prorated_immediately
Reiniciar facturación con full_immediately
Reiniciar facturación con full_immediately
Manejo de webhooks
Rastrea el estado de la suscripción a través de webhooks para confirmar cambios de plan y pagos.Tipos de eventos a manejar
subscription.active: suscripción activadasubscription.plan_changed: plan de suscripción cambiado (actualización/downgrade/cambios de addon)subscription.on_hold: cargo fallido, suscripción pausadasubscription.renewed: renovación exitosapayment.succeeded: pago por cambio de plan o renovación exitosopayment.failed: pago fallido
Verificar firmas y manejar intenciones
- Manejador de Rutas de Next.js
- Express.js
Mejores Prácticas
Sigue estas recomendaciones para cambios de plan de suscripción confiables:Estrategia de Cambio de Plan
- Prueba a fondo: Siempre prueba los cambios de plan en modo de prueba antes de producción
- Elige prorrata cuidadosamente: Selecciona el modo de prorrata que se alinee con tu modelo de negocio
- Maneja fallos de manera elegante: Implementa un manejo de errores adecuado y lógica de reintento
- Monitorea tasas de éxito: Rastrea las tasas de éxito/fallo de cambios de plan e investiga problemas
Implementación de Webhook
- Verifica firmas: Siempre valida las firmas de los webhooks para asegurar autenticidad
- Implementa idempotencia: Maneja eventos de webhook duplicados de manera elegante
- Procesa de manera asíncrona: No bloquees las respuestas de webhook con operaciones pesadas
- Registra todo: Mantén registros detallados para depuración y fines de auditoría
Experiencia del Usuario
- Comunica claramente: Informa a los clientes sobre cambios de facturación y tiempos
- Proporciona confirmaciones: Envía correos electrónicos de confirmación para cambios de plan exitosos
- Maneja casos extremos: Considera períodos de prueba, prorratas y pagos fallidos
- Actualiza la UI de inmediato: Refleja los cambios de plan en la interfaz de tu aplicación
Problemas Comunes y Soluciones
Resuelve problemas típicos encontrados durante cambios de plan de suscripción:Cargo creado pero suscripción no actualizada
Cargo creado pero suscripción no actualizada
- El procesamiento del webhook falló o se retrasó
- El estado de la aplicación no se actualizó después de recibir webhooks
- Problemas de transacción en la base de datos durante la actualización del estado
- Implementa un manejo robusto de webhooks con lógica de reintento
- Usa operaciones idempotentes para actualizaciones de estado
- Agrega monitoreo para detectar y alertar sobre eventos de webhook perdidos
- Verifica que el endpoint de webhook sea accesible y responda correctamente
Créditos no aplicados después de un downgrade
Créditos no aplicados después de un downgrade
- Expectativas del modo de prorrata: los downgrades acreditan la diferencia total del precio del plan con
difference_immediately, mientras queprorated_immediatelycrea un crédito prorrateado basado en el tiempo restante en el ciclo - Los créditos son específicos de la suscripción y no se transfieren entre suscripciones
- El saldo de crédito no es visible en el panel del cliente
- Usa
difference_immediatelypara downgrades cuando desees créditos automáticos - Explica a los clientes que los créditos se aplican a futuras renovaciones de la misma suscripción
- Implementa un portal para clientes para mostrar saldos de crédito
- Verifica la vista previa de la próxima factura para ver los créditos aplicados
La verificación de la firma del webhook falla
La verificación de la firma del webhook falla
- Clave secreta de webhook incorrecta
- Cuerpo de la solicitud en bruto modificado antes de la verificación de la firma
- Algoritmo de verificación de firma incorrecto
- Verifica que estés usando el correcto
DODO_WEBHOOK_SECRETdesde el panel de control - Lee el cuerpo de la solicitud en bruto antes de cualquier middleware de análisis JSON
- Usa la biblioteca estándar de verificación de webhook para tu plataforma
- Prueba la verificación de la firma del webhook en el entorno de desarrollo
El cambio de plan falla con error 422
El cambio de plan falla con error 422
- ID de suscripción o ID de producto inválidos
- Suscripción no en estado activo
- Parámetros requeridos faltantes
- Producto no disponible para cambios de plan
- Verifica que la suscripción exista y esté activa
- Verifica que el ID de producto sea válido y esté disponible
- Asegúrate de que se proporcionen todos los parámetros requeridos
- Revisa la documentación de la API para los requisitos de parámetros
El cargo inmediato falla durante el cambio de plan
El cargo inmediato falla durante el cambio de plan
- Fondos insuficientes en el método de pago del cliente
- Método de pago expirado o inválido
- El banco rechazó la transacción
- La detección de fraude bloqueó el cargo
- Maneja los eventos de webhook
payment.failedde manera apropiada - Notifica al cliente para que actualice su método de pago
- Implementa lógica de reintento para fallos temporales
- Considera permitir cambios de plan con cargos inmediatos fallidos
Suscripción en espera después del cambio de plan
Suscripción en espera después del cambio de plan
on_holdQué sucede:
Cuando un cargo por cambio de plan falla, la suscripción se coloca automáticamente en estado on_hold. La suscripción no se renovará automáticamente hasta que se actualice el método de pago.Solución: Actualiza el método de pago para reactivar la suscripciónPara reactivar una suscripción desde el estado on_hold después de un cambio de plan fallido:- Actualiza el método de pago usando la API de Actualización de Método de Pago
- Creación automática de cargo: La API crea automáticamente un cargo por los saldos pendientes
- Generación de factura: Se genera una factura para el cargo
- Procesamiento de pago: El pago se procesa utilizando el nuevo método de pago
- Reactivación: Tras el pago exitoso, la suscripción se reactiva al estado
active
subscription.on_hold: Suscripción colocada en espera (recibido cuando falla el cargo por cambio de plan)payment.succeeded: Pago por saldos pendientes exitoso (después de actualizar el método de pago)subscription.active: Suscripción reactivada después de un pago exitoso
- Notifica a los clientes de inmediato cuando falle un cargo por cambio de plan
- Proporciona instrucciones claras sobre cómo actualizar su método de pago
- Monitorea eventos de webhook para rastrear el estado de reactivación
- Considera implementar lógica de reintento automática para fallos temporales de pago
Referencia de API para Actualizar Método de Pago
Probando tu Implementación
Sigue estos pasos para probar a fondo tu implementación de cambio de plan de suscripción:Configurar entorno de prueba
- Usa claves de API de prueba y productos de prueba
- Crea suscripciones de prueba con diferentes tipos de plan
- Configura un endpoint de webhook de prueba
- Establece monitoreo y registro
Probar diferentes modos de prorrata
- Prueba
prorated_immediatelycon varias posiciones del ciclo de facturación - Prueba
difference_immediatelypara actualizaciones y downgrades - Prueba
full_immediatelypara reiniciar ciclos de facturación - Verifica que los cálculos de crédito sean correctos
Probar manejo de webhook
- Verifica que se reciban todos los eventos de webhook relevantes
- Prueba la verificación de la firma del webhook
- Maneja eventos de webhook duplicados de manera elegante
- Prueba escenarios de fallo en el procesamiento de webhooks
Probar escenarios de error
- Prueba con IDs de suscripción inválidos
- Prueba con métodos de pago expirados
- Prueba fallos de red y tiempos de espera
- Prueba con fondos insuficientes
Monitorear en producción
- Configura alertas para cambios de plan fallidos
- Monitorea los tiempos de procesamiento de webhooks
- Rastrea tasas de éxito de cambios de plan
- Revisa tickets de soporte al cliente para problemas de cambios de plan
Manejo de Errores
Maneja errores comunes de la API de manera elegante en tu implementación:Códigos de Estado HTTP
200 OK
200 OK
400 Bad Request
400 Bad Request
401 Unauthorized
401 Unauthorized
404 Not Found
404 Not Found
422 Unprocessable Entity
422 Unprocessable Entity
500 Internal Server Error
500 Internal Server Error
Formato de Respuesta de Error
Próximos pasos
- Revisa la API de Cambio de Plan
- Explora Créditos de Clientes
- Implementa alertas para
subscription.on_hold - Consulta nuestra Guía de Integración de Webhook