Aller au contenu principal

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

  1. Ouvrir l'application

  2. 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
  3. Vérifications :

    • ✅ Commande créée avec succès
    • ✅ Prix affiché correctement
    • ✅ Client associé

Test 2 : Génération du Lien de Paiement

  1. Passer au statut "Payée"

  2. Sélectionner "Carte bancaire" (déjà sélectionné par défaut)

  3. Cliquer sur "Créer et partager"

  4. 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

  1. Cliquer sur le lien généré

  2. Page Stripe s'ouvre avec :

    • ✅ Description de la commande
    • ✅ Montant correct (50€)
    • ✅ Informations client
  3. Effectuer le paiement :

    • Carte : 4242 4242 4242 4242
    • Date : N'importe quelle date future
    • CVC : 123
    • Email : test@example.com
  4. Vérifications :

    • ✅ Paiement accepté
    • ✅ Page de succès affichée
    • ✅ Redirection vers l'URL de succès

Test 4 : Confirmation Automatique

  1. Vérifier les logs du webhook :

    supabase functions logs stripe-webhook --follow
  2. Logs attendus :

    Processing checkout.session.completed: cs_test_...
    Payment confirmed successfully for session: cs_test_...
    Commande updated: [commande-id]
  3. 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]';
  4. Vérifications :

    • payment_links.is_paid = true
    • payment_links.paid_at mis à jour
    • commandes.status = 'paid'
    • commandes.payment_confirmed = true
    • commandes.payment_date mis à jour

Test 5 : Interface Utilisateur

  1. Retourner à l'application

  2. Actualiser la page de détails de la commande

  3. 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

  1. Utiliser une carte de test refusée : 4000 0000 0000 0002
  2. 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é

  1. Désactiver temporairement le webhook dans Stripe
  2. Effectuer un paiement
  3. 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 :

  1. Clés Stripe correctes dans stripe_config.dart
  2. Connexion internet active
  3. 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 :

  1. Webhook configuré et actif
  2. Événements sélectionnés dans Stripe
  3. 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 :

  1. RLS policies correctes
  2. Permissions de la clé de service
  3. 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 !