Comment accepter un premier paiement Wave ou Orange Money par API ?
Créer une clé de test, envoyer POST /v1/payments en cURL, Node.js, PHP, Python ou Go, rediriger le client vers checkout_url puis recevoir le webhook.
Créer une clé de test dans le tableau de bord, puis envoyer
POST /v1/payments depuis le serveur avec rail à sn_wave (Wave) ou
sn_orange (Orange Money). La réponse contient checkout_url, adresse où
rediriger le client ; en mode test, aucun argent réel ne circule.
1. Créer une clé de test
Ouvrir le tableau de bord 221 Pay (créer un compte si
nécessaire, sans NINEA ni RCCM), puis Développeurs > Clés API : créer une
clé avec la portée payments. Une clé de test commence par sk_221_pay_test_ ;
son secret n’est affiché qu’une fois. URL de base : https://apps.orvlabs.com
export API_KEY="sk_221_pay_test_…"
export API_URL="<URL de base ci-dessus>"2. Créer le paiement
Idempotency-Key évite un doublon si la requête est renvoyée. amount est une
chaîne en XOF entiers : "5000" vaut 5 000 F CFA.
curl -X POST "$API_URL/v1/payments" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: commande-1042" \
-H "Content-Type: application/json" \
-d '{
"amount": "5000",
"currency": "XOF",
"rail": "sn_wave",
"merchant_reference": "commande-1042",
"return_url": "https://boutique.example/paiement/retour",
"customer_phone": "77 123 45 67"
}'Rediriger le client vers checkout_url. Pour Orange Money au Sénégal, rail
vaut sn_orange. Champs et statuts : Paiements.
3. Recevoir le résultat
À la confirmation, 221 Pay envoie l’événement signé payment.succeeded au
point de terminaison webhook du projet. Le serveur vérifie la signature sur le
corps brut, ignore un id d’événement déjà traité, puis relit le paiement
avec GET /v1/payments/{id}. Exemples de vérification et catalogue des
événements : Webhooks.
Ensuite
- Tests : parcourir remboursement et retrait sans argent réel.
- Liens de paiement : encaisser sans écrire de code.
- Combien coûte 221 Pay ?
Mis à jour le