Aller au contenu

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

1
2
# 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 :

1
2
3
4
5
6
{
  "id": 1,
  "nom": "Attestation de Logement et Prise en Charge",
  "tarif": 160000.0,  // ← En FCFA XAF
  "active": true
}

2. Conversion pour Stripe uniquement

1
2
3
4
5
6
7
8
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 EUR24,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

1
python3 test_conversion_xaf_eur.py

Test backend intégré

1
2
3
4
sudo docker exec boaz-backend python -c "
from app.services.stripe_service import stripe_service
# Test avec vraie souscription...
"

📋 Vérifications

Avant déploiement :

  1. ✅ Taux XAF_TO_EURO = 650.0 configuré
  2. ✅ Conversion appliquée dans _calculer_montant_ttc()
  3. ✅ Services.json montants inchangés (FCFA)
  4. ✅ Proforma génère montants FCFA
  5. ✅ Stripe reçoit montants EUR
  6. ✅ Tests de cohérence passés

Après déploiement :

  1. Tester une session de paiement réelle
  2. Vérifier montant affiché = 246.15 EUR (pour service 1)
  3. Confirmer webhook reçoit bon montant EUR
  4. Contrôler proforma reste en FCFA

🚨 Points d'Attention

  1. Uniquement pour Stripe : Ne pas appliquer la conversion ailleurs
  2. Cohérence affichage : Interface doit rester en FCFA sauf Stripe
  3. Webhook : Montants reçus seront en EUR (convertis)
  4. 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