Logo Lanfrica

varanjfhueijd/wave-rs

Domain:

digital infrastructure

Record type:

software
Creator:
var
Host:
Unified Rust SDK for West African mobile payments — Wave, Orange Money, MTN, Moov # wave-rs 🌍 **🇫🇷 Français** · 🇬🇧 English SDK Rust unifié pour les APIs de paiement mobile en Afrique de l'Ouest : **Wave**, **Orange Money**, **MTN Mobile Money** et **Moov Africa**. Une interface commune, typée et async (Tokio) pour initier des paiements, consulter des soldes et lister des transactions — quel que soit l'opérateur. Inclut une CLI (`wave`) pour tester le SDK en terminal. ## Structure du workspace | Crate | Rôle | État | |-------|------|------| | `crates/wave-core` | Types partagés, trait `Provider`, `WaveError` | ✅ | | `crates/wave-wave` | Provider Wave (clé API) | ✅ | | `crates/wave-orange` | Provider Orange Money CI (OAuth2 + cache token) | ✅ | | `crates/wave-mtn` | Provider MTN MoMo (flux 202 + polling) | ✅ | | `crates/wave-moov` | Provider Moov Africa (clé API) | ✅ | | `cli` | Binaire `wave` (pay, balance, transactions, status, providers) | ✅ | | `tests` | Tests d'intégration transverses (`dyn Provider`) | ✅ | ## Démarrage ```bash cp .env.example .env # puis remplir les credentials cargo build --workspace cargo test --workspace cargo clippy --workspace --all-targets -- -D warnings ``` ## Utiliser le SDK Le contrat central est le trait `Provider` : le même code appelant fonctionne avec les quatre opérateurs. ```rust use wave_core::{Money, PaymentRequest, PhoneNumber, Provider}; use wave_wave::WaveProvider; #[tokio::main] async fn main() -> Result { let provider = WaveProvider::from_env()?; // WAVE_API_KEY, WAVE_MERCHANT_ID let to = PhoneNumber::parse("+2250700000000")?; let request = PaymentRequest::new(to, Money::xof(5000)).with_note("Loyer"); let response = provider.initiate_payment(request).await?; // Paiements asynchrones : statut initial `Pending`, suivi par polling. println!("{} → {:?}", response.transaction_id, response.status); Ok(()) } ``` Exemples complets dans `examples/` : ```bash cargo run -p wave-cli --example send_payment -- wave +2250700000000 5000 "Loyer" cargo run -p wave-cli --example check_balan …