Aller au contenu principal

🔧 Guide Webhook Stripe Connect

🎯 Pourquoi Modifier le Webhook ?​

Avec Stripe Connect, votre webhook doit gérer des événements supplémentaires pour traquer correctement :

  • ✅ Les commissions reçues (application_fee)
  • ✅ Les transferts vers les vendeurs (transfer)
  • ✅ Les mĂ©tadonnĂ©es Stripe Connect

📋 ÉvĂ©nements Stripe Connect Ă  Surveiller​

1. ÉvĂ©nements Existants (Ă  Conserver)​

  • checkout.session.completed - Session de paiement terminĂ©e
  • payment_intent.succeeded - Paiement rĂ©ussi

2. Nouveaux ÉvĂ©nements Stripe Connect​

  • transfer.created - Transfer vers le vendeur créé
  • application_fee.created - Votre commission reçue
  • account.updated - Compte vendeur mis Ă  jour

🔄 Migration du Webhook​

Option 1 : Remplacer le Webhook Existant​

# Supprimer l'ancien webhook
supabase functions delete stripe-webhook

# Déployer le nouveau webhook Stripe Connect
supabase functions deploy stripe-webhook-connect

Option 2 : Mettre à Jour l'Existant​

Remplacer le contenu de supabase/functions/stripe-webhook/index.ts par le nouveau code.

📊 Nouvelles DonnĂ©es Ă  Traquer​

1. Dans la Table commandes​

-- Ajouter ces colonnes si elles n'existent pas
ALTER TABLE commandes ADD COLUMN stripe_session_id TEXT;
ALTER TABLE commandes ADD COLUMN stripe_payment_intent_id TEXT;
ALTER TABLE commandes ADD COLUMN stripe_connect_destination TEXT;
ALTER TABLE commandes ADD COLUMN application_fee_amount INTEGER;
ALTER TABLE commandes ADD COLUMN commission_received DECIMAL(10,2);

2. Nouvelle Table commissions (Optionnelle)​

CREATE TABLE commissions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
commande_id UUID REFERENCES commandes(id),
application_fee_id TEXT,
amount DECIMAL(10,2),
currency TEXT DEFAULT 'EUR',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
status TEXT DEFAULT 'pending'
);

3. Nouvelle Table transfers (Optionnelle)​

CREATE TABLE transfers (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
commande_id UUID REFERENCES commandes(id),
transfer_id TEXT,
destination_account TEXT,
amount DECIMAL(10,2),
currency TEXT DEFAULT 'EUR',
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
status TEXT DEFAULT 'pending'
);

🔧 Configuration Stripe Dashboard​

1. Webhook Endpoints​

  • URL : https://votre-projet.supabase.co/functions/v1/stripe-webhook-connect
  • ÉvĂ©nements :
    • checkout.session.completed
    • payment_intent.succeeded
    • transfer.created
    • application_fee.created

2. VĂ©rification des ÉvĂ©nements​

Dans le dashboard Stripe, vérifiez que tous les événements sont bien reçus.

đŸ§Ș Test du Webhook​

1. Test avec Stripe CLI​

# Écouter les Ă©vĂ©nements en local
stripe listen --forward-to localhost:54321/functions/v1/stripe-webhook-connect

# Déclencher un événement de test
stripe trigger checkout.session.completed

2. Test en Production​

  1. Créer une commande de test
  2. Effectuer un paiement
  3. Vérifier les logs dans Supabase
  4. Vérifier les données en base

📈 Monitoring et Logs​

1. Logs à Surveiller​

// Dans les logs Supabase, chercher :
console.log('Processing checkout.session.completed:', session.id);
console.log('Stripe Connect payment detected');
console.log('Application fee amount:', paymentIntent.application_fee_amount);
console.log('Transfer amount:', transfer.amount);

2. MĂ©triques Importantes​

  • Nombre de paiements Stripe Connect
  • Montant des commissions reçues
  • Nombre de transferts vers les vendeurs
  • Taux d'erreur des webhooks

⚠ Points d'Attention​

1. Gestion des Erreurs​

  • VĂ©rifier que tous les Ă©vĂ©nements sont traitĂ©s
  • GĂ©rer les cas oĂč commande_id est manquant
  • Surveiller les Ă©checs de mise Ă  jour en base

2. SĂ©curité​

  • VĂ©rifier la signature Stripe (dĂ©jĂ  implĂ©mentĂ©)
  • Valider les donnĂ©es reçues
  • Limiter les tentatives de retry

3. Performance​

  • Traiter les Ă©vĂ©nements rapidement
  • Éviter les timeouts
  • GĂ©rer la charge en cas de pic

🚀 DĂ©ploiement​

1. DĂ©ploiement du Nouveau Webhook​

# Déployer la nouvelle fonction
supabase functions deploy stripe-webhook-connect

# Mettre Ă  jour l'URL dans Stripe Dashboard
# https://votre-projet.supabase.co/functions/v1/stripe-webhook-connect

2. Migration des DonnĂ©es​

-- Mettre à jour les commandes existantes si nécessaire
UPDATE commandes
SET payment_type = 'card'
WHERE payment_type IS NULL;

3. VĂ©rification Post-DĂ©ploiement​

  1. Tester un paiement complet
  2. Vérifier les logs
  3. Vérifier les données en base
  4. Surveiller pendant 24h

📋 Checklist de Migration​

  • Nouveau webhook dĂ©ployĂ©
  • ÉvĂ©nements configurĂ©s dans Stripe Dashboard
  • Colonnes ajoutĂ©es en base (si nĂ©cessaire)
  • Test en local rĂ©ussi
  • Test en production rĂ©ussi
  • Monitoring configurĂ©
  • Documentation mise Ă  jour

🎉 RĂ©sultat Final​

Avec ce webhook mis Ă  jour, vous pourrez :

  • ✅ Traquer toutes les commissions reçues
  • ✅ Surveiller les transferts vers les vendeurs
  • ✅ Avoir une visibilitĂ© complĂšte sur Stripe Connect
  • ✅ DĂ©tecter les problĂšmes rapidement
  • ✅ Optimiser votre systĂšme de paiement

Votre webhook est maintenant prĂȘt pour Stripe Connect ! 🚀