GitHub Repository
Código fuente completo y guía de configuración
Configuración Rápida
1. Requisitos previos
Necesitas:- Una cuenta de Cloudflare
- Una cuenta de base de datos de Neon
- Una clave de API de Dodo Payments desde Developer → API Keys en el dashboard
2. Instalar dependencias
3. Configuración de la base de datos
- Regístrate en Neon y crea un proyecto.
- Abre el editor SQL.
- Copia todo el contenido de
schema.sqly ejecútalo. - Copia tu cadena de conexión desde Connection Details.
4. Configurar los secretos iniciales
Configurarás
DODO_PAYMENTS_WEBHOOK_KEY después del despliegue, cuando tengas la URL de tu webhook.5. Actualizar wrangler.toml
Editawrangler.toml y establece el nombre de tu worker:
6. Desplegar
7. Obtener la URL de tu webhook
La URL de tu webhook es:8. Registrar el webhook en el dashboard de DodoPayments
- Ve a Developer → Webhooks en el dashboard de Dodo Payments.
- Haz clic en Add endpoint.
- Introduce la URL de tu webhook.
- Selecciona estos eventos:
subscription.active,subscription.cancelled,subscription.renewed. - Haz clic en Create endpoint y copia el secreto de firma.
9. Establecer la clave del webhook y volver a desplegar
Qué hace
El controlador del webhook procesa los eventos de suscripción y los almacena en PostgreSQL:subscription.active— Crea o actualiza los registros de clientes y suscripcionessubscription.cancelled— Marca la suscripción como canceladasubscription.renewed— Actualiza la próxima fecha de facturación
Funciones principales
- Verificación de firma — Utiliza el SDK de Dodo Payments para verificar la autenticidad del webhook
- Idempotencia — Utiliza el encabezado
webhook-idpara evitar el procesamiento duplicado - Registro de eventos — Almacena todos los eventos en la tabla
webhook_eventspara fines de auditoría - Gestión de errores — Registra los fallos y marca los eventos para reintento
Este ejemplo gestiona tres eventos principales de suscripción con un número mínimo de campos. Puedes ampliarlo para admitir tipos de eventos y campos adicionales según tus necesidades.
Archivos de configuración
Esquema de la base de datos
customers— Correo electrónico, nombre e ID de cliente de Dodo Paymentssubscriptions— Estado, importe, próxima fecha de facturación y relación con los clienteswebhook_events— Registro de eventos con el ID del webhook para la idempotencia
Código de implementación
Cómo funciona
El controlador del webhook:- Verifica la firma — Utiliza el SDK de Dodo Payments para verificar la solicitud con HMAC-SHA256
- Comprueba si hay duplicados — Utiliza el encabezado
webhook-idpara evitar procesar el mismo evento dos veces - Registra el evento — Almacena el webhook sin procesar en la tabla
webhook_eventspara fines de auditoría - Procesa el evento — Crea o actualiza clientes y suscripciones en la base de datos
- Gestiona los errores — Registra los fallos y marca los eventos como no procesados para reintentar
Pruebas
Desarrollo local:- Ve a Developer → Webhooks.
- Añade un endpoint con la URL de tu Worker.
- Selecciona
subscription.active,subscription.cancelledysubscription.renewed.