Aller au contenu principal

Résolution de l'Erreur "parameter_unknown (customer_name)"

🚨 Problème Identifié

L'erreur parameter_unknown (customer_name) indique que l'API Stripe Checkout Sessions ne reconnaît pas le paramètre customer_name.

Erreur Exacte

{
"error": {
"code": "parameter_unknown",
"message": "Received unknown parameter: customer_name. Did you mean customer_email?",
"param": "customer_name"
}
}

🔍 Cause du Problème

L'API Stripe Checkout Sessions ne supporte pas le paramètre customer_name directement. Seul customer_email est supporté.

✅ Solution Implémentée

1. Correction du Paramètre

Avant (❌ Erreur)

if (clientName != null) {
body['customer_name'] = clientName; // ❌ Non supporté
}
if (clientEmail != null) {
body['customer_email'] = clientEmail; // ✅ Supporté
}

Après (✅ Fonctionne)

if (clientEmail != null) {
body['customer_email'] = clientEmail; // ✅ Supporté
}

// Pour le nom du client, on utilise les métadonnées
if (clientName != null) {
body['metadata[client_name]'] = clientName; // ✅ Supporté
}

2. Fichiers Modifiés

  • stripe_payment_service_impl_simple.dart
  • stripe_payment_service_impl_v2.dart

3. Avantages de la Solution

  • Compatible avec l'API Stripe Checkout Sessions
  • Préserve les informations client
  • Accessible via les métadonnées de la session
  • Pas de perte de fonctionnalité

🧪 Test de la Solution

1. Redémarrez l'Application

flutter run

2. Testez le Paiement

  1. Créez une commande avec un prix
  2. Passez au statut "Payée"
  3. Sélectionnez "Carte bancaire" (déjà sélectionné par défaut)
  4. Cliquez sur "Créer et partager"

3. Vérifiez les Logs

Vous devriez maintenant voir :

Création du lien Stripe - Montant: 50.0 EUR
Description: Commande Kazalendar
Création de la session Stripe...
Paramètres de la session: {payment_method_types[0]: card, line_items[0][price_data][currency]: EUR, line_items[0][price_data][product_data][name]: Commande Kazalendar, line_items[0][price_data][unit_amount]: 5000, line_items[0][quantity]: 1, mode: payment, success_url: https://example.com/success?session_id={CHECKOUT_SESSION_ID}, cancel_url: https://example.com/cancel, customer_email: client@example.com, metadata[client_name]: Nom du Client}
Réponse Stripe - Status: 200
Session créée avec succès: {id: cs_test_..., url: https://checkout.stripe.com/...}
URL de paiement: https://checkout.stripe.com/...

4. Test de Paiement

  1. Cliquez sur le lien généré
  2. Utilisez la carte de test : 4242 4242 4242 4242
  3. Le paiement devrait fonctionner sans erreur

📊 Comparaison Avant/Après

AspectAvantAprès
customer_namecustomer_namemetadata[client_name]
customer_emailcustomer_emailcustomer_email
Compatibilité❌ Erreur 400✅ Fonctionne
Fonctionnalité❌ Bloqué✅ Opérationnel

🔧 Détails Techniques

Métadonnées Stripe

Les métadonnées sont accessibles via :

  • Dashboard Stripe : Sessions > Détails > Métadonnées
  • API Stripe : session.metadata.client_name
  • Webhooks : event.data.object.metadata.client_name

Avantages des Métadonnées

  • Flexibilité : Pas de limite sur les clés
  • Persistance : Conservées avec la session
  • Recherche : Filtrables dans le dashboard
  • Webhooks : Incluses dans les événements

🚀 Prochaines Étapes

  1. Testez la solution avec une commande réelle
  2. Vérifiez que le lien de paiement se crée sans erreur
  3. Testez le paiement avec une carte de test
  4. Confirmez que le partage fonctionne

📞 Support

Si vous rencontrez encore des problèmes :

  1. Vérifiez les logs dans la console
  2. Testez avec des montants faibles d'abord
  3. Vérifiez le dashboard Stripe pour les sessions créées

La correction du paramètre customer_name devrait résoudre complètement l'erreur de création de lien de paiement !