Démarrage rapide
Ce guide vous montre comment accepter votre premier paiement avec SahelPay.
Prérequis
- Un compte SahelPay (créer un compte)
- Vos clés API (disponibles dans le dashboard)
1. Créer un paiement
curl -X POST https://api.sahelpay.ml/v1/payments \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "XOF",
"payment_method": "MOBILE_MONEY",
"country": "ML",
"customer": {
"phone": "+22370123456"
},
"return_url": "https://votre-site.com/checkout/return"
}'
2. Rediriger le client
Après la création, redirigez le client vers redirect_url :
window.location.href = payment.redirectUrl;
Le client sera redirigé vers la page de checkout SahelPay où il pourra choisir son mode de paiement.
3. Recevoir le webhook
Le webhook est la source de vérité. Ne marquez jamais une commande comme “payée” sans avoir reçu le webhook payment.success.
Configurez votre endpoint webhook dans le dashboard, puis implémentez le handler :
// POST /api/webhooks/sahelpay
export async function POST(request) {
const rawBody = await request.text();
const signature = request.headers.get('x-sahelpay-signature');
// Vérifier la signature
const isValid = sahelpay.verifyWebhook(rawBody, signature);
if (!isValid) {
return Response.json({ error: 'Invalid signature' }, { status: 401 });
}
const { event, data } = JSON.parse(rawBody);
if (event === 'payment.success') {
// Marquer la commande comme payée
await updateOrder(data.metadata.order_id, { status: 'paid' });
}
return Response.json({ received: true });
}
4. Page de retour
Quand le client revient sur votre site via return_url, affichez un message de confirmation :
// /checkout/return?payment_intent_id=xxx
const paymentId = searchParams.get('payment_intent_id');
const status = await sahelpay.getPaymentStatus(paymentId);
if (status.status === 'SUCCESS') {
// Afficher "Paiement confirmé"
} else if (status.status === 'PENDING') {
// Afficher "En cours de traitement..."
}
La page de retour sert uniquement à l’UX. Le statut définitif vient toujours du webhook.
Prochaines étapes