Abstraction unifiée des passerelles de paiement africaines (CinetPay, Kkiapay...) - Zéro dépendance externe.
# paygate-africa
**paygate-africa** est une passerelle d'abstraction Python ultra-légère conçue pour unifier les paiements en Afrique.
Intégrez **CinetPay**, **Kkiapay** et bien d'autres avec une seule interface, sans coupler votre code à des SDK tiers volumineux.
---
## Pourquoi paygate-africa ?
Intégrer les paiements africains est souvent synonyme de dépendances lourdes (`httpx`, `pydantic`, `requests`) et
de structures de données incompatibles. Nous avons créé ce module pour offrir une alternative **indépendante** et **unifiée**.
| Caractéristique | SDK Traditionnels | paygate-africa |
| :--- | :---: | :---: |
| **Dépendances** | 10MB+ (httpx, pydantic...) | **0MB (Standard Lib)** |
| **Utilisation** | SDK spécifique par provider | **Interface Unique (Factory)** |
| **Poids** | Lourd | **Ultra-léger (< 50KB)** |
| **Couplage** | Fort (modèles dictés) | **Faible (Duck Typing / Protocol)** |
---
## Fonctionnalités Clés
- **Unified Interface** : Une seule méthode `initiate_payment` et `verify_payment` pour tous les providers.
- **Asynchrone par défaut** : Conçu pour s'intégrer parfaitement avec FastAPI ou Django (avec `sync_to_async`).
- **Type Safety** : Utilisation des `Protocols` Python (PEP 544) pour une validation stricte sans dépendance `pydantic`.
- **Extensible** : Ajoutez un nouveau provider en créant seulement deux classes.
- **Zero Side-Effects** : Aucun logger imposé, aucune surcharge mémoire.
---
## Installation
```bash
pip install paygate-africa
```
---
## Exemple : Intégrer un paiement en 30 secondes
### 1. Définissez votre objet Transaction (Duck Typing)
Pas besoin d'hériter d'une classe. N'importe quel objet avec ces attributs fera l'affaire.
```python
class MyTransaction:
id = "ORDER_123"
amount = 5000.0
currency = "XOF"
user_email = "client@email.com"
user_name = "Jean Dupont" # Optionnel
description = "Achat Pack Pro" # Optionnel
user_phone = "+22501020304" # Optionnel
```
### 2. Le code d'intégration
```python
import asyncio …