Saltar al contenido principal

Introducción

Ejecuta flujos de trabajo y scripts personalizados en Windmill cuando ocurren eventos de pago. Realiza operaciones en la base de datos, envía notificaciones, procesa datos y automatiza lógica empresarial compleja con el potente motor de flujos de trabajo de Windmill.
Esta integración requiere tu URL de webhook de Windmill de la configuración de tu flujo de trabajo.

Comenzando

1

Abre la sección de Webhook

En tu panel de Dodo Payments, navega a Webhooks → + Agregar Endpoint y expande el menú desplegable de integraciones.
Agregar Endpoint y menú desplegable de integraciones
2

Selecciona Windmill

Elige la tarjeta de integración Windmill.
3

Crea un flujo de trabajo en Windmill

En Windmill, crea un nuevo flujo de trabajo y copia la URL del webhook de la configuración del disparador.
4

Pega la URL del Webhook

Pega la URL del webhook de Windmill en la configuración del endpoint.
5

Configura la Transformación

Edita el código de transformación para formatear eventos para tu flujo de trabajo de Windmill.
6

Prueba y Crea

Prueba con cargas útiles de ejemplo y haz clic en Crear para activar la integración.
7

¡Listo!

🎉 Los eventos de pago ahora activarán automáticamente tus flujos de trabajo de Windmill.

Ejemplos de Código de Transformación

Carga Útil de Flujo de Trabajo Básico

basic_workflow.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      event_type: webhook.eventType,
      payment_id: p.payment_id,
      amount: (p.total_amount / 100).toFixed(2),
      currency: p.currency || "USD",
      customer_email: p.customer.email,
      customer_name: p.customer.name,
      payment_method: p.payment_method || "unknown",
      timestamp: webhook.payload.timestamp,
      metadata: {
        business_id: p.business_id,
        product_id: p.product_id
      }
    };
  }
  return webhook;
}

Manejador de Flujo de Trabajo de Suscripción

subscription_workflow.js
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        event_type: "subscription_started",
        subscription_id: s.subscription_id,
        customer_email: s.customer.email,
        customer_name: s.customer.name,
        product_id: s.product_id,
        amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
        frequency: s.payment_frequency_interval,
        next_billing: s.next_billing_date,
        customer_id: s.customer.customer_id,
        timestamp: webhook.payload.timestamp
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        event_type: "subscription_cancelled",
        subscription_id: s.subscription_id,
        customer_email: s.customer.email,
        cancelled_at: s.cancelled_at,
        cancel_at_next_billing: s.cancel_at_next_billing_date,
        customer_id: s.customer.customer_id,
        timestamp: webhook.payload.timestamp
      };
      break;
  }
  return webhook;
}

Manejador de Flujo de Trabajo de Disputa

dispute_workflow.js
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    webhook.payload = {
      event_type: webhook.eventType,
      dispute_id: d.dispute_id,
      payment_id: d.payment_id,
      amount: (d.amount / 100).toFixed(2),
      status: d.dispute_status,
      stage: d.dispute_stage,
      remarks: d.remarks || "",
      urgent: webhook.eventType === "dispute.opened",
      business_id: d.business_id,
      timestamp: webhook.payload.timestamp
    };
  }
  return webhook;
}

Casos de Uso Comunes de Windmill

  • Actualiza registros de clientes en PostgreSQL/MySQL
  • Registra eventos de pago en almacenes de datos
  • Sincroniza datos con sistemas externos
  • Actualiza niveles de inventario
  • Rastrea métricas analíticas
  • Calcula métricas de ingresos
  • Procesa reembolsos y ajustes
  • Maneja el ciclo de vida de suscripciones
  • Genera informes y exportaciones
  • Valida datos de pago
  • Envía datos a plataformas de análisis
  • Actualiza sistemas CRM
  • Activa campañas de correo electrónico
  • Crea eventos de calendario
  • Envía notificaciones por SMS

Consejos

  • Estructura los datos de carga útil para un fácil procesamiento del flujo de trabajo
  • Incluye todos los metadatos relevantes para la lógica empresarial
  • Usa nombres de campo consistentes en todos los eventos
  • Incluye marcas de tiempo para la sincronización del flujo de trabajo
  • Aprovecha el manejo de errores incorporado de Windmill

Solución de Problemas

  • Verifica que la URL del webhook sea correcta y esté activa
  • Asegúrate de que el flujo de trabajo de Windmill esté publicado y activo
  • Asegúrate de que la estructura de la carga útil coincida con las expectativas del flujo de trabajo
  • Revisa los registros de ejecución de Windmill en busca de errores
  • Verifica el mapeo de parámetros de entrada del flujo de trabajo
  • Asegúrate de que los tipos de datos coincidan con los formatos esperados
  • Prueba el flujo de trabajo con datos de ejemplo
  • Revisa los registros de ejecución de scripts de Windmill