Introduktion
Håll ditt team informerat där de redan samarbetar. Discord-integrationen levererar betalningar, prenumerationer, tvister och andra viktiga händelser direkt till valfri kanal du väljer—ingen polling eller instrumentpaneler krävs.
Denna guide förutsätter att du har tillgång till avsnittet Integreringar i Dodo Payments-instrumentpanelen.
Komma igång
Öppna Webhook-avsnittet
I din Dodo Payments-instrumentpanel, öppna Webhooks → + Lägg till slutpunkt och expandera rullgardinsmenyn för att avslöja integrationer.
Välj Discord
Välj Discord -kortet och klicka sedan på Anslut din Discord-arbetsyta .
Auktorisera Botten
Ge de begärda behörigheterna så att botten kan posta meddelanden i din valda kanal.
Redigera Transformationskod
Anpassa payload → embed-mappningen efter dina behov—eller börja med mallarna nedan.
Testa & Skapa
Använd exempelpayloads för att förhandsgranska embed, och tryck sedan på Skapa .
Klart!
🎉 Din Discord-kanal kommer nu att ta emot liveuppdateringar från Dodo Payments.
Minimal Betalnings-Embed
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 ;
}
See all 13 lines
Prenumerationshändelser
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 ;
}
See all 31 lines
Tvistvarningar
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 ;
}
See all 17 lines
Tips
Föredra embeds för rik formatering och färger.
Håll titlar korta; lägg detaljer i fälten.
Använd intuitiva färger: grön (framgång), röd (misslyckande), orange (varningar).
Felsökning
Inga meddelanden i Discord
Bekräfta att botten har åtkomst till kanalen.
Kontrollera att transformationen returnerar ett JSON-objekt med embeds.