Vai al contenuto principale

Introduzione

Tieni il tuo team informato dove già collaborano. L’integrazione di Discord invia eventi di pagamento, abbonamento, controversia e altri eventi importanti direttamente a qualsiasi canale tu scelga—senza necessità di polling o dashboard.
Questa guida presuppone che tu abbia accesso alla sezione Integrazioni del dashboard di Dodo Payments.

Iniziare

1

Apri la Sezione Webhook

Nel tuo dashboard di Dodo Payments, apri Webhook → + Aggiungi Endpoint e espandi il menu a discesa per rivelare le integrazioni.
Aggiungi Endpoint e menu a discesa delle integrazioni
2

Seleziona Discord

Scegli la scheda Discord e poi clicca su Collega il tuo workspace Discord.
3

Autorizza il Bot

Concedi i permessi richiesti affinché il bot possa inviare messaggi nel tuo canale selezionato.
4

Modifica il Codice di Trasformazione

Adatta il mapping del payload → embed alle tue esigenze—oppure inizia con i modelli qui sotto.
5

Testa & Crea

Usa payload di esempio per visualizzare l’embed, poi clicca su Crea.
6

Fatto!

🎉 Il tuo canale Discord riceverà ora aggiornamenti live sui pagamenti Dodo.

Esempi di Codice di Trasformazione

Embed di Pagamento Minimo

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

Eventi di Abbonamento

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

Avvisi di Controversia

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

Suggerimenti

  • Preferisci gli embed per una formattazione ricca e colori.
  • Mantieni i titoli brevi; metti i dettagli nei campi.
  • Usa colori intuitivi: verde (successo), rosso (errore), arancione (avvisi).

Risoluzione dei Problemi

  • Conferma che il bot abbia accesso al canale.
  • Controlla che la trasformazione restituisca un oggetto JSON con embeds.
  • Valida il tuo codice nell’editor – errori di sintassi bloccheranno la consegna.
  • Assicurati che i nomi dei campi corrispondano alla struttura del payload del webhook.