Zum Hauptinhalt springen

Einführung

Halten Sie Ihr Team informiert, wo es bereits zusammenarbeitet. Die Discord-Integration liefert Zahlungs-, Abonnement-, Streit- und andere wichtige Ereignisse direkt an jeden von Ihnen gewählten Kanal – kein Polling oder Dashboards erforderlich.
Dieser Leitfaden setzt voraus, dass Sie Zugriff auf den Integrationsbereich des Dodo Payments Dashboards haben.

Erste Schritte

1

Webhook-Bereich öffnen

Öffnen Sie in Ihrem Dodo Payments Dashboard Webhooks → + Endpunkt hinzufügen und erweitern Sie das Dropdown-Menü, um die Integrationen anzuzeigen.
Endpunkt hinzufügen und Integrationen Dropdown
2

Discord auswählen

Wählen Sie die Discord-Karte aus und klicken Sie auf Verbinden Sie Ihren Discord-Arbeitsbereich.
3

Bot autorisieren

Gewähren Sie die angeforderten Berechtigungen, damit der Bot Nachrichten in Ihrem ausgewählten Kanal posten kann.
4

Transformation Code bearbeiten

Passen Sie die Payload → Embed-Zuordnung an Ihre Bedürfnisse an – oder beginnen Sie mit den Vorlagen unten.
5

Testen & Erstellen

Verwenden Sie Beispiel-Payloads, um das Embed in der Vorschau anzuzeigen, und klicken Sie dann auf Erstellen.
6

Fertig!

🎉 Ihr Discord-Kanal erhält jetzt Live-Updates von Dodo Payments.

Beispiele für Transformation Codes

Minimales Zahlungs-Embed

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

Abonnementereignisse

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

Streitbenachrichtigungen

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

Tipps

  • Bevorzugen Sie Embeds für reichhaltige Formatierung und Farben.
  • Halten Sie Titel kurz; Details in Felder einfügen.
  • Verwenden Sie intuitive Farben: grün (Erfolg), rot (Fehler), orange (Warnungen).

Fehlersuche

  • Bestätigen Sie, dass der Bot Zugriff auf den Kanal hat.
  • Überprüfen Sie, ob die Transformation ein JSON-Objekt mit embeds zurückgibt.
  • Validieren Sie Ihren Code im Editor – Syntaxfehler blockieren die Zustellung.
  • Stellen Sie sicher, dass die Feldnamen mit der Struktur der Webhook-Payload übereinstimmen.