Pour commencer
Mode Test et mode Réel
Développez sur les données Test avec le simulateur Abuna ou les bacs à sable des prestataires, puis passez en Réel avec le même code.
Chaque application possède deux environnements, Test et Réel. Chacun a son propre ID d'application, ses clés secrètes, sa clé publiable, son secret de signature de webhook, son URL de webhook et ses données. L'ID d'application dans le chemin détermine le mode. Il n'existe aucun paramètre de mode.
Dans le tableau de bord, utilisez le sélecteur Test / Réel pour passer de l'un à l'autre. Dans l'API, GET /v1/apps/{appID} renvoie l'environment de l'application, test ou live. Chaque corps de webhook le porte aussi.
Mode Test
Développez et testez avec l'ID d'application Test et sa clé sk_test_. Le mode Test fonctionne comme le mode Réel, à ces différences près :
- Les paiements ne déplacent aucun argent. Ils passent par le simulateur Abuna, ou par le bac à sable d'un prestataire que vous connectez. Voir Paiements de test.
- Vous n'avez pas besoin d'un e-mail vérifié.
- Les limites de forfait sur les abonnés ne s'appliquent pas, et votre forfait ne rend jamais une application Test en lecture seule.
- Les e-mails et messages Telegram destinés aux clients ne sont pas envoyés. Abuna enregistre chacun comme un événement
notification.captured, qui n'atteint jamais votre endpoint de webhook. La liste des notifications reste vide. - Les
success_urletcancel_urld'une session de paiement peuvent être des URLhttpsurlocalhost,127.0.0.1ou[::1]. Le mode Réel n'accepte quehttps. - Une nouvelle application Test ne copie pas l'URL de webhook de l'application Réelle. Définissez-en une pour Test séparément, sous Webhooks en mode Test.
Paiements de test
Une application Test peut toujours encaisser des paiements via le simulateur Abuna. Un propriétaire d'équipe peut aussi connecter le bac à sable de chaque prestataire, pawaPay, Notch Pay et Flutterwave, côte à côte. La page Paiements, sous Paramètres en mode Test, liste le simulateur et chaque bac à sable connecté. Chaque bac à sable a sa propre URL de rappel chez le prestataire.
Sur une page de paiement Test, le payeur choisit sous Tester avec : Simulateur Abuna, par défaut, ou un bac à sable connecté, comme bac à sable pawaPay. Les pages de paiement Réelles n'offrent jamais ce choix.
- Simulateur Abuna : vous choisissez chaque résultat sur la page de paiement. Voir Paiements simulés.
- Un bac à sable de prestataire : la page de paiement propose les réseaux du prestataire, un champ de numéro de téléphone et les numéros de test du prestataire. Choisir un numéro de test remplit le numéro de téléphone et son réseau. Les paiements sont mis à jour et échouent selon ce que le prestataire rapporte. Voir Numéros de test.
Connectez un bac à sable pour voir comment votre prestataire se comporte avant de passer en Réel. Le déconnecter laisse le simulateur et vos autres bacs à sable tels quels. Les deux sont gratuits et illimités sur tous les forfaits. Voir Tester avec le bac à sable de votre prestataire.
Paiements simulés
Le simulateur Abuna a une méthode de paiement par résultat. Sur la page de paiement Test, le client en choisit une :
- Paiement réussi (
test) : le paiement réussit. - Demande une approbation, puis réussit (
test_pending) : le paiement est d'abordpending, comme une demande de mobile money. Il réussit à la première vérification de statut après 10 secondes. La page de paiement s'en charge pour vous. - Paiement refusé (
test_declined) : échoue avec402et le codepayment_declined. - Solde insuffisant (
test_insufficient) : échoue avec402et le codeinsufficient_funds.
Quand votre serveur débite une facture avec POST /v1/apps/{appID}/invoices/{id}/charge, une application Test utilise toujours la méthode test du simulateur, donc le paiement réussit.
Pour essayer un autre résultat sans la page de paiement, envoyez-le à l'endpoint du lien de paiement. Cet endpoint ne demande aucune clé. Utilisez le pay_token de la période de facturation.
curl https://api.abuna.app/v1/pay/3a7e1c9f5b2d8a4e6c0f7b3d9a1e5c8f2b6d \
-H "Content-Type: application/json" \
-d '{"method": "test_declined"}'{
"code": "payment_declined",
"error": "payment was declined"
}Pour payer plutôt via un bac à sable connecté, ajoutez provider : pawapay, notchpay ou flutterwave. Laissez-le de côté pour le simulateur. method est alors l'un des réseaux du prestataire, et phone_number est le numéro à débiter au lieu de celui du client. Un prestataire que l'application Test n'a pas connecté renvoie 422 avec le code payment_unavailable, et il en va de même pour provider sur un lien de paiement Réel.
curl https://api.abuna.app/v1/pay/3a7e1c9f5b2d8a4e6c0f7b3d9a1e5c8f2b6d \
-H "Content-Type: application/json" \
-d '{"provider": "pawapay", "method": "MTN_MOMO_CMR", "phone_number": "+237653456039"}'Numéros de test
Le bac à sable de chaque prestataire règle un paiement selon le numéro de téléphone débité. Les pages de paiement Test affichent les mêmes numéros que ces tableaux, pour le réseau choisi. La raison de l'échec que voit votre client dépend de ce que le prestataire rapporte.
Les numéros marqués Bientôt disponible sont sur des réseaux XOF. Abuna ne facture qu'en XAF pour l'instant, donc les pages de paiement ne les proposent pas encore.
- pawaPay : le bac à sable ne demande jamais de code PIN. Un numéro qui ne reçoit pas de réponse reste
pending. Voir les numéros de test de pawaPay. - Notch Pay : le dernier chiffre détermine le résultat. Notch Pay vérifie aussi la fraude dans son bac à sable, donc n'utilisez pas un seul numéro pour tous les tests. Il n'a pas de numéros de test pour le Bénin ni le Burkina Faso. Voir la page de test de Notch Pay.
- Flutterwave : son mode test valide chaque paiement mobile money après quelques secondes, quel que soit le numéro. Il n'a aucun numéro qui fait échouer un paiement au Cameroun, utilisez donc le simulateur Abuna pour tester les échecs. Voir la page de test de Flutterwave.
pawaPay
| Numéro | Réseau | Ce qui se passe |
|---|---|---|
+237653456789 | MTN Mobile Money Cameroon | Réussit |
+237653456129 | MTN Mobile Money Cameroon | Pas de réponse, reste en attente |
+237653456019 | MTN Mobile Money Cameroon | Échec : limite du compte atteinte |
+237653456029 | MTN Mobile Money Cameroon | Échec : aucun compte mobile money |
+237653456039 | MTN Mobile Money Cameroon | Échec : non approuvé sur le téléphone |
+237653456069 | MTN Mobile Money Cameroon | Échec : refusé |
+237693456789 | Orange Money Cameroon | Réussit |
+237693456129 | Orange Money Cameroon | Pas de réponse, reste en attente |
+237693456019 | Orange Money Cameroon | Échec : limite du compte atteinte |
+237693456029 | Orange Money Cameroon | Échec : aucun compte mobile money |
+237693456039 | Orange Money Cameroon | Échec : non approuvé sur le téléphone |
+237693456049 | Orange Money Cameroon | Échec : solde trop bas |
+237693456069 | Orange Money Cameroon | Échec : refusé |
+2250503456789 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Réussit |
+2250503456129 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Pas de réponse, reste en attente |
+2250503456029 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Échec : aucun compte mobile money |
+2250503456039 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+2250503456069 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Échec : refusé |
+2250734567890 | Orange Money Côte d'Ivoire (Bientôt disponible) | Réussit |
+2250734567130 | Orange Money Côte d'Ivoire (Bientôt disponible) | Pas de réponse, reste en attente |
+2250734567030 | Orange Money Côte d'Ivoire (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+2250734567060 | Orange Money Côte d'Ivoire (Bientôt disponible) | Échec : refusé |
+221763456789 | Free Money Senegal (Bientôt disponible) | Réussit |
+221763456129 | Free Money Senegal (Bientôt disponible) | Pas de réponse, reste en attente |
+221763456049 | Free Money Senegal (Bientôt disponible) | Échec : solde trop bas |
+221763456069 | Free Money Senegal (Bientôt disponible) | Échec : refusé |
+221773456789 | Orange Money Senegal (Bientôt disponible) | Réussit |
+221773456129 | Orange Money Senegal (Bientôt disponible) | Pas de réponse, reste en attente |
+221773456029 | Orange Money Senegal (Bientôt disponible) | Échec : aucun compte mobile money |
+221773456049 | Orange Money Senegal (Bientôt disponible) | Échec : solde trop bas |
+221773456069 | Orange Money Senegal (Bientôt disponible) | Échec : refusé |
+22951345789 | MTN Mobile Money Benin (Bientôt disponible) | Réussit |
+22951345129 | MTN Mobile Money Benin (Bientôt disponible) | Pas de réponse, reste en attente |
+22951345029 | MTN Mobile Money Benin (Bientôt disponible) | Échec : aucun compte mobile money |
+22951345039 | MTN Mobile Money Benin (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+22951345069 | MTN Mobile Money Benin (Bientôt disponible) | Échec : refusé |
+22995345789 | Moov Money Benin (Bientôt disponible) | Réussit |
+22995345639 | Moov Money Benin (Bientôt disponible) | Pas de réponse, reste en attente |
+22995345679 | Moov Money Benin (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+22995345529 | Moov Money Benin (Bientôt disponible) | Échec : refusé |
+22602345678 | Moov Money Burkina Faso (Bientôt disponible) | Réussit |
+22602345138 | Moov Money Burkina Faso (Bientôt disponible) | Pas de réponse, reste en attente |
+22602345048 | Moov Money Burkina Faso (Bientôt disponible) | Échec : solde trop bas |
+22602345068 | Moov Money Burkina Faso (Bientôt disponible) | Échec : refusé |
+242063456789 | MTN Mobile Money Congo | Réussit |
+242063456129 | MTN Mobile Money Congo | Pas de réponse, reste en attente |
+242063456029 | MTN Mobile Money Congo | Échec : aucun compte mobile money |
+242063456039 | MTN Mobile Money Congo | Échec : non approuvé sur le téléphone |
+242063456049 | MTN Mobile Money Congo | Échec : solde trop bas |
+242063456069 | MTN Mobile Money Congo | Échec : refusé |
+242053456789 | Airtel Money Congo | Réussit |
+242053456129 | Airtel Money Congo | Pas de réponse, reste en attente |
+242053456039 | Airtel Money Congo | Échec : non approuvé sur le téléphone |
+242053456049 | Airtel Money Congo | Échec : solde trop bas |
+242053456069 | Airtel Money Congo | Échec : refusé |
+24174345678 | Airtel Money Gabon | Réussit |
+24174345128 | Airtel Money Gabon | Pas de réponse, reste en attente |
+24174345048 | Airtel Money Gabon | Échec : solde trop bas |
+24174345068 | Airtel Money Gabon | Échec : refusé |
Notch Pay
| Numéro | Réseau | Ce qui se passe |
|---|---|---|
+237670000000 | MTN Mobile Money Cameroon | Réussit |
+237670000001 | MTN Mobile Money Cameroon | Échec : solde trop bas |
+237670000002 | MTN Mobile Money Cameroon | Échec : refusé |
+237670000003 | MTN Mobile Money Cameroon | Pas de réponse, reste en attente |
+237670000004 | MTN Mobile Money Cameroon | Échec : non approuvé sur le téléphone |
+237690000000 | Orange Money Cameroon | Réussit |
+237690000001 | Orange Money Cameroon | Échec : solde trop bas |
+237690000002 | Orange Money Cameroon | Échec : refusé |
+237690000003 | Orange Money Cameroon | Pas de réponse, reste en attente |
+237690000004 | Orange Money Cameroon | Échec : non approuvé sur le téléphone |
+225050000000 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Réussit |
+225050000001 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Échec : solde trop bas |
+225050000002 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Échec : refusé |
+225050000003 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Pas de réponse, reste en attente |
+225050000004 | MTN Mobile Money Côte d'Ivoire (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+225070000000 | Orange Money Côte d'Ivoire (Bientôt disponible) | Réussit |
+225070000001 | Orange Money Côte d'Ivoire (Bientôt disponible) | Échec : solde trop bas |
+225070000002 | Orange Money Côte d'Ivoire (Bientôt disponible) | Échec : refusé |
+225070000003 | Orange Money Côte d'Ivoire (Bientôt disponible) | Pas de réponse, reste en attente |
+225070000004 | Orange Money Côte d'Ivoire (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+225010000000 | Moov Money Côte d'Ivoire (Bientôt disponible) | Réussit |
+225010000001 | Moov Money Côte d'Ivoire (Bientôt disponible) | Échec : solde trop bas |
+225010000002 | Moov Money Côte d'Ivoire (Bientôt disponible) | Échec : refusé |
+225010000003 | Moov Money Côte d'Ivoire (Bientôt disponible) | Pas de réponse, reste en attente |
+225010000004 | Moov Money Côte d'Ivoire (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+221770000000 | Orange Money Senegal (Bientôt disponible) | Réussit |
+221770000001 | Orange Money Senegal (Bientôt disponible) | Échec : solde trop bas |
+221770000002 | Orange Money Senegal (Bientôt disponible) | Échec : refusé |
+221770000003 | Orange Money Senegal (Bientôt disponible) | Pas de réponse, reste en attente |
+221770000004 | Orange Money Senegal (Bientôt disponible) | Échec : non approuvé sur le téléphone |
+221760000000 | Free Money Senegal (Bientôt disponible) | Réussit |
+221760000001 | Free Money Senegal (Bientôt disponible) | Échec : solde trop bas |
+221760000002 | Free Money Senegal (Bientôt disponible) | Échec : refusé |
+221760000003 | Free Money Senegal (Bientôt disponible) | Pas de réponse, reste en attente |
+221760000004 | Free Money Senegal (Bientôt disponible) | Échec : non approuvé sur le téléphone |
Flutterwave
| Numéro | Réseau | Ce qui se passe |
|---|---|---|
+237670000000 | MTN Mobile Money Cameroon | Réussit |
+237690000000 | Orange Money Cameroon | Réussit |
Mode Réel
Le mode Réel facture de vrais clients avec l'ID d'application Réel et sa clé sk_live_. Avant qu'il fonctionne, trois éléments sont nécessaires :
- Un e-mail vérifié pour le propriétaire d'équipe. D'ici là, chaque endpoint Réel sauf
GET /v1/apps/{appID}renvoie403avec le codeemail_unverified. - Un prestataire de paiement connecté. Connectez votre compte pawaPay, Notch Pay ou Flutterwave dans le tableau de bord. D'ici là, vous pouvez configurer des produits, des tarifs et des clients. Démarrer un abonnement ou encaisser un paiement renvoie
422avec le codenot_accepting_payments. - Un contact de support. Ajoutez un e-mail ou une URL de support sous Paramètres, puis Général. D'ici là, démarrer un abonnement ou encaisser un paiement renvoie
422avec le codenot_accepting_payments.
GET /v1/apps/{appID} indique où vous en êtes. Son objet payments contient email_verified, provider_connected, support_contact et ready.
Les paiements Réels sont débités sur le téléphone du client via votre propre compte prestataire. Abuna ne détient jamais l'argent.
Passer en Réel
Changez l'ID d'application et la clé secrète ensemble. Votre code reste le même. Le mode Réel démarre sans données : les produits, tarifs, clients et abonnements ne sont pas repris depuis Test, recréez-les donc en Réel. Définissez votre endpoint de webhook Réel et utilisez le secret de signature de webhook Réel pour vérifier les signatures.
Étapes suivantes
- Authentification et clés d'APIAuthentifiez vos requêtes avec votre clé secrète, et sachez quelle clé va où.
- Connecter un prestataire de paiementConnectez votre propre compte pawaPay, Notch Pay ou Flutterwave pour que vos clients vous paient directement. D'autres arrivent.
- Liste de contrôle avant le passage en RéelTout ce qu'il faut vérifier avant d'encaisser de vrais paiements.