> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Envoyez des notifications de Dodo Payments aux canaux Microsoft Teams avec des cartes adaptatives riches.

## Introduction

Tenez votre équipe commerciale informée avec des notifications de paiement en temps réel dans Microsoft Teams. L'intégration fournit des événements de paiement sous forme de cartes adaptatives riches—parfait pour les environnements d'entreprise où Teams est l'outil de collaboration principal.

<Info>
  Ce guide suppose que vous disposez des droits d’administrateur pour créer des webhooks dans votre espace de travail Microsoft Teams.
</Info>

## Commencer

<Steps>
  <Step title="Open the Webhook Section">
    Dans votre tableau de bord Dodo Payments, allez à <b>Webhooks → + Ajouter un point de terminaison</b> et développez le menu déroulant des intégrations.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/slbAEdrLLwKHfaRf/images/integrations/teams.png?fit=max&auto=format&n=slbAEdrLLwKHfaRf&q=85&s=240820e1a3d3162b2faee6fa052535c6" alt="Ajouter un point de terminaison et menu déroulant des intégrations" style={{ maxHeight: '500px', width: 'auto' }} width="1694" height="936" data-path="images/integrations/teams.png" />
    </Frame>
  </Step>

  <Step title="Select Microsoft Teams">
    Choisissez la carte d’intégration <b>Microsoft Teams</b>.
  </Step>

  <Step title="Create Teams Webhook">
    Dans Teams, allez dans votre canal → ⋯ → Connecteurs → Webhook entrant → Configurer. Copiez l’URL du webhook.
  </Step>

  <Step title="Paste Webhook URL">
    Collez l’URL du webhook Teams dans la configuration du point de terminaison.
  </Step>

  <Step title="Customize Transformation">
    Modifiez le code de transformation pour formater les messages en cartes Adaptive Cards pour Teams.
  </Step>

  <Step title="Test & Create">
    Testez avec des charges d’exemple puis cliquez sur <b>Create</b> pour activer.
  </Step>

  <Step title="Done!">
    🎉 Votre canal Teams recevra désormais les mises à jour Dodo Payments sous forme de cartes Adaptive Cards.
  </Step>
</Steps>

## Exemples de code de transformation

### Carte de paiement de base

```javascript payment_card.js icon="js" expandable theme={null}
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;
}
```

### Gestion des abonnements

```javascript subscription_card.js icon="js" expandable theme={null}
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;
}
```

### Alertes de litige

```javascript dispute_card.js icon="js" expandable theme={null}
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;
}
```

## Conseils

* Utilisez des cartes adaptatives pour un formatage riche et interactif
* Choisissez des couleurs appropriées : Bon (vert), Avertissement (jaune), Attention (rouge)
* Gardez les ensembles de faits concis et lisibles
* Testez avec le testeur de webhook Teams avant de déployer

## Dépannage

<AccordionGroup>
  <Accordion title="No messages in Teams">
    * Vérifiez que l’URL du webhook est correcte et active
    * Assurez-vous que la transformation renvoie un JSON Adaptive Card valide
    * Vérifiez que le webhook dispose de l’autorisation de publier dans le canal
  </Accordion>

  <Accordion title="Card formatting issues">
    * Validez le schéma Adaptive Card dans l’outil de test du webhook Teams
    * Vérifiez que tous les champs requis sont présents
    * Assurez-vous que les valeurs de couleur sont valides (Good, Warning, Attention, Default)
  </Accordion>
</AccordionGroup>
