đ§ 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éepayment_intent.succeeded- Paiement réussi
2. Nouveaux ĂvĂ©nements Stripe Connectâ
transfer.created- Transfer vers le vendeur crééapplication_fee.created- Votre commission reçueaccount.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.completedpayment_intent.succeededtransfer.createdapplication_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â
- Créer une commande de test
- Effectuer un paiement
- Vérifier les logs dans Supabase
- 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_idest 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â
- Tester un paiement complet
- Vérifier les logs
- Vérifier les données en base
- 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 ! đ