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 de Neon → Detalles de conexión

4. Configurar Secretos Iniciales

Nota: Estableceremos DODO_PAYMENTS_WEBHOOK_KEY después del despliegue una vez que tengas tu URL de webhook.

5. Actualizar wrangler.toml

Edita wrangler.toml y establece el nombre de tu worker:

6. Desplegar

7. Obtén tu URL de Webhook

Tu URL de webhook es:

8. 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 endpoint
  4. Habilita estos eventos de suscripción:
    • subscription.active
    • subscription.cancelled
    • subscription.renewed
  5. Copia el Secreto de firma

9. Establecer Clave de Webhook y Redeploy

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 próximo pago

Características Clave

Verificación de firma - Usando la biblioteca dodopayments
Idempotencia - Evita el procesamiento duplicado con los IDs de webhook
Registro de eventos - Registro completo en la tabla webhook_events
Manejo de errores - Registrados y reintentables
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 ampliarla fácilmente para admitir tipos de eventos adicionales y campos basados en tus requerimientos.

Archivos de Configuración

Esquema de Base de Datos

Tablas creadas:
  • customers - Email, 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 controlador de webhook:
  1. Verifica la firma - Asegura que la solicitud proviene de DodoPayments usando HMAC-SHA256
  2. Comprueba duplicados - Usa el ID del webhook para evitar procesar el mismo evento dos veces
  3. Registra el evento - Almacena el webhook crudo en la tabla webhook_events para el historial de auditoría
  4. Procesa el evento - Crea o actualiza clientes y suscripciones
  5. Maneja errores - Registra fallos y marca el evento como no procesado para reintentos

Pruebas

Desarrollo local:
Configurar en el Tablero de DodoPayments:
  1. Ve a Developers → Webhooks
  2. Agrega un endpoint con tu URL de Worker
  3. Habilita: subscription.active, subscription.cancelled, subscription.renewed

Problemas Comunes

Recursos

Última modificación el 22 de mayo de 2026