🔧 Résolution Webhook Paiement
🚨 Problème Identifié
Vous recevez transfer.created mais pas checkout.session.completed, donc les commandes ne se mettent pas à jour.
✅ Solution : Webhook Unifié
J'ai modifié votre stripe-connect-webhook pour gérer TOUS les événements :
- ✅
checkout.session.completed(paiements) - ✅
payment_intent.succeeded(paiements) - ✅
transfer.created(transferts vendeurs) - ✅
application_fee.created(commissions) - ✅
account.updated(comptes connectés)
🚀 Étapes de Résolution
1. Déployer le Webhook Mis à Jour
supabase functions deploy stripe-connect-webhook
2. Configurer Stripe Dashboard
Option A : Un Seul Webhook (RECOMMANDÉ)
- URL :
https://votre-projet.supabase.co/functions/v1/stripe-connect-webhook - Événements :
checkout.session.completedpayment_intent.succeededtransfer.createdapplication_fee.createdaccount.updated
Option B : Deux Webhooks (si vous préférez)
- Webhook 1 :
stripe-webhook(paiements) - Webhook 2 :
stripe-connect-webhook(comptes connectés)
3. Tester Immédiatement
A. Effectuer un Paiement de Test
- Créez une nouvelle commande
- Générez un lien de paiement
- Effectuez un paiement
- Regardez les logs en temps réel
B. Vérifier les Logs
Dans Supabase Dashboard > Functions > stripe-connect-webhook, vous devriez voir :
🛒 CHECKOUT SESSION COMPLETED
Session ID: cs_test_xxx
📋 Processing commande: uuid-commande
✅ Commande found: {...}
💾 Updating commande...
✅ Commande updated successfully: uuid-commande
✅ Verification successful: {...}
4. Vérifier la Base de Données
-- Vérifier que la commande est mise à jour
SELECT id, status, payment_confirmed, payment_date, stripe_session_id
FROM commandes
WHERE id = 'votre-commande-id';
🔍 Diagnostic des Problèmes
Si vous ne voyez pas checkout.session.completed :
- Vérifiez que l'événement est activé dans Stripe Dashboard
- Vérifiez que l'URL du webhook est correcte
- Regardez les logs Stripe pour voir les erreurs
Si vous voyez l'événement mais pas la mise à jour :
- Vérifiez que
commande_idest dans les métadonnées - Vérifiez que la commande existe en base
- Vérifiez les permissions RLS
Si vous voyez des erreurs de signature :
- Vérifiez que
STRIPE_CONNECT_WEBHOOK_SECRETest correct - Vérifiez que le secret correspond à celui de Stripe Dashboard
📊 Logs à Surveiller
Logs de Succès :
Processing event: checkout.session.completed
🛒 CHECKOUT SESSION COMPLETED
📋 Processing commande: uuid
✅ Commande found: {...}
💾 Updating commande...
✅ Commande updated successfully: uuid
✅ Verification successful: {...}
Logs d'Erreur :
❌ commande_id not found in session metadata
❌ Error fetching commande: {...}
❌ Commande not found: uuid
❌ Error updating commande: {...}
🎯 Résultat Attendu
Après déploiement, vous devriez voir :
- ✅
checkout.session.completedreçu - ✅ Commande trouvée en base
- ✅ Commande mise à jour avec
status: 'paid' - ✅
payment_confirmed: true - ✅
payment_daterempli
🚀 Test Rapide
# 1. Déployer
supabase functions deploy stripe-connect-webhook
# 2. Tester avec Stripe CLI (optionnel)
stripe listen --forward-to localhost:54321/functions/v1/stripe-connect-webhook
# 3. Déclencher un événement de test
stripe trigger checkout.session.completed
⚠️ Points d'Attention
- Un seul webhook : Utilisez
stripe-connect-webhookpour tout - Événements multiples : Assurez-vous que tous les événements sont activés
- Logs détaillés : Surveillez les logs pour identifier les problèmes
- Test immédiat : Testez dès le déploiement
🎉 Résultat Final
Avec cette solution, votre webhook gérera :
- ✅ Paiements :
checkout.session.completed - ✅ Transferts :
transfer.created - ✅ Commissions :
application_fee.created - ✅ Comptes :
account.updated
Vos commandes se mettront à jour automatiquement ! 🚀