Langsung ke konten utama

Pendahuluan

Jaga tim Anda tetap terinformasi di tempat mereka sudah berkolaborasi. Integrasi Discord mengirimkan pembayaran, langganan, sengketa, dan peristiwa penting lainnya langsung ke saluran yang Anda pilih—tanpa perlu polling atau dasbor.
Panduan ini mengasumsikan Anda memiliki akses ke bagian Integrasi di dasbor Dodo Payments.

Memulai

1

Open the Webhook Section

Di dasbor Dodo Payments Anda, buka Webhooks → + Tambah Endpoint dan perluas menu dropdown untuk menampilkan integrasi.
Tambah Endpoint dan menu dropdown integrasi
2

Select Discord

Pilih kartu Discord lalu klik Sambungkan workspace Discord Anda.
3

Authorize the Bot

Berikan izin yang diminta agar bot dapat mengirim pesan di saluran yang Anda pilih.
4

Edit Transformation Code

Sesuaikan pemetaan payload → embed sesuai kebutuhan Anda—atau mulai dengan template di bawah ini.
5

Test & Create

Gunakan payload contoh untuk melihat pratinjau embed, lalu klik Buat.
6

Done!

🎉 Saluran Discord Anda sekarang akan menerima pembaruan langsung dari Dodo Payments.

Contoh Kode Transformasi

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

Peristiwa Langganan

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

Peringatan Sengketa

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

Tips

  • Utamakan embed untuk format dan warna yang kaya.
  • Jaga judul tetap singkat; masukkan detail di bidang.
  • Gunakan warna intuitif: hijau (sukses), merah (gagal), oranye (peringatan).

Pemecahan Masalah

  • Pastikan bot memiliki akses ke saluran tersebut.
  • Periksa bahwa transformasi mengembalikan objek JSON dengan embeds.
  • Validasi kode Anda di editor – kesalahan sintaks akan menghalangi pengiriman.
  • Pastikan nama bidang sesuai dengan struktur payload webhook.