Introduction

Ce document prépare et permet à tout développeur d'intégrer de manière transparente l'API de Digifar pour des services tels que :

  • Le crédit d’appel
  • Les recharges de forfaits data
  • L'encaissement Mobile Money
  • Les recharges des cartes Visa et Mastercard
  • Le paiement via les cartes Visa et Mastercard

Notre API est conçue selon les principes REST. Elle utilise des URL faciles à prévoir, centrées sur les ressources, et elle accepte et renvoie des informations au format JSON. De plus, elle applique les règles HTTP standard pour les codes de réponse, l'authentification et les verbes. Nous vous fournirons séparément la valeur BASEURL. Vous pouvez utiliser l'API dans un environnement de test sûr, qui ne touchera pas à vos données réelles et ne se connectera à aucun réseau bancaire ou d'argent mobile. Le type de clé API que vous utilisez pour vérifier la demande déterminera s'il s'agit d'un mode en direct ou d'un mode de test. N'oubliez pas que toutes les demandes d'API doivent être envoyées via HTTPS. Les tentatives effectuées via HTTP non sécurisé ne fonctionneront pas. De même, les demandes d'API effectuées sans authentification échoueront.


Authentification

Guide simplifié de l'intégration de l'API

Ce guide vous aidera à configurer et à gérer vos clés API, à comprendre les différents modes de fonctionnement et à utiliser les clés correctement pour des opérations sécurisées. Comprendre les clés API

Les clés API sont les "mots de passe" qui permettent à votre application d'accéder à notre API. Gardez ces clés privées pour préserver la sécurité de vos transactions. Vous pouvez gérer ces clés à partir de votre tableau de bord. Notez que le partage de ces clés dans des lieux publics tels que GitHub ou dans le code côté client n'est pas recommandé en raison des risques de sécurité. Obtenir les clés d'API

Vous pouvez trouver vos clés d'API en vous connectant à votre compte et en allant dans le tableau de bord. Si vous avez des difficultés à y accéder, contactez le propriétaire de votre compte. Il se peut qu'il doive vous accorder des autorisations supplémentaires. Types de clés API

Il existe quatre clés API que nous vous fournissons :

  • Clé secrète en mode test : Pour effectuer des appels API côté serveur en mode test.
  • Clé publiable en mode test : Pour tester le code côté client dans les applications.
  • Clé secrète du mode Live : Pour effectuer des appels API côté serveur en mode réel.
  • Clé publiable en mode réel : Pour le code côté client dans les applications une fois qu'elles sont en ligne.

Modes de fonctionnement

Notre API fonctionne selon deux modes : le mode test et le mode réel.

  • Mode test : Utilisez ce mode lorsque vous êtes encore en train de développer votre application. Il simule les interactions de l'API mais ne traite pas les paiements réels.
  • Mode réel : Utilisez ce mode lorsque votre application est prête à traiter de vraies transactions et à accepter de vrais paiements.

Comment utiliser vos clés API

Selon le mode dans lequel vous vous trouvez (test ou réel), utilisez les clés correspondantes.

  • Clés secrètes : Utilisez-les pour les appels API côté serveur. Protégez ces clés ; ne les exposez pas publiquement.
  • Clés publiables : Elles peuvent être incluses dans le code côté client de votre application. Elles sont utilisées pour collecter les informations de paiement en toute sécurité.

Sécurisez vos clés d'API

Votre clé API secrète peut effectuer n'importe quelle transaction en votre nom. Pour la sécuriser :

  • Limitez l'accès aux personnes qui en ont réellement besoin.
  • Ne la laissez pas dans les systèmes de contrôle de version.
  • Utilisez un gestionnaire de mots de passe ou un service de gestion des secrets pour la stocker.
  • N'incluez pas votre clé d'API secrète dans des applications mobiles ou dans d'autres endroits où elle peut être extraite.

POSTCréation d'un compte

Pour intégrer un nouvel utilisateur à la plateforme Digifar. L'utilisateur de l'API doit fournir :

  • Un email
  • Un mot de passe.
Paramètre de la demande Exigée Description
email Oui Adresse e-mail
mot de passe Oui Mot de passe de l'utilisateur de l'API
confirmerMotdepasse Oui Confirmer le mot de passe

Exemple :

http:// {baseURL}/api/account/register
		
				
				email":"test@account.com"
"password":"xxxxxxxxxx"
"confirmPassword":"xxxxxxxxxx"

Réponse

Paramètre de la demande Signification Description
200 Réussite Utilisateur créé avec succès

POSTCréation d'un Token d'accès

Pour obtenir un jeton d'accès, vous devez d'abord obtenir votre nom d'utilisateur et votre secret client auprès de Digifar pour le mode LIVE ou TEST.

Paramètre de la demande Exigée Description
Nom d'utilisateur Oui Id client de votre compte
mot de passe Oui Code secret du client de votre compte
Typedesubvention Oui Le type d'accès spécifié. Par exemple, le mot de passe

Exemple :

http://{baseURL}/token
	
									
				"nom d'utilisateur":"test@account.com"
"mot de passe":"xxxxxxxxxx"
"typedesubvention":"mot de passe"

Transmettre la demande en utilisant l'option x-www-form-urlencoded dans le corps de la demande.

Réponse Json

	
						
		{
"access_token": "GO7PpMH6pUSmGocV8g7KOlomAJ86f9vfEh74ZVP2x8OTcbk6eb
lGd3bPofM4xVGyhm0W9FbsDU_1eJ92A6wy2U9OQCow4tubISgKnJqwxVcuYYsUyQ9Wr
Ek8YJ1RRbXte_0iaQJBYX9e0GCkRSucETqvmxrvbWCQQ8bVebckKs0FPVPe74NOQK5i
Kn5Ax43B7LvSfC_KOJaPkDvhUYGQ9Wgi7IWtaHoQsN7xKwW78jyef9StRWRZfyRnNjO
9oC6G9f0euGnTaHCa97wc2K55RVoqr9_CUPJgkKQruVQnY_OwZHfrwAP6kmmHuVsyH2
zjT2QI7TCWjMosDsBWFkW4x3TqenDuAQi9olNkaxpMTgU4NvvQbquVGYmvDHgaNcB6Q
kXL-5oY44zVZgJyBRWpFfhHwRtYK02QPteuDVOtFJZXeLjqPJrRlCCBvkeQjANZmUs7
CjuCt31HUjCo1VP2FlC3otD0-sYbs_FHF6YBCQw",
"token_type": "bearer",
"expires_in": 1209599,
"userName": "test@gmail.com",
".issued": "Tue, 20 Feb 2024 12:49:22 GMT",
".expires": "Tue, 05 Mar 2024 12:49:22 GMT"
}

Services

POSTAchat de crédit d’appel

http://{baseURL}/api/TopUp/Airtime
Paramètre de la demande Exigée Description
Code pays Oui Le code de pays ISO à deux (2) lettres. Par exemple BJ pour la République du Bénin
Champ personnalisé Oui Champ personnalisé pour transmettre des données
Id transaction marchand Oui Numéro d'identification unique de la transaction du commerçant. Chaque demande doit être accompagnée d'un identifiant de transaction unique du commerçant
Nom du commerçant Oui Nom du commerçant
Montant Oui Quantité de temps de communication ou de données à acheter
Compte recepteur Oui Le numéro de téléphone mobile du destinataire
Webhook URL Oui Adresse web de rappel à laquelle envoyer les rappels après chaque demande
Canal Oui Type d'achat. Temps de communication ou données
Description Oui Description de l'achat
Devise Oui Le code ISO de la monnaie. Exemple XOF pour les francs CFA
Nom du recepteur Oui Nom du bénéficiaire
Prénom du recepteur Oui Prénom du bénéficiaire
Exemple de requête
					
					 
				{
    "country_code":"BJ",
    "custom_field":"any_string",
    "merchant_transaction_id":"66533378458132",
    "merchant_name":"Coris Bank",
    "amount":"400",
    "receiver_account":"+22997752010",
    "webhook_url":" https://webhook.site/3533c510-719c-4f52-9c2d-be163501db09",
    "channel":"airtime",
    "description":"Buying Airtime",
    "currency":"XOF",
    "receiver_last_name":"Aben",
    "receiver_first_name":"Kofi"
				}
						
					
Exemple de réponse
					
 
JSON
{
    "code": 200,
    "message": "Ok",
    "data": {
        "created_at": "2/20/2024",
        "done_at": "2/20/2024",
        "transfer_token": "4ab0c379f5fe4948aa6857e0216f2059",
        "merchant_transaction_id": "66533378458132",
        "merchant_name": "Coris Bank",
        "country_name": "Benin",
        "country_code": "BJ",
        "amount": 400,
        "currency": "XOF",
        "description": "Buying Airtime",
        "channel": "airtime",
        "receiver_account": "+22997752010",
        "receiver_first_name": "Aben",
        "receiver_last_name": "Kofi",
        "webhook_url": " https://webhook.site/3533c510-719c-4f52-9c2d-be163501db09",
        "custom_field": "",
        "status": "SUCCESSFUL"
    }
}
	
		
POSTObtenir le statut de la transaction

Cette demande est utilisée pour obtenir le statut de transaction des demandes de recharge de temps de communication et de données.

http://{baseURL}/api/TopUp/Airtime
Paramètre de la demande Exigée Description
jetondetransfert Oui Jeton de transfert obtenu à partir de la réponse de la recharge de temps d'antenne ou de données.
http://{baseURL}/api/TopUp/TransactionStatus?transfertoken=3D8BEC92-DBD3-457C-9C22-EEFCCEB7EDA2
					
 
JSON
{
    "code": 200,
    "message": "Ok",
    "data": {
        "created_at": "2/20/2024 12:00:00 AM",
        "done_at": "2/20/2024 12:00:00 AM",
        "transfer_token": "3d8bec92-dbd3-457c-9c22-eefcceb7eda2",
        "merchant_transaction_id": "66533378458131",
        "merchant_name": "Coris Bank",
        "country_name": "Benin",
        "country_code": "BJ",
        "amount": 400,
        "currency": "XOF",
        "description": "Buying Airtime",
        "channel": "airtime",
        "receiver_account": "+22997752010",
        "receiver_first_name": "Aben",
        "receiver_last_name": "Kofi",
        "webhook_url": " https://webhook.site/3533c510-719c-4f52-9c2d-be16",
        "custom_field": "",
        "status": "SUCCESSFUL"
    }
}
	
		

POSTRecharges de forfaits data

http://{baseURL}/api/TopUp/data
Paramètre de la demande Exigée Description
Code pays Oui Le code de pays ISO à deux (2) lettres. Par exemple BJ pour la République du Bénin
Champ personnalisé Oui Champ personnalisé pour transmettre des données
Id transaction marchand Oui Numéro d'identification unique de la transaction du commerçant. Chaque demande doit être accompagnée d'un identifiant de transaction unique du commerçant
Nom du commerçant Oui Nom du commerçant
Montant Oui Quantité de temps de communication ou de données à acheter
Compte recepteur Oui Le numéro de téléphone mobile du destinataire
Webhook URL Oui Adresse web de rappel à laquelle envoyer les rappels après chaque demande
Canal Oui Type d'achat. Temps de communication ou données
Description Oui Description de l'achat
Devise Oui Le code ISO de la monnaie. Exemple XOF pour les francs CFA
Nom du recepteur Oui Nom du bénéficiaire
Prénom du recepteur Oui Prénom du bénéficiaire
Exemple de requête
					
					 
				{
    "country_code":"BJ",
    "custom_field":"any_string",
    "merchant_transaction_id":"66533378458132",
    "merchant_name":"Coris Bank",
    "amount":"400",
    "receiver_account":"+22997752010",
    "webhook_url":" https://webhook.site/3533c510-719c-4f52-9c2d-be163501db09",
    "channel":"data",
    "description":"Buying data",
    "currency":"XOF",
    "receiver_last_name":"Aben",
    "receiver_first_name":"Kofi"
				}
						
					
Exemple de réponse
					
 
JSON
{
    "code": 200,
    "message": "Ok",
    "data": {
        "created_at": "2/20/2024",
        "done_at": "2/20/2024",
        "transfer_token": "4ab0c379f5fe4948aa6857e0216f2059",
        "merchant_transaction_id": "66533378458132",
        "merchant_name": "Coris Bank",
        "country_name": "Benin",
        "country_code": "BJ",
        "amount": 400,
        "currency": "XOF",
        "description": "Buying data",
        "channel": "data",
        "receiver_account": "+22997752010",
        "receiver_first_name": "Aben",
        "receiver_last_name": "Kofi",
        "webhook_url": " https://webhook.site/3533c510-719c-4f52-9c2d-be163501db09",
        "custom_field": "",
        "status": "SUCCESSFUL"
    }
}
	
		
POSTObtenir le statut de la transaction

Cette demande est utilisée pour obtenir le statut de transaction des demandes de recharge de temps de communication et de données.

http://{baseURL}/api/TopUp/data
Paramètre de la demande Exigée Description
jetondetransfert Oui Jeton de transfert obtenu à partir de la réponse de la recharge de temps d'antenne ou de données.
http://{baseURL}/api/TopUp/TransactionStatus?transfertoken=3D8BEC92-DBD3-457C-9C22-EEFCCEB7EDA2
					
 
JSON
{
    "code": 200,
    "message": "Ok",
    "data": {
        "created_at": "2/20/2024 12:00:00 AM",
        "done_at": "2/20/2024 12:00:00 AM",
        "transfer_token": "3d8bec92-dbd3-457c-9c22-eefcceb7eda2",
        "merchant_transaction_id": "66533378458131",
        "merchant_name": "Coris Bank",
        "country_name": "Benin",
        "country_code": "BJ",
        "amount": 400,
        "currency": "XOF",
        "description": "Buying data",
        "channel": "data",
        "receiver_account": "+22997752010",
        "receiver_first_name": "Aben",
        "receiver_last_name": "Kofi",
        "webhook_url": " https://webhook.site/3533c510-719c-4f52-9c2d-be16",
        "custom_field": "",
        "status": "SUCCESSFUL"
    }
}
	
		

POSTEncaissement Mobile Money

Demande d'encaissement

Cette demande est utilisée pour effectuer des paiements en argent mobile pour des services.

http://{baseURL}/api/TopUp/CashOutMobileMoney
Paramètre de la demande Exigée Description
Id marchand Oui Identifiant unique du commerçant
Champ personnalisé Oui Tout paramètre nécessaire
Code pays Oui Le code ISO du pays en deux (2) lettres. Par exemple, BJ pour la République du Bénin
Nom de l'opérateur mobile Oui Nom de l'opérateur de téléphonie mobile. MTN, Orange, etc
Langue Oui Langue ISO à deux lettres
Canal Oui Web ou tpe (TPE pour les appareils mobiles)
Devise Oui Format ISO de la monnaie. Exemple XOF pour CFA
Id de transaction marchand Oui Transaction unique de la demande et doit être générée pour chaque demande.
Montant Oui Montant à payer
URL de retour Oui URL de retour fournie par le commerçant après approbation du paiement par le client (doit être fournie si le canal est Web)
URL d'annulation Oui URL d'annulation fournie par le commerçant après approbation du paiement par le client. (doit être fournie si le canal est Web)
Exemple
	
JSON
{
  "merchant_id": "32666255222",
  "custom_field": "",
  "country_code": "BJ",
  "mobile_operator_name": "MTN",
  "language": "fr",
  "channel": "tpe",
  "currency": "XOF",
  "merchant_transaction_id": "20336655585366",
  "amount": "100",
  "return_url": "https://goole.com",
  "cancel_url": "https://goole.com",
  "payment_account": "22959093476"
}

}
	
	
Réponse
				
	
JSON
{
    "code": 200,
    "message": "Ok",
    "payment": {
        "created_at": "2024-02-22 11:27:45.0",
        "done_at": "2024-02-22 11:27:45.0",
        "transfer_token": "4c225f44cc214bafb8f8a176a48db1ec",
        "merchant_transaction_id": "20336655585366",
        "merchant_name": "",
        "country_code": "BJ",
        "amount": "100",
        "currency": "XOF",
        "payment_account": "22959093476",
        "state": null,
        "status": "InProgress"
    }
}

	

Toutes les demandes de paiement sont placées dans une file d'attente et sont en mode "en attente" ou "en cours". Vous devez donc vérifier l'état de la demande avant d'entreprendre d'autres actions dans la mise en œuvre de votre code.

Vérifier le statut de l'encaissement de Mobile Money

Cette requête est utilisée pour obtenir le statut de la transaction de la demande d'encaissement de Mobile Money.

http://{baseURL}/api/TopUp/CashoutMobileMoneyStatus
Paramètre de la demande Exigée Description
Nom de l'opérateur mobile Oui Nom de l'opérateur de téléphonie mobile. MTN, Orange, etc.
Code pays Oui Le code ISO du pays en deux (2) lettres. Par exemple, BJ pour la République du Bénin
Canal Oui web ou tpe (TPE pour les appareils mobiles)
Id de transaction marchand Oui L'identifiant unique de la transaction utilisé
Exemple

JSON
{
  "mobile_operator_name": "MTN",
  "country_code": "BJ",
  "channel": "tpe",
  "merchant_transaction_id": "20336655585366"
}

	
Réponse

JSON
{
    "code": 200,
    "message": "Ok",
    "payment": {
        "created_at": "2024-02-22 11:27:45.0",
        "done_at": "2024-02-22 11:27:45.0",
        "transfer_token": "",
        "merchant_transaction_id": "20336655585366",
        "merchant_name": "",
        "country_code": "BJ",
        "amount": "100",
        "currency": "XOF",
        "payment_account": "22959093476",
        "state": null,
        "status": "Successful"
    }
}


	

POSTRecharges cartes Visa et Mastercard

http://{baseURL}/api/TopUp/CashInVisaMasterCard

Cette requête est utilisée pour effectuer des recharges pour Visa ou Mastercard prépayées.

Paramètre de la demande Exigée Description
Id transaction marchand Oui Numéro d'identification unique de la transaction du commerçant. Chaque demande doit être accompagnée d'un identifiant de transaction unique du commerçant
Champ personnalisé Non Champ personnalisé pour transmettre des données
Code pays Oui Le code de pays ISO à deux (2) lettres. Par exemple BJ pour la République du Bénin
Langue Oui Langue ISO à deux lettres
Devise Oui Le code ISO de la monnaie. Exemple XOF pour les francs CFA
Id transaction marchand Oui Numéro d'identification unique de la transaction du commerçant. Chaque demande doit être accompagnée d'un identifiant de transaction unique du commerçant
Montant Oui Quantité de temps de communication ou de données à acheter
URL de retour Oui URL de retour fournie par le commerçant après approbation du paiement par le client (doit être fournie si le canal est Web)
URL d'annulation Oui URL d'annulation fournie par le commerçant après approbation du paiement par le client. (doit être fournie si le canal est Web)
État Oui État de la transaction
Exemple de requête

{
  "merchant_id": "326662552488856",
  "custom_field": "",
  "country_code": "CI",
  "language": "En",
  "amount": "100",
  "currency": "XOF",
  "merchant_transaction_id": "5632555428",
  "return_url": "https://goole.com",
  "cancel_url": "https://goole.com",
  "state": "test state"
}
Réponse JSON

{
    "code": 201,
    "message": "Ok",
    "details": {
        "created_at": "Tuesday, March 5, 2024",
        "done_at": "Tuesday, March 5, 2024",
        "transfer_token": "36fea796-7f16-4f00-9d13-124987982b43",
        "merchant_transaction_id": "5632555428",
        "merchant_name": "",
        "country_code": "CI",
        "amount": "100",
        "currency": "XOF",
        "payment_url": "https://preproduction-visamc.bizao.com/visa-mc/36fea796-7f16-4f00-9d13-124987982b43",
        "state": null,
        "status": "201"
    }
}

Toutes les demandes de paiement sont mises en file d'attente et sont en mode en attente ou en mode en cours. Vous devez donc vérifier l'état de la demande avant de prendre d'autres mesures dans la mise en œuvre de votre code..

POSTPaiement via cartes Visa et Mastercard

http://{baseURL}/api/TopUp/CashOutVisaMasterCard

Cette requête est utilisée pour effectuer des paiements de services par Visa ou Mastercard.

Paramètre de la demande Exigée Description
Id transaction marchand Oui Numéro d'identification unique de la transaction du commerçant. Chaque demande doit être accompagnée d'un identifiant de transaction unique du commerçant
Champ personnalisé Non Champ personnalisé pour transmettre des données
Code pays Oui Le code de pays ISO à deux (2) lettres. Par exemple BJ pour la République du Bénin
Langue Oui Langue ISO à deux lettres
Devise Oui Le code ISO de la monnaie. Exemple XOF pour les francs CFA
Id transaction marchand Oui Numéro d'identification unique de la transaction du commerçant. Chaque demande doit être accompagnée d'un identifiant de transaction unique du commerçant
Montant Oui Quantité de temps de communication ou de données à acheter
URL de retour Non URL de retour fournie par le commerçant après approbation du paiement par le client (doit être fournie si le canal est Web)
URL d'annulation Non URL d'annulation fournie par le commerçant après approbation du paiement par le client. (doit être fournie si le canal est Web)
État Oui État de la transaction
Exemple de requête

{
  "merchant_id": "326662552488856",
  "custom_field": "",
  "country_code": "CI",
  "language": "En",
  "amount": "100",
  "currency": "XOF",
  "merchant_transaction_id": "56325554268",
  "return_url": "https://goole.com",
  "cancel_url": "https://goole.com",
  "state": "test state"
}

Réponse JSON

{
  "code": 201,
  "message": "Created",
  "details": {
  "created_at": "3/5/2024",
  "done_at": "3/5/2024",
  "transfer_token": "70f58384-5880-41e7-b7d1-e3796ab7d71b",
  "merchant_transaction_id": "56325554268",
  "merchant_name": "",
  "country_code": "CI",
  "amount": "100",
  "currency": "XOF",
  "payment_url": 
  "https://preproduction-visamc.bizao.com/visa-mc/70f58384-5880-41e7-b7d1-e3796ab7d71b",
  "state": null,
  "status": "201"
    }
}