GitHub Repository
Código fuente completo y guía de configuración
Configuración Rápida
1. Requisitos previos
Necesitas:- Una cuenta de Vercel
- Una cuenta de base de datos de Neon
- Una clave de API de Dodo Payments en Developer → API Keys, dentro del dashboard
2. Instalar dependencias
3. Configuración de la base de datos
- Regístrate en Neon y crea un proyecto.
- Abre el SQL Editor.
- Copia todo el contenido de
schema.sqly ejecútalo. - Copia tu cadena de conexión desde Connection Details.
4. Configurar las variables de entorno iniciales
Configurarás
DODO_PAYMENTS_WEBHOOK_KEY después del despliegue, una vez que tengas la URL de tu webhook.5. Desplegar
6. Obtén Tu URL de Webhook
Tu URL de webhook es:7. Registrar Webhook en el Tablero 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 signing secret.
8. Establecer Clave de Webhook y Volver a Desplegar
Qué Hace
El webhook handler procesa 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
Características Clave
- 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 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 Base de Datos
customers— Email, 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
El webhook handler:- Desactiva el análisis del body — Para acceder al body sin procesar y verificar la firma
- Verifica la firma — Usa el SDK de Dodo Payments para verificar la solicitud con HMAC-SHA256
- Comprueba si hay duplicados — Usa el header
webhook-idpara evitar procesar el mismo evento dos veces - Registra el evento — Almacena el webhook sin procesar en la tabla
webhook_eventspara mantener un registro de auditoría - Procesa el evento — Crea o actualiza clientes y suscripciones en Neon
- Gestiona los errores — Registra los fallos y marca los eventos como no procesados para reintentar
Pruebas
Desarrollo local:- Selecciona tu proyecto.
- Ve a Deployments → el despliegue más reciente.
- Haz clic en Functions → Logs.
- Ve a Developer → Webhooks.
- Añade un endpoint con la URL de Vercel Functions.
- Selecciona
subscription.active,subscription.cancelledysubscription.renewed.