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 l’URL de votre webhook Moulin à vent provenant de la configuration de votre workflow.

Prise en main

1

Ouvrir la section Webhook

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

Sélectionner Moulin à vent

Choisissez la carte d’intégration Moulin à vent.
3

Créer un workflow Moulin à vent

Dans Moulin à vent, créez un nouveau workflow et copiez l’URL du webhook à partir de la configuration du déclencheur.
4

Coller l'URL du Webhook

Collez l’URL du webhook Moulin à vent dans la configuration du point de terminaison.
5

Configurer la transformation

Modifiez le code de transformation pour formater les événements pour votre workflow Moulin à vent.
6

Tester et créer

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

Terminé !

🎉 Les événements de paiement déclencheront désormais automatiquement vos workflows Moulin à vent.

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 enregistrements 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 revenus
  • 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 vers des plateformes analytiques
  • Mettre à jour les systèmes CRM
  • Déclencher des campagnes par e-mail
  • Créer des événements de calendrier
  • 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érifiez que l’URL du webhook est correcte et active
  • Assurez-vous que le workflow Moulin à vent est publié et actif
  • Vérifiez que la structure de la charge utile correspond aux attentes du workflow
  • Consultez les journaux d’exécution de Moulin à vent pour des erreurs
  • Vérifiez le mappage des paramètres d’entrée du workflow
  • Vérifiez que les types de données correspondent aux formats attendus
  • Testez le workflow avec des données d’exemple
  • Consultez les journaux d’exécution des scripts de Moulin à vent