paygate-africa¶
Module Python d'abstraction des passerelles de paiement africaines — Sans dépendances.
Il fournit une interface unifiée pour intégrer plusieurs fournisseurs sans coupler le reste de l'application à un SDK tiers.
-
Performance Ultra-Légère
Zéro dépendance, moins de 50KB. Utilise uniquement la bibliothèque standard Python (
urllib,asyncio). -
Sécurisé par Design
Aucun stockage de secrets en base. Validation stricte via les Protocols Python (PEP 544).
-
Interface Unifiée
Une seule interface, quel que soit le moyen de paiement (Mobile Money, Carte, etc.).
-
Async-First
Conçu pour s'intégrer nativement avec FastAPI ou tout environnement asynchrone moderne.
Providers supportés¶
| Provider | Mécanisme | Statut |
|---|---|---|
| CinetPay | Redirection vers page de paiement hébergée | ✅ Disponible |
| Kkiapay | Widget frontend + vérification API | ✅ Disponible |
Aperçu rapide¶
from paygate_africa.factory import PaymentProviderPath, select_provider
# 1. Sélectionner le provider (CINETPAY ou KKIAPAY)
provider = select_provider(PaymentProviderPath.CINETPAY)
# 2. Initier un paiement
url = await provider.initiate_payment(transaction)
# 3. Vérifier le statut
result = await provider.verify_payment(transaction.id)
# {"status": "SUCCESS", "raw_data": {...}}
Architecture¶
classDiagram
class PaymentProvider {
<<interface>>
+initiate_payment(tx: Transaction) str*
+verify_payment(transaction_id: str) dict*
}
class CinetPayProvider {
+initiate_payment(tx)
+verify_payment(id)
}
class KkiapayProvider {
+initiate_payment(tx)
+verify_payment(id)
}
class PaymentProviderPath {
<<enumeration>>
CINETPAY
KKIAPAY
}
PaymentProvider <|-- CinetPayProvider
PaymentProvider <|-- KkiapayProvider
PaymentProviderPath ..> PaymentProvider : selects
Structure du projet¶
paygate_africa/
├── base.py # Contrat abstrait (ABC) + Protocol Transaction
├── factory.py # Chargement dynamique des providers
├── cinetpay/ # Implémentation CinetPay
└── kkiapay/ # Implémentation Kkiapay
Consulte le Guide de démarrage pour commencer.