Aller au contenu principal

Guide d'Implémentation Apple Pay / Google Pay pour Kazalendar

Implémentation Terminée

Le système de paiement Apple Pay et Google Pay est maintenant intégré dans votre application Kazalendar !

🛠️ Ce qui a été implémenté

1. Dépendances ajoutées

  • pay: ^2.0.0 - Plugin Flutter pour Apple Pay et Google Pay
  • ✅ Mise à jour du pubspec.yaml

2. Services de paiement

  • InAppPaymentService - Interface abstraite
  • InAppPaymentServiceImpl - Implémentation complète
  • ✅ Support Apple Pay (iOS) et Google Pay (Android)

3. Entités de données

  • PaymentItem - Éléments de paiement
  • PaymentResult - Résultat des transactions
  • ✅ Support de plusieurs devises (EUR par défaut)

4. Interface utilisateur

  • PaymentButton - Bouton de paiement adaptatif
  • SimplePaymentButton - Version simplifiée
  • PaymentPage - Page de paiement complète
  • ✅ Intégration dans CommandeCard

5. Configuration

  • ✅ Fichiers de configuration Apple Pay et Google Pay
  • ✅ Assets ajoutés au pubspec.yaml
  • ✅ Configuration prête pour sandbox et production

🚀 Utilisation dans votre application

Exemple 1: Bouton de paiement simple

SimplePaymentButton(
amount: 45.99,
label: 'Gâteau d\'anniversaire',
onPaymentResult: (result) {
if (result.status == PaymentStatus.success) {
print('Paiement réussi: ${result.transactionId}');
}
},
)

Exemple 2: Bouton avec plusieurs éléments

PaymentButton(
items: [
PaymentItem(label: 'Gâteau au chocolat', amount: 35.00),
PaymentItem(label: 'Décoration', amount: 10.99),
],
onPaymentResult: (result) {
// Traiter le résultat
},
)

Exemple 3: Commande avec paiement

CommandeCard(
commande: maCommande,
showPaymentButton: true,
onPaymentResult: (result) {
// Gérer le paiement de la commande
},
)

⚙️ Configuration pour la Production

🍎 Apple Pay - Configuration

1. Apple Developer Account

  1. Connectez-vous à Apple Developer
  2. Allez dans Certificates, IDs & Profiles
  3. Créez un Merchant ID:
    • Identifier: merchant.com.kazacalendar.mobile
    • Description: Kazalendar Payments

2. Merchant Identity Certificate

  1. Créez un Payment Processing Certificate
  2. Téléchargez et installez le certificat
  3. Exportez la clé privée

3. Mise à jour de la configuration

Modifiez assets/payment_configurations/apple_pay_payment_profile.json:

{
"provider": "apple_pay",
"data": {
"merchantIdentifier": "merchant.com.kazacalendar.mobile",
"displayName": "Kazalendar",
"merchantCapabilities": ["3DS", "debit", "credit"],
"supportedNetworks": ["visa", "masterCard", "amex"],
"countryCode": "FR",
"currencyCode": "EUR"
}
}

4. Configuration iOS (Xcode)

  1. Ouvrez le projet iOS dans Xcode
  2. Sélectionnez le target principal
  3. Allez dans Signing & Capabilities
  4. Ajoutez Apple Pay capability
  5. Sélectionnez votre Merchant ID

🤖 Google Pay - Configuration

1. Google Pay Business Console

  1. Allez sur Google Pay Business Console
  2. Créez un compte marchand
  3. Obtenez votre Merchant ID

2. Configuration du processeur de paiement

Choisissez votre processeur (Stripe, PayPal, etc.) et configurez:

  • Gateway parameters
  • Merchant account
  • API keys

3. Mise à jour de la configuration

Modifiez assets/payment_configurations/google_pay_payment_profile.json:

{
"provider": "google_pay",
"data": {
"environment": "PRODUCTION",
"apiVersion": 2,
"apiVersionMinor": 0,
"allowedPaymentMethods": [
{
"type": "CARD",
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "stripe",
"stripe:version": "2020-08-27",
"stripe:publishableKey": "pk_live_votre_cle_stripe"
}
},
"parameters": {
"allowedCardNetworks": ["VISA", "MASTERCARD", "AMEX"],
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"]
}
}
],
"merchantInfo": {
"merchantName": "Kazalendar",
"merchantId": "votre_merchant_id_google"
}
}
}

🔧 Intégration avec votre Backend

1. Traitement côté serveur

Après réception du token de paiement, votre backend doit:

// Exemple Node.js/Express
app.post('/process-payment', async (req, res) => {
const { paymentToken, amount, orderId } = req.body;

try {
// Traiter avec Stripe, PayPal, etc.
const charge = await stripe.charges.create({
amount: amount * 100, // En centimes
currency: 'eur',
source: paymentToken,
description: `Commande Kazalendar #${orderId}`,
});

// Mettre à jour la commande en base
await updateOrderStatus(orderId, 'paid', charge.id);

res.json({ success: true, chargeId: charge.id });
} catch (error) {
res.status(400).json({ error: error.message });
}
});

2. Webhooks de confirmation

Configurez des webhooks pour valider les paiements:

// Dans votre service de paiement Flutter
Future<void> _processSuccessfulPayment(PaymentResult result) async {
// Envoyer le token au backend
final response = await http.post(
Uri.parse('https://votre-api.com/process-payment'),
headers: {'Content-Type': 'application/json'},
body: json.encode({
'paymentToken': result.paymentToken,
'transactionId': result.transactionId,
'amount': amount,
'orderId': orderId,
}),
);

if (response.statusCode == 200) {
// Paiement confirmé
await _updateOrderStatus('paid');
}
}

🧪 Tests

1. Tests automatisés

Lancez le script de test:

dart run test_payment_integration.dart

2. Tests manuels

Sur iOS (Apple Pay):

  1. Utilisez un simulateur iOS 12.0+
  2. Configurez des cartes test dans Wallet
  3. Testez sur un appareil physique pour la production

Sur Android (Google Pay):

  1. Utilisez un émulateur Android avec Google Play
  2. Configurez Google Pay avec des cartes test
  3. Testez sur un appareil physique

3. Cartes de test

Apple Pay (Sandbox):

  • Visa: 4000 0000 0000 0002
  • Mastercard: 5555 5555 5555 4444
  • Amex: 3782 8224 6310 005

Google Pay (Test):

  • Utilisez les cartes test de votre processeur de paiement

📱 Exemple d'utilisation complète

Voir le fichier example_payment_usage.dart pour des exemples détaillés.

🔐 Sécurité

Bonnes pratiques implémentées:

  • ✅ Tokenization des données de carte
  • ✅ Pas de stockage des informations sensibles
  • ✅ Validation côté serveur obligatoire
  • ✅ HTTPS obligatoire
  • ✅ Logs sécurisés

À configurer en production:

  • 🔧 Certificats SSL valides
  • 🔧 Webhook signatures validation
  • 🔧 Rate limiting
  • 🔧 Monitoring des transactions

📞 Support et Dépannage

Problèmes courants:

"Paiement non disponible"

  • Vérifiez les Merchant IDs
  • Confirmez la configuration des cartes
  • Testez sur un appareil physique

"Configuration invalide"

  • Vérifiez les fichiers JSON de configuration
  • Confirmez les clés API
  • Vérifiez les certificats Apple Pay

"Transaction échouée"

  • Vérifiez la connexion réseau
  • Confirmez les paramètres du processeur
  • Consultez les logs du backend

Checklist de déploiement

Configuration:

  • Merchant ID Apple Pay créé et configuré
  • Compte marchand Google Pay activé
  • Certificats Apple Pay installés
  • Fichiers de configuration mis à jour
  • Backend de traitement configuré

Tests:

  • Tests sur simulateur/émulateur
  • Tests sur appareils physiques
  • Tests avec cartes réelles (sandbox)
  • Tests des cas d'erreur
  • Tests de l'UI responsive

Production:

  • Environnement PRODUCTION activé
  • Clés API de production configurées
  • Webhooks de validation actifs
  • Monitoring des transactions
  • Documentation utilisateur créée

🎉 Votre système de paiement Apple Pay / Google Pay est prêt !

Les utilisateurs peuvent maintenant payer leurs commandes directement depuis l'application avec leur méthode de paiement mobile préférée, de manière sécurisée et fluide.