Aller au contenu

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 :

GET/api/v1/{endpoint_key}/providers/?country=SN

Le paramètre country (facultatif) filtre par pays (code à 2 lettres).

Fenêtre de terminal
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 os
import 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 :

  1. Dans MafPay, enregistrez d’abord votre api_key Wave.
  2. Copiez l’adresse de webhook MafPay affichée pour Wave (elle ressemble à https://api.mafpay.metalafrique-it.com/api/v1/{endpoint_key}/webhooks/wave/).
  3. Collez-la dans votre portail Wave. Wave vous donne alors un secret.
  4. 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_links contient une clé Wave.
  • En franc CFA (XOF), utilisez des montants entiers.

Orange Money

  • Uniquement des montants entiers ("2500", pas "2500.50") : sinon 400 « Orange Money n’accepte que des montants entiers (sans décimales). »
  • deep_links contient deux liens : OM (application Orange Money) et MAXIT (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.