Saltar al contenido principal

Introducción

Mantén a tu equipo empresarial informado con notificaciones de pago en tiempo real en Microsoft Teams. La integración entrega eventos de pago como tarjetas adaptativas ricas, perfectas para entornos empresariales donde Teams es la herramienta principal de colaboración.
Esta guía asume que tienes acceso de administrador para crear webhooks en tu espacio de trabajo de Microsoft Teams.

Comenzando

1

Abre la sección de Webhook

En tu panel de Dodo Payments, navega a Webhooks → + Agregar Endpoint y expande el menú desplegable de integraciones.
Agregar Endpoint y menú desplegable de integraciones
2

Selecciona Microsoft Teams

Elige la tarjeta de integración de Microsoft Teams.
3

Crear Webhook de Teams

En Teams, ve a tu canal → ⋯ → Conectores → Webhook entrante → Configurar. Copia la URL del webhook.
4

Pegar URL del Webhook

Pega la URL del webhook de Teams en la configuración del endpoint.
5

Personalizar Transformación

Edita el código de transformación para formatear los mensajes como tarjetas adaptativas para Teams.
6

Probar y Crear

Prueba con cargas útiles de ejemplo y haz clic en Crear para activar.
7

¡Listo!

🎉 Tu canal de Teams ahora recibirá actualizaciones de Dodo Payments como tarjetas adaptativas.

Ejemplos de Código de Transformación

Tarjeta de Pago Básica

payment_card.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      type: "message",
      attachments: [{
        contentType: "application/vnd.microsoft.card.adaptive",
        content: {
          type: "AdaptiveCard",
          body: [
            {
              type: "TextBlock",
              text: "✅ Payment Successful",
              weight: "Bolder",
              size: "Medium"
            },
            {
              type: "FactSet",
              facts: [
                { title: "Amount", value: `$${(p.total_amount / 100).toFixed(2)}` },
                { title: "Customer", value: p.customer.email },
                { title: "Payment ID", value: p.payment_id }
              ]
            }
          ]
        }
      }]
    };
  }
  return webhook;
}

Gestión de Suscripciones

subscription_card.js
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        type: "message",
        attachments: [{
          contentType: "application/vnd.microsoft.card.adaptive",
          content: {
            type: "AdaptiveCard",
            body: [
              {
                type: "TextBlock",
                text: "📄 Subscription Activated",
                weight: "Bolder",
                color: "Good"
              },
              {
                type: "FactSet",
                facts: [
                  { title: "Customer", value: s.customer.email },
                  { title: "Product", value: s.product_id },
                  { title: "Amount", value: `$${(s.recurring_pre_tax_amount / 100).toFixed(2)}/${s.payment_frequency_interval}` },
                  { title: "Next Billing", value: new Date(s.next_billing_date).toLocaleDateString() }
                ]
              }
            ]
          }
        }]
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        type: "message",
        attachments: [{
          contentType: "application/vnd.microsoft.card.adaptive",
          content: {
            type: "AdaptiveCard",
            body: [
              {
                type: "TextBlock",
                text: "⚠️ Subscription Cancelled",
                weight: "Bolder",
                color: "Warning"
              },
              {
                type: "FactSet",
                facts: [
                  { title: "Customer", value: s.customer.email },
                  { title: "Product", value: s.product_id },
                  { title: "Cancelled At", value: new Date(s.cancelled_at).toLocaleDateString() }
                ]
              }
            ]
          }
        }]
      };
      break;
  }
  return webhook;
}

Alertas de Disputa

dispute_card.js
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    const color = d.dispute_status === "won" ? "Good" : d.dispute_status === "lost" ? "Attention" : "Warning";
    const title = d.dispute_status === "won" ? "🏆 Dispute Won" : d.dispute_status === "lost" ? "❌ Dispute Lost" : "🚨 Dispute Update";
    
    webhook.payload = {
      type: "message",
      attachments: [{
        contentType: "application/vnd.microsoft.card.adaptive",
        content: {
          type: "AdaptiveCard",
          body: [
            {
              type: "TextBlock",
              text: title,
              weight: "Bolder",
              color: color
            },
            {
              type: "FactSet",
              facts: [
                { title: "Payment ID", value: d.payment_id },
                { title: "Amount", value: `$${(d.amount / 100).toFixed(2)}` },
                { title: "Status", value: d.dispute_status },
                { title: "Stage", value: d.dispute_stage }
              ]
            }
          ]
        }
      }]
    };
  }
  return webhook;
}

Consejos

  • Usa tarjetas adaptativas para un formato rico e interactivo
  • Elige colores apropiados: Bueno (verde), Advertencia (amarillo), Atención (rojo)
  • Mantén los conjuntos de hechos concisos y legibles
  • Prueba con el probador de webhook de Teams antes de implementar

Solución de Problemas

  • Verifica que la URL del webhook sea correcta y esté activa
  • Asegúrate de que la transformación devuelva un JSON de tarjeta adaptativa válido
  • Asegúrate de que el webhook tenga permiso para publicar en el canal
  • Valida el esquema de la tarjeta adaptativa en el probador de webhook de Teams
  • Verifica que todos los campos requeridos estén presentes
  • Asegúrate de que los valores de color sean válidos (Bueno, Advertencia, Atención, Predeterminado)