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
- Créez une commande avec un prix
- Passez au statut "Payée"
- Sélectionnez "Carte bancaire" (déjà sélectionné par défaut)
- 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
- Cliquez sur le lien généré
- Utilisez la carte de test :
4242 4242 4242 4242 - Le paiement devrait fonctionner sans erreur
📊 Comparaison Avant/Après
| Aspect | Avant | Après |
|---|---|---|
| customer_name | ❌ customer_name | ✅ metadata[client_name] |
| customer_email | ✅ customer_email | ✅ customer_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
- Testez la solution avec une commande réelle
- Vérifiez que le lien de paiement se crée sans erreur
- Testez le paiement avec une carte de test
- Confirmez que le partage fonctionne
📞 Support
Si vous rencontrez encore des problèmes :
- Vérifiez les logs dans la console
- Testez avec des montants faibles d'abord
- 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 !