Test Complet du Système de Paiement
🎯 Objectif
Valider que le système de paiement par carte bancaire fonctionne de bout en bout, de la création du lien à la confirmation automatique du paiement.
📋 Checklist de Test
Phase 1 : Préparation
- Application Flutter démarrée
- Clés Stripe configurées dans
stripe_config.dart - Webhook déployé et configuré
- Base de données Supabase accessible
Phase 2 : Test de Création de Lien
- Créer une commande avec prix
- Passer au statut "Payée"
- Sélectionner "Carte bancaire"
- Vérifier la création du lien
- Vérifier l'ouverture du partage natif
Phase 3 : Test de Paiement
- Cliquer sur le lien généré
- Utiliser la carte de test Stripe
- Vérifier le paiement réussi
- Vérifier la redirection
Phase 4 : Test de Confirmation Automatique
- Vérifier les logs du webhook
- Vérifier la mise à jour de la commande
- Vérifier le statut "Payée"
- Vérifier les champs de paiement
🧪 Tests Détaillés
Test 1 : Création de Commande
-
Ouvrir l'application
-
Créer une nouvelle commande :
- Titre : "Test Paiement CB"
- Description : "Test de paiement par carte bancaire"
- Prix : 50€
- Client : "Test Client" (test@example.com)
- Date : Aujourd'hui
-
Vérifications :
- ✅ Commande créée avec succès
- ✅ Prix affiché correctement
- ✅ Client associé
Test 2 : Génération du Lien de Paiement
-
Passer au statut "Payée"
-
Sélectionner "Carte bancaire" (déjà sélectionné par défaut)
-
Cliquer sur "Créer et partager"
-
Vérifications :
- ✅ Modal de partage s'ouvre
- ✅ Lien Stripe généré
- ✅ Message de partage contient le lien
- ✅ Pas d'erreur dans les logs
Test 3 : Paiement Stripe
-
Cliquer sur le lien généré
-
Page Stripe s'ouvre avec :
- ✅ Description de la commande
- ✅ Montant correct (50€)
- ✅ Informations client
-
Effectuer le paiement :
- Carte :
4242 4242 4242 4242 - Date : N'importe quelle date future
- CVC :
123 - Email :
test@example.com
- Carte :
-
Vérifications :
- ✅ Paiement accepté
- ✅ Page de succès affichée
- ✅ Redirection vers l'URL de succès
Test 4 : Confirmation Automatique
-
Vérifier les logs du webhook :
supabase functions logs stripe-webhook --follow -
Logs attendus :
Processing checkout.session.completed: cs_test_...
Payment confirmed successfully for session: cs_test_...
Commande updated: [commande-id] -
Vérifier la base de données :
-- Vérifier le lien de paiement
SELECT * FROM payment_links WHERE stripe_payment_link_id = 'cs_test_...';
-- Vérifier la commande
SELECT * FROM commandes WHERE id = '[commande-id]'; -
Vérifications :
- ✅
payment_links.is_paid = true - ✅
payment_links.paid_atmis à jour - ✅
commandes.status = 'paid' - ✅
commandes.payment_confirmed = true - ✅
commandes.payment_datemis à jour
- ✅
Test 5 : Interface Utilisateur
-
Retourner à l'application
-
Actualiser la page de détails de la commande
-
Vérifications :
- ✅ Statut affiché comme "Payée"
- ✅ Type de paiement affiché comme "Carte bancaire"
- ✅ Date de paiement affichée
- ✅ Confirmation de paiement visible
🔧 Tests de Cas d'Erreur
Test 6 : Carte Refusée
- Utiliser une carte de test refusée :
4000 0000 0000 0002 - Vérifier :
- ✅ Erreur affichée dans Stripe
- ✅ Pas de mise à jour en base
- ✅ Commande reste en statut "Payée" mais non confirmée
Test 7 : Webhook Désactivé
- Désactiver temporairement le webhook dans Stripe
- Effectuer un paiement
- Vérifier :
- ✅ Paiement réussi dans Stripe
- ✅ Commande non mise à jour automatiquement
- ✅ Logs d'erreur du webhook
📊 Scripts de Test Automatisés
Test du Webhook
# Tester le webhook directement
./test_webhook.sh
Test de la Base de Données
-- Vérifier toutes les commandes payées
SELECT
c.titre,
c.prix,
c.status,
c.payment_confirmed,
c.payment_date,
pl.is_paid,
pl.paid_at
FROM commandes c
LEFT JOIN payment_links pl ON c.id = pl.commande_id
WHERE c.payment_confirmed = true;
Test des Logs
# Voir les logs en temps réel
supabase functions logs stripe-webhook --follow
# Voir les logs des dernières heures
supabase functions logs stripe-webhook --since 2h
🚨 Dépannage des Tests
Problème : Lien non généré
Vérifications :
- Clés Stripe correctes dans
stripe_config.dart - Connexion internet active
- Logs d'erreur dans la console
Solution :
# Vérifier les logs de l'application
flutter logs
# Tester la connectivité Stripe
curl -u sk_test_...: https://api.stripe.com/v1/charges
Problème : Paiement non confirmé
Vérifications :
- Webhook configuré et actif
- Événements sélectionnés dans Stripe
- Variables d'environnement correctes
Solution :
# Redéployer le webhook
supabase functions deploy stripe-webhook
# Vérifier les logs
supabase functions logs stripe-webhook
Problème : Erreur de base de données
Vérifications :
- RLS policies correctes
- Permissions de la clé de service
- Structure des tables
Solution :
-- Vérifier les policies
SELECT * FROM pg_policies WHERE tablename = 'commandes';
-- Vérifier les permissions
SELECT * FROM information_schema.role_table_grants
WHERE table_name = 'commandes';
✅ Critères de Succès
Fonctionnalités Principales
- Création de lien de paiement fonctionne
- Page Stripe affiche les bonnes informations
- Paiement avec carte de test réussi
- Confirmation automatique du paiement
- Mise à jour du statut de la commande
Interface Utilisateur
- Carte bancaire sélectionnée par défaut
- Modal de partage s'ouvre correctement
- Description personnalisée dans Stripe
- Statut mis à jour en temps réel
Sécurité et Fiabilité
- Webhook sécurisé et fonctionnel
- Gestion d'erreur appropriée
- Logs détaillés pour le debug
- Base de données cohérente
🎉 Validation Finale
Une fois tous les tests passés, votre système de paiement est entièrement fonctionnel !
Félicitations 🎊 - Vous avez maintenant un système de paiement professionnel intégré à votre application Kazalendar !