Saltar al contenido principal

GitHub Repository

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

Configuración Rápida

1. Requisitos Previos

2. Instalar Dependencias

3. Configuración de la Base de Datos

  1. Regístrate en Neon
  2. Crea un nuevo proyecto
  3. Abre el Editor SQL
  4. Copia y pega el contenido de schema.sql
  5. Ejecuta la consulta
  6. Obtén tu cadena de conexión desde Neon → Connection Details

4. Establecer Variables de Entorno Iniciales

A través de Vercel CLI:
Nota: Configuraremos DODO_PAYMENTS_WEBHOOK_KEY después del despliegue una vez que tengas tu URL de 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 DodoPayments Dashboard → Developer → Webhooks
  2. Crea un nuevo endpoint de webhook
  3. Configura tu URL de webhook como el endpoint
  4. Activa estos eventos de suscripción:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copia el Signing Secret

8. Establecer Clave de Webhook y Volver a Desplegar

Qué Hace

Procesa eventos de suscripción y los almacena en PostgreSQL:
  • subscription.active - Crea/actualiza registros de clientes y suscripciones
  • subscription.cancelled - Marca la suscripción como cancelada
  • subscription.renewed - Actualiza la fecha de facturación siguiente

Características Clave

Verificación de firma - Usando la biblioteca dodopayments
Idempotencia - Evita el procesamiento duplicado con los IDs de webhook
Registro de eventos - Auditoría completa en la tabla webhook_events
Manejo de errores - Registrado y susceptible de reintentos
Nota: Esta implementación demuestra el manejo de tres eventos principales de suscripción (subscription.active, subscription.cancelled, subscription.renewed) con campos mínimos. Puedes extenderla fácilmente para admitir tipos de eventos adicionales y campos según tus requisitos.

Archivos de Configuración

Esquema de Base de Datos

Tablas creadas:
  • customers - Correo electrónico, nombre, dodo_customer_id
  • subscriptions - Estado, monto, next_billing_date, vinculado a clientes
  • webhook_events - Registro de eventos con webhook_id para idempotencia

Código de Implementación

Cómo Funciona

El manejador de webhook:
  1. Desactiva el análisis del cuerpo - Para acceder al cuerpo bruto y verificar la firma
  2. Verifica la firma - Garantiza que la solicitud proviene de DodoPayments usando HMAC-SHA256
  3. Verifica duplicados - Usa el ID del webhook para evitar procesar el mismo evento dos veces
  4. Registra el evento - Almacena el webhook crudo en la tabla webhook_events para la auditoría
  5. Procesa el evento - Crea o actualiza clientes y suscripciones en Neon
  6. Maneja errores - Registra fallos y marca el evento como no procesado para reintentos

Pruebas

Desarrollo local:
Ver registros en el Tablero de Vercel:
  1. Selecciona tu proyecto
  2. Ve a Despliegues → último despliegue
  3. Haz clic en FuncionesRegistros
Configura en el Tablero de DodoPayments:
  1. Ve a Desarrolladores → Webhooks
  2. Agrega un endpoint con tu URL de Funciones de Vercel
  3. Habilita: subscription.active, subscription.cancelled, subscription.renewed

Problemas Comunes

Recursos

Última modificación el 22 de mayo de 2026