GitHub Repository
Código fuente completo y guía de configuración
Configuración Rápida
1. Requisitos previos
Necesitas:- Una cuenta de Supabase con un proyecto creado
- Una clave de API de Dodo Payments disponible en Developer → API Keys, en el dashboard
2. Autenticación y vinculación
3. Configuración de la base de datos
- Ve al dashboard de Supabase.
- Abre el SQL Editor.
- Copia todo el contenido de
schema.sqly ejecútalo.
4. Configuración de los secretos iniciales
Supabase proporciona automáticamenteSUPABASE_URL y SUPABASE_SERVICE_ROLE_KEY durante la ejecución.
Configurarás
DODO_PAYMENTS_WEBHOOK_KEY después del despliegue, una vez que tengas la URL de tu webhook.5. Despliegue
La función ya está configurada enfunctions/webhook/index.ts.
6. Obtén la URL de tu webhook
La URL de tu webhook es:7. Registra el webhook en el dashboard de Dodo Payments
- 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 signing secret.
8. Configura la clave del webhook y vuelve a desplegar
Qué hace
El handler del webhook procesa eventos de suscripción y los almacena en Supabase PostgreSQL:subscription.active— Crea o actualiza los registros del cliente y la suscripciónsubscription.cancelled— Marca la suscripción como canceladasubscription.renewed— Actualiza la próxima fecha de facturación
Funciones principales
- Verificación de firmas — Usa el SDK de Dodo Payments para verificar la autenticidad del webhook
- Idempotencia — Usa el header
webhook-idpara evitar el procesamiento duplicado - Registro de eventos — Almacena todos los eventos en la tabla
webhook_eventspara mantener un registro 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 conjunto 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 y próxima fecha de facturación, vinculados a los clienteswebhook_events— Registro de eventos con el ID del webhook para la idempotencia
Código de implementación
Cómo funciona
La Edge Function basada en Deno:- Verifica la firma — Usa el SDK de Dodo Payments para la verificación HMAC-SHA256
- Comprueba si hay duplicados — Usa el header
webhook-idpara evitar el procesamiento duplicado - Registra el evento — Almacena los datos sin procesar del webhook en la tabla
webhook_events - Procesa las actualizaciones — Crea o actualiza clientes y suscripciones mediante el cliente de Supabase
- Gestiona los errores — Registra los fallos y marca los eventos para reintento
Pruebas
Desarrollo local:La flag
--no-verify-jwt es obligatoria porque los webhooks no incluyen tokens JWT. La seguridad se proporciona mediante la verificación de la firma del webhook.- Ve a Developer → Webhooks.
- Añade un endpoint con tu URL de Supabase.
- Selecciona
subscription.active,subscription.cancelledysubscription.renewed.