Passer au contenu principal

Introduction

Exécutez des workflows et des scripts personnalisés dans Moulin à vent lorsque des événements de paiement se produisent. Effectuez des opérations sur la base de données, envoyez des notifications, traitez des données et automatisez une logique commerciale complexe avec le puissant moteur de workflow de Moulin à vent.
Cette intégration nécessite votre URL webhook Windmill depuis la configuration de votre flux de travail.

Prise en main

1

Open the Webhook Section

Dans votre tableau de bord Dodo Payments, accédez à Webhooks → + Ajouter un point de terminaison et développez le menu déroulant des intégrations.
Ajouter un point de terminaison et menu déroulant des intégrations
2

Select Windmill

Choisissez la carte d’intégration Windmill.
3

Create Windmill Workflow

Dans Windmill, créez un nouveau flux de travail et copiez l’URL du webhook depuis la configuration du déclencheur.
4

Paste Webhook URL

Collez l’URL du webhook Windmill dans la configuration du point de terminaison.
5

Configure Transformation

Modifiez le code de transformation pour formater les événements pour votre flux de travail Windmill.
6

Test & Create

Testez avec des charges utiles d’exemple et cliquez sur Créer pour activer l’intégration.
7

Done!

🎉 Les événements de paiement déclencheront désormais automatiquement vos flux de travail Windmill.

Exemples de code de transformation

Charge utile de workflow de base

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;
}

Gestionnaire de workflow d’abonnement

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;
}

Gestionnaire de workflow de litige

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;
}

Cas d’utilisation courants de Moulin à vent

  • Mettre à jour les dossiers clients dans PostgreSQL/MySQL
  • Enregistrer les événements de paiement dans des entrepôts de données
  • Synchroniser les données avec des systèmes externes
  • Mettre à jour les niveaux de stock
  • Suivre les métriques analytiques
  • Calculer les métriques de revenu
  • Traiter les remboursements et ajustements
  • Gérer le cycle de vie des abonnements
  • Générer des rapports et des exports
  • Valider les données de paiement
  • Envoyer des données aux plateformes analytiques
  • Mettre à jour les systèmes CRM
  • Lancer des campagnes email
  • Créer des événements calendaires
  • Envoyer des notifications SMS

Conseils

  • Structurer les données de charge utile pour un traitement facile des workflows
  • Inclure toutes les métadonnées pertinentes pour la logique commerciale
  • Utiliser des noms de champs cohérents à travers les événements
  • Inclure des horodatages pour le timing des workflows
  • Tirer parti de la gestion des erreurs intégrée de Moulin à vent

Dépannage

  • Vérifier que l’URL du webhook est correcte et active
  • Vérifier que le flux de travail Windmill est publié et actif
  • S’assurer que la structure du payload correspond aux attentes du flux de travail
  • Examiner les journaux d’exécution Windmill pour détecter les erreurs
  • Vérifier la correspondance des paramètres d’entrée du flux de travail
  • Confirmer que les types de données correspondent aux formats attendus
  • Tester le flux de travail avec des données d’exemple
  • Examiner les journaux d’exécution des scripts Windmill