Aller au contenu principal

🔧 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.completed
    • payment_intent.succeeded
    • transfer.created
    • application_fee.created
    • account.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

  1. Créez une nouvelle commande
  2. Générez un lien de paiement
  3. Effectuez un paiement
  4. 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 :

  1. Vérifiez que l'événement est activé dans Stripe Dashboard
  2. Vérifiez que l'URL du webhook est correcte
  3. Regardez les logs Stripe pour voir les erreurs

Si vous voyez l'événement mais pas la mise à jour :

  1. Vérifiez que commande_id est dans les métadonnées
  2. Vérifiez que la commande existe en base
  3. Vérifiez les permissions RLS

Si vous voyez des erreurs de signature :

  1. Vérifiez que STRIPE_CONNECT_WEBHOOK_SECRET est correct
  2. 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 :

  1. checkout.session.completed reçu
  2. ✅ Commande trouvée en base
  3. ✅ Commande mise à jour avec status: 'paid'
  4. payment_confirmed: true
  5. payment_date rempli

🚀 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

  1. Un seul webhook : Utilisez stripe-connect-webhook pour tout
  2. Événements multiples : Assurez-vous que tous les événements sont activés
  3. Logs détaillés : Surveillez les logs pour identifier les problèmes
  4. 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 ! 🚀