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
- Connectez-vous à Apple Developer
- Allez dans Certificates, IDs & Profiles
- Créez un Merchant ID:
- Identifier:
merchant.com.kazacalendar.mobile - Description:
Kazalendar Payments
- Identifier:
2. Merchant Identity Certificate
- Créez un Payment Processing Certificate
- Téléchargez et installez le certificat
- 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)
- Ouvrez le projet iOS dans Xcode
- Sélectionnez le target principal
- Allez dans Signing & Capabilities
- Ajoutez Apple Pay capability
- Sélectionnez votre Merchant ID
🤖 Google Pay - Configuration
1. Google Pay Business Console
- Allez sur Google Pay Business Console
- Créez un compte marchand
- 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):
- Utilisez un simulateur iOS 12.0+
- Configurez des cartes test dans Wallet
- Testez sur un appareil physique pour la production
Sur Android (Google Pay):
- Utilisez un émulateur Android avec Google Play
- Configurez Google Pay avec des cartes test
- 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.