Moyens de paiement (providers)
Un provider est un moyen de paiement : un opérateur mobile money dans un pays. Vous le choisissez avec son code, dans le champ provider de l’initiation.
| Code | Moyen de paiement | Pays |
|---|---|---|
WAVE_SN |
Wave | Sénégal |
ORANGE_MONEY_SN |
Orange Money | Sénégal |
La liste s’allonge avec les pays. Ne la codez pas « en dur » : demandez-la à MafPay (ci-dessous).
Lister les moyens de paiement utilisables
Seuls les providers configurés et activés pour votre application, dans le mode de vos clés, sont utilisables. Pour ne proposer à vos clients que ceux qui marchent :
/api/v1/{endpoint_key}/providers/?country=SNLe paramètre country (facultatif) filtre par pays (code à 2 lettres).
curl "$MAFPAY_URL/api/v1/$ENDPOINT_KEY/providers/?country=SN" \ -H "X-Api-Key: $MAFPAY_PK" -H "X-Api-Secret: $MAFPAY_SK"const response = await fetch( `${process.env.MAFPAY_URL}/api/v1/${process.env.MAFPAY_ENDPOINT_KEY}/providers/?country=SN`, { headers: { "X-Api-Key": process.env.MAFPAY_PK, "X-Api-Secret": process.env.MAFPAY_SK } });const { data: providers } = await response.json();for (const p of providers) console.log(`Bouton : Payer avec ${p.name} (code ${p.code})`);import osimport requests
response = requests.get( f"{os.environ['MAFPAY_URL']}/api/v1/{os.environ['MAFPAY_ENDPOINT_KEY']}/providers/", params={"country": "SN"}, headers={"X-Api-Key": os.environ["MAFPAY_PK"], "X-Api-Secret": os.environ["MAFPAY_SK"]}, timeout=15,)for p in response.json()["data"]: print(f"Bouton : Payer avec {p['name']} (code {p['code']})")<?php$ch = curl_init(getenv('MAFPAY_URL') . '/api/v1/' . getenv('MAFPAY_ENDPOINT_KEY') . '/providers/?country=SN');curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-Api-Key: ' . getenv('MAFPAY_PK'), 'X-Api-Secret: ' . getenv('MAFPAY_SK')],]);$providers = json_decode(curl_exec($ch), true)['data'];foreach ($providers as $p) { echo "Bouton : Payer avec {$p['name']} (code {$p['code']})\n"; }La réponse :
{ "environment": "sandbox", "data": [ { "code": "ORANGE_MONEY_SN", "name": "Orange Money Sénégal", "country": "SN", "country_name": "Sénégal" }, { "code": "WAVE_SN", "name": "Wave Sénégal", "country": "SN", "country_name": "Sénégal" } ]}Utilisez data pour construire vos boutons « Payer avec… ». Si la liste est vide, aucun moyen de paiement n’est activé : voir ci-dessous.
Activer et configurer un provider
Dans le portail : Applications → votre application → Providers. Les réglages sont propres à chaque application et à chaque environnement (sandbox et live séparés).
- Sandbox : saisissez les valeurs de test ci-dessous, puis activez le provider. MafPay simule l’opérateur (aucun argent réel).
- Live : vous renseignez vos identifiants marchands fournis par l’opérateur, puis vous activez.
| Provider | Identifiants à fournir en live |
|---|---|
| Wave | api_key (clé d’API Wave) et webhook_secret (secret de signature des notifications) |
| Orange Money | client_id, client_secret et merchant_code (code marchand) |
Valeurs de test du sandbox
En sandbox, MafPay vérifie vos identifiants comme le ferait l’opérateur : une valeur incorrecte fait échouer l’initiation (« Identifiants sandbox invalides »). Saisissez exactement ces valeurs de test :
| Moyen de paiement | Champ | Valeur de test |
|---|---|---|
| Wave | Clé API | sandbox_wave_key_demo |
| Wave | Secret de webhook (facultatif ; s’il est renseigné, il doit être exact) | whsec_sandbox_demo |
| Orange Money | Client ID | sandbox_client_id |
| Orange Money | Client secret | sandbox_client_secret |
| Orange Money | Code marchand | 123456 |
Wave : l’ordre à suivre (en live)
Wave ne vous donne son webhook_secret qu’après que vous avez enregistré l’adresse de notification de MafPay dans le portail Wave. Donc :
- Dans MafPay, enregistrez d’abord votre
api_keyWave. - Copiez l’adresse de webhook MafPay affichée pour Wave (elle ressemble à
https://api.mafpay.metalafrique-it.com/api/v1/{endpoint_key}/webhooks/wave/). - Collez-la dans votre portail Wave. Wave vous donne alors un secret.
- Revenez dans MafPay et ajoutez ce
webhook_secret.
Sans webhook_secret, tout webhook Wave en live est refusé (c’est une protection : n’importe qui ne peut pas déclarer un paiement réussi).
Particularités de chaque provider
Wave
- Le client paie via l’application Wave.
deep_linkscontient une cléWave. - En franc CFA (
XOF), utilisez des montants entiers.
Orange Money
- Uniquement des montants entiers (
"2500", pas"2500.50") : sinon400« Orange Money n’accepte que des montants entiers (sans décimales). » deep_linkscontient deux liens :OM(application Orange Money) etMAXIT(application Max it). Proposez les deux ou choisissez selon votre public.- Chaque opérateur fixe sa propre durée de validité (quelques minutes chez Orange en sandbox) : regardez toujours
expires_at.