Aller au contenu

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

Terminal
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.

Terminal
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

Mis à jour le