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.
Ce guide suppose que vous avez un accès administrateur pour créer des webhooks dans votre espace de travail Microsoft Teams.
Commencer
Ouvrir la section Webhook
Dans votre tableau de bord Dodo Payments, accédez à Webhooks → + Ajouter un point de terminaison et développez le menu déroulant des intégrations.
Sélectionner Microsoft Teams
Choisissez la carte d’intégration Microsoft Teams .
Créer un Webhook Teams
Dans Teams, allez dans votre canal → ⋯ → Connecteurs → Webhook entrant → Configurer. Copiez l’URL du webhook.
Coller l'URL du Webhook
Collez l’URL du webhook Teams dans la configuration du point de terminaison.
Personnaliser la transformation
Modifiez le code de transformation pour formater les messages en tant que cartes adaptatives pour Teams.
Tester & Créer
Testez avec des charges utiles d’exemple et cliquez sur Créer pour activer.
Terminé !
🎉 Votre canal Teams recevra désormais des mises à jour de Dodo Payments sous forme de cartes adaptatives.
Carte de paiement de base
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 ;
}
See all 31 lines
Gestion des abonnements
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 ;
}
See all 61 lines
Alertes de litige
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 ;
}
See all 35 lines
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
Vérifiez que l’URL du webhook est correcte et active
Assurez-vous que la transformation renvoie un JSON de carte adaptative valide
Assurez-vous que le webhook a la permission de publier dans le canal
Problèmes de formatage de carte