Guide d'intégration rapide
Ce guide vous permet d'accepter votre premier paiement en moins de 10 minutes.
1. Obtenir un compte marchand
L'ouverture de compte n'est pas self-service : un administrateur MabiPay provisionne votre marchand. Contactez-nous, puis vérifiez que ces trois étapes sont bien réalisées côté MabiPay :
- Création du marchand (nom, email, pays).
- Activation du compte — un marchand nouvellement créé est au statut
pending, et toutes les requêtes API renvoient401tant qu'il n'est pasactive. - Création de votre utilisateur rattaché au marchand : vous recevez par email un mot de passe temporaire pour vous connecter à https://app.dev.mabipay.com.
2. Récupérer vos clés API
Connectez-vous au dashboard, puis dans Paramètres → Clés API, générez une clé pour l'environnement sandbox.
mbp_sandbox_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Elle est stockée hachée : conservez-la immédiatement. Si vous la perdez, régénérez-la (l'ancienne est alors invalidée).
3. Installer le SDK
npm install @mabipay/sdk
4. Initier un paiement
import { MabiPayClient } from "@mabipay/sdk";
const mabipay = new MabiPayClient({
apiKey: process.env.MABIPAY_API_KEY!,
environment: "sandbox",
});
async function creerPaiement(commande: {
id: string;
montant: number;
telephone: string;
}) {
const payment = await mabipay.payments.initiate({
amount: commande.montant, // entier, min. 100
currency: "XOF",
operator: "OM_CI", // WAVE_CI | MTN_CI | MOOV_CI | OM_CI
merchantRef: commande.id, // requis
customerPhone: commande.telephone,
notifyUrl: "https://votreapi.com/webhooks/mabipay",
successUrl: "https://votresite.com/merci",
failedUrl: "https://votresite.com/erreur",
});
// `checkoutUrl` = page de paiement hébergée MabiPay (toujours présente).
// `paymentUrl` = URL opérateur, parfois `null` → ne pas l'utiliser seule.
return payment.checkoutUrl;
}
5. Recevoir les notifications
import { verifyWebhookSignature } from "@mabipay/sdk";
app.post(
"/webhooks/mabipay",
express.raw({ type: "*/*" }),
async (req, res) => {
const valid = verifyWebhookSignature({
secret: process.env.MABIPAY_WEBHOOK_SECRET!,
signature: req.headers["x-mabipay-signature"] as string,
payload: req.body.toString(),
});
if (!valid) return res.status(401).send("Unauthorized");
const { event, reference, status } = JSON.parse(req.body.toString());
if (event === "payment.success") {
await marquerCommandePayee(reference);
}
res.json({ ok: true });
},
);
6. Passer en production
- Créez une clé API de production (
mbp_live_...) - Changez
environment: 'live'dans votre config - Configurez votre URL de webhook en production
- Testez un vrai paiement de faible montant (le minimum accepté est
100)
En sandbox, aucun argent réel n'est engagé : les appels sont routés vers l'environnement de test de l'opérateur.
En revanche, les paiements ne se confirment pas tout seuls : le statut évolue via le callback de l'opérateur, exactement comme en production. Vous devez donc aller au bout du parcours de paiement pour observer le passage à success.
Chaque environnement exige un credential opérateur actif côté MabiPay. Si aucun credential n'est configuré pour l'environnement de votre clé, l'API répond 503 Service Unavailable.