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 disposez des droits d’administrateur pour créer des webhooks dans votre espace de travail Microsoft Teams.
Commencer
Open the Webhook Section
Dans votre tableau de bord Dodo Payments, accédez à Webhooks → + Add Endpoint et développez le menu déroulant des intégrations.
Select Microsoft Teams
Choisissez la carte d’intégration Microsoft Teams .
Create Teams Webhook
Dans Teams, allez dans votre canal → ⋯ → Connecteurs → Webhook entrant → Configurer. Copiez l’URL du webhook.
Paste Webhook URL
Collez l’URL du webhook Teams dans la configuration du point de terminaison.
Customize Transformation
Modifiez le code de transformation pour formater les messages en cartes Adaptive Cards pour Teams.
Test & Create
Testez avec des charges d’exemple puis cliquez sur Create pour activer.
Done!
🎉 Votre canal Teams recevra désormais les mises à jour Dodo Payments sous forme de cartes Adaptive Cards.
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 Adaptive Card valide
Vérifiez que le webhook dispose de l’autorisation de publier dans le canal