Conversion XAF vers EUR pour Stripe
🎯 Objectif
Convertir automatiquement les montants des services de FCFA (XAF) vers EUR lors de la création de sessions de paiement Stripe.
⚙️ Configuration
Taux de conversion
| # backend/app/services/stripe_service.py
XAF_TO_EURO = 650.0 # 1 EUR = 650 FCFA XAF
|
🔄 Fonctionnement
1. Montants de base (services.json)
Les tarifs des services restent en FCFA :
| {
"id": 1,
"nom": "Attestation de Logement et Prise en Charge",
"tarif": 160000.0, // ← En FCFA XAF
"active": true
}
|
2. Conversion pour Stripe uniquement
| def _calculer_montant_ttc(self, souscription: Souscription) -> float:
# Calcul en FCFA (montants originaux)
total_services_xaf = self.services_data_service.calculate_services_total(service_ids)
# CONVERSION pour Stripe seulement
total_ttc_eur = total_services_xaf / XAF_TO_EURO
return float(total_ttc_eur)
|
3. Résultat
- Service 1 : 160,000 FCFA → 246.15 EUR → 24,615 centimes Stripe
📊 Tableau de Conversion
| Service |
Montant FCFA |
Montant EUR |
Centimes Stripe |
| Attestation (ID=1) |
160,000 |
246.15 |
24,615 |
| Caution AVI (ID=2) |
5,502,000 |
8,464.62 |
846,461 |
| Transfert Fonds (ID=3) |
137,550 |
211.62 |
21,161 |
| Frais AVI (ID=4) |
230,000 |
353.85 |
35,384 |
| Assurance (ID=5) |
50,000 |
76.92 |
7,692 |
| Facilité Caisse (ID=6) |
120,000 |
184.62 |
18,461 |
| Accueil Premium (ID=7) |
180,000 |
276.92 |
27,692 |
🎯 Cohérence du Système
✅ Ce qui reste en FCFA :
- Affichage frontend (proforma, devis)
- Génération PDF proforma
- Base de données (montants services)
- Calculs internes
- Interface admin
✅ Ce qui utilise EUR :
- Sessions de paiement Stripe UNIQUEMENT
- Webhooks Stripe (réception en EUR)
- Affichage checkout Stripe
🔧 Flux Technique
graph TD
A[Service: 160000 FCFA] --> B[Création session Stripe]
B --> C[Conversion: 160000 ÷ 650 = 246.15 EUR]
C --> D[Stripe: 24615 centimes]
D --> E[Client paye 246.15 EUR]
E --> F[Webhook: 24615 centimes reçus]
F --> G[Sauvegarde: 246.15 EUR dans montant_verse]
🧪 Tests
Test de conversion basique
| python3 test_conversion_xaf_eur.py
|
Test backend intégré
| sudo docker exec boaz-backend python -c "
from app.services.stripe_service import stripe_service
# Test avec vraie souscription...
"
|
📋 Vérifications
Avant déploiement :
- ✅ Taux XAF_TO_EURO = 650.0 configuré
- ✅ Conversion appliquée dans
_calculer_montant_ttc()
- ✅ Services.json montants inchangés (FCFA)
- ✅ Proforma génère montants FCFA
- ✅ Stripe reçoit montants EUR
- ✅ Tests de cohérence passés
Après déploiement :
- Tester une session de paiement réelle
- Vérifier montant affiché = 246.15 EUR (pour service 1)
- Confirmer webhook reçoit bon montant EUR
- Contrôler proforma reste en FCFA
🚨 Points d'Attention
- Uniquement pour Stripe : Ne pas appliquer la conversion ailleurs
- Cohérence affichage : Interface doit rester en FCFA sauf Stripe
- Webhook : Montants reçus seront en EUR (convertis)
- Mise à jour taux : Modifier XAF_TO_EURO si besoin
🎉 Résultat Final
- Client voit : 160,000 FCFA sur le proforma
- Client paye : 246.15 EUR sur Stripe
- Système cohérent : Conversion transparente
- Aucun impact : Sur le reste de l'application