Aller au contenu principal

🚀 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 :

  1. Client paie : 100€ (montant original)
  2. Stripe prend : 2.9% + 0.30€ = ~3.20€ (frais de traitement)
  3. Votre commission : 4€ (via application_fee_amount)
  4. 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 PaymentService mise à jour
  • Implémentation StripePaymentServiceImplSimple modifiée
  • Logique Stripe Connect intégrée
  • Application fee configurée

🔄 À Faire

  • Mettre à jour tous les appels de createStripePaymentLink
  • Ajouter le paramètre vendeurId partout
  • 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_amount dans 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 ! 🚀