🚀 Migration vers Stripe Connect Unifié
🎯 Objectif
Tous les vendeurs utiliseront désormais Stripe Connect avec une commission de 4% correctement appliquée.
✅ Changements Appliqués
1. Interface de Paiement Modifiée
// AVANT
Future<PaymentLink> createStripePaymentLink({
required double amount,
required String currency,
required String description,
String? clientName,
String? clientEmail,
DateTime? expiresAt,
String? commandeId,
});
// APRÈS
Future<PaymentLink> createStripePaymentLink({
required double amount,
required String currency,
required String description,
required String vendeurId, // NOUVEAU : ID du vendeur
String? clientName,
String? clientEmail,
DateTime? expiresAt,
String? commandeId,
});
2. Logique de Paiement Remplacée
- ❌ Supprimé : Commission ajoutée au montant (client payait 104€)
- ✅ Ajouté : Application fee de 4% via Stripe Connect
- ✅ Ajouté : Transfer automatique vers le compte vendeur
3. Nouveaux Paramètres Stripe
// Application fee pour votre commission de 4%
'payment_intent_data[application_fee_amount]': applicationFeeAmount.toString(),
// Transfer vers le compte connecté du vendeur
'payment_intent_data[transfer_data][destination]': connectedAccountId,
💰 Comment Ça Marche Maintenant
Flux de Paiement :
- Client paie : 100€ (montant original)
- Stripe prend : 2.9% + 0.30€ = ~3.20€ (frais de traitement)
- Votre commission : 4€ (via application_fee_amount)
- Vendeur reçoit : ~92.80€ (100€ - 3.20€ - 4€)
Avantages :
- ✅ Commission garantie : Vous recevez exactement 4%
- ✅ Transparence : Le client voit le montant original
- ✅ Automatique : Transfert direct vers le vendeur
- ✅ Conforme : Utilise les bonnes pratiques Stripe
🔧 Modifications Nécessaires dans Votre Code
1. Mise à Jour des Appels de Service
// AVANT
final paymentLink = await paymentService.createStripePaymentLink(
amount: 100.0,
currency: 'EUR',
description: 'Commande #123',
clientName: 'Jean Dupont',
clientEmail: 'jean@example.com',
commandeId: 'commande_456',
);
// APRÈS
final paymentLink = await paymentService.createStripePaymentLink(
amount: 100.0,
currency: 'EUR',
description: 'Commande #123',
vendeurId: 'vendeur_123', // NOUVEAU : ID du vendeur
clientName: 'Jean Dupont',
clientEmail: 'jean@example.com',
commandeId: 'commande_456',
);
2. Injection de Dépendance
// Mettre à jour l'injection du service
StripePaymentServiceImplSimple(
stripeSecretKey: StripeConfig.secretKey,
stripePublishableKey: StripeConfig.publishableKey,
connectedAccountRepository: ConnectedAccountRepositoryImpl(), // NOUVEAU
)
3. Gestion des Erreurs
try {
final paymentLink = await paymentService.createStripePaymentLink(...);
} catch (e) {
if (e.toString().contains('Aucun compte Stripe Connect trouvé')) {
// Le vendeur n'a pas encore configuré son compte Stripe Connect
// Rediriger vers la page d'onboarding
}
}
📋 Checklist de Migration
✅ Code Modifié
- Interface
PaymentServicemise à jour - Implémentation
StripePaymentServiceImplSimplemodifiée - Logique Stripe Connect intégrée
- Application fee configurée
🔄 À Faire
- Mettre à jour tous les appels de
createStripePaymentLink - Ajouter le paramètre
vendeurIdpartout - Tester avec des vendeurs ayant des comptes Stripe Connect
- Vérifier les commissions dans le dashboard Stripe
🧪 Test de la Migration
1. Test avec Vendeur Connecté
final paymentLink = await paymentService.createStripePaymentLink(
amount: 100.0,
currency: 'EUR',
description: 'Test Stripe Connect',
vendeurId: 'vendeur_avec_compte_stripe',
clientName: 'Test Client',
clientEmail: 'test@example.com',
commandeId: 'test_123',
);
2. Vérification des Logs
💳 Création paiement Stripe Connect
Montant original: 100.0 EUR
Vendeur: vendeur_avec_compte_stripe
Commission (4%): 4.00 EUR
Application fee (centimes): 400
Compte Stripe: acct_1234567890
✅ Session Stripe Connect créée: cs_test_1234567890
3. Vérification Dashboard Stripe
- Application Fees : Vous devriez voir 4€
- Transfers : Le vendeur devrait recevoir ~92.80€
- Payouts : Vérifier que les transferts arrivent
⚠️ Points d'Attention
1. Vendeurs Sans Compte Stripe Connect
- Erreur : "Aucun compte Stripe Connect trouvé"
- Solution : Rediriger vers la page d'onboarding Stripe Connect
2. Comptes Stripe Connect Inactifs
- Vérifier :
connectedAccount.status == ConnectedAccountStatus.active - Gérer : Rediriger vers la page de configuration
3. Commission Non Appliquée
- Vérifier :
application_fee_amountdans les logs - Vérifier : Dashboard Stripe > Application Fees
🎉 Résultat Final
Avec cette migration :
- ✅ Tous les vendeurs utilisent Stripe Connect
- ✅ Commission de 4% correctement appliquée
- ✅ Transfer automatique vers les vendeurs
- ✅ Transparence totale pour les clients
- ✅ Conformité aux bonnes pratiques Stripe
Votre système de paiement est maintenant entièrement aligné sur Stripe Connect ! 🚀