Saltar al contenido principal

Introducción

Mantén a tu equipo informado donde ya colaboran. La integración de Discord entrega eventos de pago, suscripción, disputa y otros eventos importantes directamente a cualquier canal que elijas—sin necesidad de sondeos o paneles de control.
Esta guía asume que tienes acceso a la sección de Integraciones del panel de Dodo Payments.

Comenzando

1

Abre la sección de Webhook

En tu panel de Dodo Payments, abre Webhooks → + Agregar Endpoint y expande el menú desplegable para revelar las integraciones.
Agregar Endpoint y menú desplegable de integraciones
2

Selecciona Discord

Elige la tarjeta Discord y luego haz clic en Conectar tu espacio de trabajo de Discord.
3

Autoriza el Bot

Concede los permisos solicitados para que el bot pueda publicar mensajes en tu canal seleccionado.
4

Edita el Código de Transformación

Adapta el mapeo de carga útil → incrustación a tus necesidades—o comienza con las plantillas a continuación.
5

Prueba y Crea

Usa cargas útiles de muestra para previsualizar la incrustación, luego haz clic en Crear.
6

¡Listo!

🎉 Tu canal de Discord ahora recibirá actualizaciones en vivo de Dodo Payments.

Ejemplos de Código de Transformación

Incrustación de Pago Mínima

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

Eventos de Suscripción

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

Alertas de Disputa

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

Consejos

  • Prefiere incrustaciones para un formato rico y colores.
  • Mantén los títulos cortos; coloca los detalles en los campos.
  • Usa colores intuitivos: verde (éxito), rojo (fallo), naranja (advertencias).

Solución de Problemas

  • Confirma que el bot tiene acceso al canal.
  • Verifica que la transformación devuelva un objeto JSON con embeds.
  • Valida tu código en el editor – los errores de sintaxis bloquearán la entrega.
  • Asegúrate de que los nombres de los campos coincidan con la estructura de carga útil del webhook.