Vai al contenuto principale

Introduzione

Tieni il tuo team aziendale aggiornato con notifiche di pagamento in tempo reale in Microsoft Teams. L’integrazione fornisce eventi di pagamento come schede Adaptive ricche, perfette per ambienti aziendali in cui Teams è lo strumento principale di collaborazione.
Questa guida presuppone che tu abbia accesso da amministratore per creare webhook nel tuo spazio di lavoro di Microsoft Teams.

Iniziare

1

Apri la sezione Webhook

Nel tuo dashboard di Dodo Payments, vai a Webhook → + Aggiungi Endpoint ed espandi il menu a discesa delle integrazioni.
Aggiungi Endpoint e menu a discesa delle integrazioni
2

Seleziona Microsoft Teams

Scegli la scheda di integrazione Microsoft Teams.
3

Crea Webhook Teams

In Teams, vai al tuo canale → ⋯ → Connettori → Incoming Webhook → Configura. Copia l’URL del webhook.
4

Incolla l'URL del Webhook

Incolla l’URL del webhook di Teams nella configurazione dell’endpoint.
5

Personalizza la Trasformazione

Modifica il codice di trasformazione per formattare i messaggi come schede Adaptive per Teams.
6

Testa e Crea

Testa con payload di esempio e clicca su Crea per attivare.
7

Fatto!

🎉 Il tuo canale Teams riceverà ora aggiornamenti di Dodo Payments come schede Adaptive.

Esempi di Codice di Trasformazione

Scheda di Pagamento di Base

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

Gestione degli Abbonamenti

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

Avvisi di Controversia

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

Suggerimenti

  • Usa schede Adaptive per una formattazione ricca e interattiva
  • Scegli colori appropriati: Buono (verde), Avviso (giallo), Attenzione (rosso)
  • Mantieni i set di fatti concisi e leggibili
  • Testa con il tester del webhook di Teams prima di distribuire

Risoluzione dei Problemi

  • Verifica che l’URL del webhook sia corretto e attivo
  • Controlla che la trasformazione restituisca un JSON di scheda Adaptive valido
  • Assicurati che il webhook abbia il permesso di postare nel canale
  • Valida lo schema della scheda Adaptive nel tester del webhook di Teams
  • Controlla che tutti i campi richiesti siano presenti
  • Assicurati che i valori dei colori siano validi (Buono, Avviso, Attenzione, Predefinito)