Passer au contenu principal

Introduction

Tenez votre équipe informée là où elle collabore déjà. L’intégration Discord livre des événements de paiement, d’abonnement, de litige et d’autres événements importants directement dans n’importe quel canal de votre choix—sans besoin de polling ou de tableaux de bord.
Ce guide suppose que vous avez accès à la section Intégrations du tableau de bord Dodo Payments.

Commencer

1

Ouvrir la section Webhook

Dans votre tableau de bord Dodo Payments, ouvrez Webhooks → + Ajouter un point de terminaison et développez le menu déroulant pour révéler les intégrations.
Ajouter un point de terminaison et menu déroulant des intégrations
2

Sélectionner Discord

Choisissez la carte Discord puis cliquez sur Connecter votre espace de travail Discord.
3

Autoriser le Bot

Accordez les permissions demandées afin que le bot puisse publier des messages dans votre canal sélectionné.
4

Modifier le code de transformation

Adaptez le mappage de la charge utile → embed à vos besoins—ou commencez avec les modèles ci-dessous.
5

Tester & Créer

Utilisez des charges utiles d’exemple pour prévisualiser l’embed, puis cliquez sur Créer.
6

Terminé !

🎉 Votre canal Discord recevra désormais des mises à jour en direct de Dodo Payments.

Exemples de code de transformation

Embed de paiement minimal

payment_embed.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      embeds: [{
        title: "✅ Payment Successful",
        description: `**Amount:** $${(p.total_amount / 100).toFixed(2)}\n**Customer:** ${p.customer.email}`,
        color: 0x2ecc71 // green
      }]
    };
  }
  return webhook;
}

Événements d’abonnement

subscription_embed.js
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        embeds: [{
          title: "📄 Subscription Activated",
          fields: [
            { name: "Customer", value: s.customer.email, inline: true },
            { name: "Product", value: s.product_id, inline: true },
            { name: "Next Billing", value: new Date(s.next_billing_date).toLocaleDateString(), inline: true }
          ],
          color: 0x2ecc71
        }]
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        embeds: [{
          title: "⚠️ Subscription Cancelled",
          fields: [
            { name: "Customer", value: s.customer.email, inline: true },
            { name: "Product", value: s.product_id, inline: true }
          ],
          color: 0xf1c40f
        }]
      };
      break;
  }
  return webhook;
}

Alertes de litige

dispute_embed.js
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    webhook.payload = {
      embeds: [{
        title: d.dispute_status === "won" ? "🏆 Dispute Won" : d.dispute_status === "lost" ? "❌ Dispute Lost" : "🚨 Dispute Update",
        fields: [
          { name: "Payment ID", value: d.payment_id, inline: true },
          { name: "Amount", value: `$${(d.amount / 100).toFixed(2)}`, inline: true },
          { name: "Status", value: d.dispute_status, inline: true }
        ],
        color: d.dispute_status === "won" ? 0x2ecc71 : d.dispute_status === "lost" ? 0xe74c3c : 0xe67e22
      }]
    };
  }
  return webhook;
}

Conseils

  • Préférez les embeds pour un formatage riche et des couleurs.
  • Gardez les titres courts ; mettez les détails dans les champs.
  • Utilisez des couleurs intuitives : vert (succès), rouge (échec), orange (avertissements).

Dépannage

  • Confirmez que le bot a accès au canal.
  • Vérifiez que la transformation renvoie un objet JSON avec embeds.
  • Validez votre code dans l’éditeur – les erreurs de syntaxe bloqueront la livraison.
  • Assurez-vous que les noms de champs correspondent à la structure de la charge utile du webhook.