Skip to main content

GitHub Repository

Código fuente completo y guía de configuración

Configuración Rápida

1. Requisitos previos

Necesitas:

2. Instalar dependencias

3. Configuración de la base de datos

  1. Regístrate en Neon y crea un proyecto.
  2. Abre el SQL Editor.
  3. Copia todo el contenido de schema.sql y ejecútalo.
  4. 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

  1. Ve a Developer → Webhooks en el dashboard de Dodo Payments.
  2. Haz clic en Add endpoint.
  3. Introduce la URL de tu webhook.
  4. Selecciona estos eventos: subscription.active, subscription.cancelled, subscription.renewed.
  5. 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 suscripciones
  • subscription.cancelled — Marca la suscripción como cancelada
  • subscription.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-id para evitar el procesamiento duplicado
  • Registro de eventos — Almacena todos los eventos en la tabla webhook_events para 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

Tablas creadas:
  • customers — Email, nombre e ID de cliente de Dodo Payments
  • subscriptions — Estado, importe y próxima fecha de facturación, vinculados a los clientes
  • webhook_events — Registro de eventos con el ID del webhook para la idempotencia

Código de Implementación

Cómo Funciona

El webhook handler:
  1. Desactiva el análisis del body — Para acceder al body sin procesar y verificar la firma
  2. Verifica la firma — Usa el SDK de Dodo Payments para verificar la solicitud con HMAC-SHA256
  3. Comprueba si hay duplicados — Usa el header webhook-id para evitar procesar el mismo evento dos veces
  4. Registra el evento — Almacena el webhook sin procesar en la tabla webhook_events para mantener un registro de auditoría
  5. Procesa el evento — Crea o actualiza clientes y suscripciones en Neon
  6. Gestiona los errores — Registra los fallos y marca los eventos como no procesados para reintentar

Pruebas

Desarrollo local:
Ver registros en el dashboard de Vercel:
  1. Selecciona tu proyecto.
  2. Ve a Deployments → el despliegue más reciente.
  3. Haz clic en Functions → Logs.
Configurar en el dashboard de Dodo Payments:
  1. Ve a Developer → Webhooks.
  2. Añade un endpoint con la URL de Vercel Functions.
  3. Selecciona subscription.active, subscription.cancelled y subscription.renewed.

Problemas Comunes

Recursos

Última modificación el 26 de septiembre de 2026