Lire toutes les sections en bleues pour mieux comprendre la documentation et les sections en orange signifiant l'alerte afin d'éviter des erreurs à commettre durant les intégrations et les procédures détaillées pour les intégration.
Les clés d'API sont vos références numériques auprès des systèmes de PayDunya. Nous les utilisons afin d'identifier votre compte et les applications que vous allez créer. Ces clés sont nécessaires pour toute intégration des APIs de paiements PayDunya. Voici chronologiquement la marche à suivre :
Vous devez d'abord avoir un compte PayDunya Business activé. Créez-en un si besoin y est.
Connectez-vous à votre compte et cliquez sur oneAPI au niveau dumenu à gauche.
Cliquez sur le bouton Configurer une nouvelle application et remplissez le formulaire.
Choisissez MODE TEST, JE VEUX FAIRE DES TESTS DE PAIEMENT.
puis
ACTIVER LE MODE DE PRODUCTION
.
PayDunya vous propose trois 03
APIs :
02
APIs de paiement qui vous permettent de vous faire payer PAR et PSR
.
PER
de redistribution qui vous permet de partager l'argent des paiements
avec vos
fournisseurs.
Vous devez intégrer l'une des APIs de paiement et celle de redistribution si vous desirez partager l'argent des
paiements avec des partenaires.
Notre API HTTP
est exclusivement basée sur le format d'échange de données JSON
. Toutes
les réponses aux requêtes
HTTP POST/GET
depuis/vers notre API reposent sur des objets JSON
, excepté le format de données que nous postons sur le callback url qui est de type HTTP application/x-www-form-urlencoded
.
Tous les objets JSON
retournés au niveau d'une réponse contiennent au minimum les nœuds response_code
et response_text
. Le nœud response_code
représente le code technique de la réponse, et le noeud response_text
fournit quant à lui des explications sur la réponse. Votre intégration doit fortement s'appuyer sur ces nœuds afin de fonctionner correctement.
Toutes les réponses de succès renvoient un objet JSON contenant un nœud response_code égal
à
00
.
Le service de "Paiement Avec Redirection"
de PayDunya vous permet de rediriger votre client vers
notre plateforme afin qu'il puisse achever le processus de paiement. Nous vous recommandons d'utiliser l'API de "Paiement Avec Redirection"
car elle est la plus adaptée dans 99% des cas. L'avantage principal de cette option est que les clients peuvent choisir de payer à partir d'une variété d'options de paiement disponibles sur notre plateforme. De plus, si une nouvelle option est rajoutée dans le futur, celle-ci apparaitra directement sur la page de paiement sans que vous ayez à modifier quoi que ce soit au niveau de votre code source.
https://app.paydunya.com/sandbox-api/v1/checkout-invoice/create
https://app.paydunya.com/api/v1/checkout-invoice/create
curl -H "Content-Type: application/json" \
-H "PAYDUNYA-MASTER-KEY: wQzk9ZwR-Qq9m-0hD0-zpud-je5coGC3FHKW" \
-H "PAYDUNYA-PRIVATE-KEY: test_private_rMIdJM3PLLhLjyArx9tF3VURAF5" \
-H "PAYDUNYA-TOKEN: IivOiOxGJuWhc5znlIiK" \
-X POST -d '{"invoice": {"total_amount": 5000, "description": "Chaussure VANS dernier modèle"},"store": {"name": "Magasin le Choco"}}' \
"https://app.paydunya.com/sandbox-api/v1/checkout-invoice/create"
{
"response_code":"00",
"response_text":"https://app.paydunya.com/sandbox-checkout/invoice/test_RHICF0HboN",
"description":"Checkout Invoice Created",
"token":"test_RHICF0HboN"
}
Pour recevoir la structure complète des informations de paiements, vous pouvez faire une requête avec le token reçu dans la réponse ci-dessus. Voir la démarche à suivre au point vérification de l'état du paiement.
Cette option s'avère très intéressante si vous souhaitez créer votre propre solution de paiement par dessus celle de
PayDunya ou si vous devez reverser un certain pourcentage à chaque vente. L'argent est reçu sur les comptes
destinataires et le service n'est pas facturé.
Vous pouvez transférer des fonds vers d'autres comptes clients PayDunya à partir de votre compte via l'API de
Paiement Et Redistribution
. Pour des raisons de sécurité, vous devez explicitement activer l'option de
Paiement Et Redistribution
dans la configuration de votre intégration/application en vous connectant à votre compte Business PayDunya. Vous pouvez toujours activer ou désactiver le Paiement Et Redistribution
en mettant à jour la configuration de votre intégration/application en vous connectant à votre compte Business PayDunya.
https://app.paydunya.com/sandbox-api/v1/direct-pay/credit-account
https://app.paydunya.com/api/v1/direct-pay/credit-account
curl -H "Content-Type: application/json" \
-H "PAYDUNYA-MASTER-KEY: wQzk9ZwR-Qq9m-0hD0-zpud-je5coGC3FHKW" \
-H "PAYDUNYA-PRIVATE-KEY: test_private_rMIdJM3PLLhLjyArx9tF3VURAF5" \
-H "PAYDUNYA-TOKEN: IivOiOxGJuWhc5znlIiK" \
-X POST -d ' { "account_alias" : "771111111", "amount" : 4500 }' \
"https://app.paydunya.com/sandbox-api/v1/direct-pay/credit-account "
{
"response_code":"00",
"response_text":"Transaction completed successfully",
"description":"Success! Amount of 4500 FCFA has been transfered to Sandbox Account BOUBACAR BAH",
"transaction_id":"TEST000001"
}
Voici présentée ci-dessous, la structure complète de l'objet JSON de facturation PayDunya. La plupart des éléments sont optionnels, mais prenez l'habitude de tous les fournir car cela vous offrira beaucoup plus de flexibilité. Les nœuds JSON obligatoires pour la soumission d'une requête HTTP POST de paiement de facture vers nos Endpoints API sont : le nœud racine invoice
et son noeud enfant total_amount
ainsi que le nœud racine store
et son noeud enfant name
.
{
"invoice": {
"items": {
},
"taxes": {
},
"channels": ["expresso-sn","mtn-benin"],
"total_amount": 5000,
"description": ""
},
"store": {
"name": "Magasin le Choco",
"tagline": "",
"postal_address": "",
"phone": "",
"logo_url": "",
"website_url": ""
},
"custom_data": {
},
"actions": {
"cancel_url": "",
"return_url": "",
"callback_url": ""
}
}
Référez-vous à la structure complète JSON afin de savoir de manière exacte où insérer la structure suivante. Les "items"
sont utilisés pour afficher au client sur la page de paiement la liste des articles qu'il a commandé. PayDunya n'utilisera en aucun cas l'un des montants déclarés dans "items"
pour facturer le client.
{
"items": {
"item_0": {
"name": "Chaussures Croco",
"quantity": 3,
"unit_price": "10000",
"total_price": "30000",
"description": "Chaussures faites en peau de crocrodile authentique qui chasse la pauvreté"
},
"item_1": {
"name": "Chemise Glacée",
"quantity": 1,
"unit_price": "5000",
"total_price": "5000",
"description": ""
}
}
Si vous désirez afficher sur la facture PayDunya les taxes que vous appliquez (TVA, Frais de livraison...) vous pouvez le faire en utilisant le noeud JSON taxes
comme illustré ci-dessous.
"taxes": {
"tax_0": {
"name": "TVA (18%)",
"amount": 6300
},
"tax_1": {
"name": "Livraison",
"amount": 1000
}
}
Par défaut, les moyens de paiement activés au niveau de la configuration de votre intégration seront tous affichés sur la page de paiement pour l'ensemble de vos factures.
Si toutefois vous souhaitez restreindre la liste des moyens de paiements à afficher sur la page de paiement d'une facture donnée, nous vous offrons la possibilité de le faire en utilisant la clé channels
.
Pour obtenir les noms des opérateurs à attribuer comme valeur à la clé channels, veuillez consulter ce lien qui liste les différents opérateurs disponibles.
{
// Ajout d´un seul moyens de paiement
"channels":"card"
// Ajout de plusieurs moyens de paiement à la fois
"channels":["card", "mtn-benin", "orange-money-senegal"]
}
Si vous avez besoin d'ajouter des données supplémentaires (par exemple pour un jeu concours, vous pouvez enregistrer des informations sur chaque gagnant) à des fins d'utilisation ultérieure, nous vous offrons la possibilité de sauvegarder ces données sur nos serveurs et de pouvoir les récupérer une fois le paiement réussi.
Les données personnalisées ne sont affichées ni sur la page de paiement, ni sur les factures/reçus, ni sur les téléchargements et impressions. Elles sont uniquement récupérées à l'aide de notre action de callback confirm
au niveau de l'API.
"custom_data": {
"categorie": "Jeu concours",
"periode": "Noël 2015",
"numero_gagnant": 5,
"prix" : "Bon de réduction de 50%"
}
"custom_data": {
"phone_brand": "Nokia",
"IMEI": "72892821010728",
"model": "Luna"
}
Vous pouvez optionnellement définir une URL sur laquelle seront redirigés vos clients après qu'ils aient cliqué sur le bouton "Annuler le paiement"
.
"actions": {
"cancel_url": "http://www.magasin-le-choco.com/cancel_url.php"
}
Vous pouvez optionnellement définir une URL sur laquelle seront redirigés vos clients après qu'ils aient réussi le paiement de leur commande.
PayDunya rajoutera ?token=invoice_token
à votre URL. Nous expliquons comment utiliser ce token au niveau de la documentation des différents clients API (PHP, Java, .NET, Ruby, Python, Node JS).
"actions": {
"return_url": "http://www.magasin-le-choco.com/return_url.php"
}
Il se peut que pour des raisons x ou y, que la confirmation de paiement ne soit pas instantanée (par exemple le temps que le client tape son code secret sur son téléphone ou le temps de latence du réseau téléphonique), l'IPN vous permet de recevoir instantanément les informations de la transaction pour un paiement confirmé
, annulé
ou échoué
.
L'IPN correspond à l'URL d'un fichier sur votre serveur sur lequel vous souhaitez recevoir les informations de la transaction de paiement, ces informations sont à traiter en backoffice. PayDunya utilise cette URL afin de vous envoyer instantanément, par requête POST
, les informations relatives à la transaction de paiement.
"actions": {
"callback_url": "http://www.magasin-le-choco.com/callback_url.php"
}
La validation réussie de la transaction de paiement retourne la structure ci-dessous contenant les informations sur le client, l'URL de sa facture PayDunya en version PDF et également un hash permettant de vérifier que les données reçues proviennent bien de nos serveurs.
Par ailleurs il est capital de comprendre à titre d'information que les paiements annulés
ou échoués
gardent le même format de reponse sauf la valeur du statut qui change : pour les paiements échoués le statut devient failed
et pour les paiements annulés
devient cancelled
.
array (
'data' =>
array (
'response_code' => '00',
'response_text' => 'Transaction Found',
'hash' => '8c6666a27fe5daeb76dae6abc7308a557dca5be1bda85dfe5d81fa330cdc0bc3c4b37765fe5d2cc36aa2ba0f9284226a80f5488d14740fa70769d6079a179406',
'invoice' =>
array (
'token' => 'test_jkEdPY8SuG',
'items' =>
array (
'item_0' =>
array (
'name' => 'Chaussures Croco',
'quantity' => '3',
'unit_price' => '10000',
'total_price' => '30000',
'description' => 'Chaussures faites en peau de crocrodile authentique qui chasse la pauvreté',
),
'item_1' =>
array (
'name' => 'Chemise Glacée',
'quantity' => '1',
'unit_price' => '5000',
'total_price' => '5000',
'description' => '',
),
),
'taxes' =>
array (
'tax_0' =>
array (
'name' => 'TVA (18%)',
'amount' => '6300',
),
'tax_1' =>
array (
'name' => 'Livraison',
'amount' => '1000',
),
),
'token': 'test_Jh2T8skw1j',
'total_amount' => '42300',
'description' => 'Paiement de 42300 FCFA pour article(s) achetés sur Magasin le Choco',
),
'custom_data' =>
array (
'categorie' => 'Jeu concours',
'periode' => 'Noël 2015',
'numero_gagnant' => '5',
'prix' => 'Bon de réduction de 50%',
),
'actions' =>
array (
'cancel_url' => 'http://magasin-le-choco.com/cancel_url.aspx',
'callback_url' => 'http://magasin-le-choco.com/callback_url.aspx',
'return_url' => 'http://magasin-le-choco.com/return_url.aspx',
),
'mode' => 'test',
'status' => 'completed',
'customer' =>
array (
'name' => 'Alioune Faye',
'phone' => '774563209',
'email' => '[email protected]',
),
'receipt_url' => 'https://paydunya.com/sandbox-checkout/receipt/pdf/test_jkEdPY8SuG.pdf',
),
)
Le hash renvoyé par PayDunya est le hash de votre MasterKey (clé principale). Ce hash vous permettra de vous assurer que les données que vous avez reçues proviennent de nos serveurs. L'algorithme utilisé pour obtenir le hash est du SHA-512
. Dans la réponse attendue un message d'échec est renseigné dans le noeud fail_reason
seulement pour les transactions par carte bancaires échouées
ou annulées
.
PayDunya Fait une requête Post de type application/x-www-form-urlencoded
sur votre endpoint de callback et poste un tableau de données contenant les informations du paiement. Vous devez utiliser de ce part, la clé "data"
avant de récupérer un noeud. La strucutre renvoyée se trouve sous l'index "data"
.
Lors de la création d'une facture avec PayDunya, un token est généré. Ce token est utilisé pour initier le paiement et pour vérifier le statut de la transaction. Le statut d'une transaction peut être PENDING (EN ATTENTE)
, CANCELLED (ANNULÉ)
ou COMPLETED (COMPLÉTÉ)
, selon que le client ait ou non réglé la facture.
Voici une explication de chaque statut :
Pending : Ce statut signifie que le paiement est en cours de traitement. Vous pouvez vérifier le statut final de la transaction en utilisant l'API Check Statut. Ce statut peut automatiquement changer après 24h (à la création de la facture) en cancelled
si la facture n'a pas été payé.
Cancelled : Ce statut indique que le paiement a été annulé.
Completed : Ce statut indique que le paiement a été effectué avec succès.
Failed : Ce statut indique que le paiement a échoué.
Rappelez-vous de toujours rajouter la valeur de votre token
de facture aux endpoints.
https://app.paydunya.com/sandbox-api/v1/checkout-invoice/confirm/[invoice_token]
https://app.paydunya.com/api/v1/checkout-invoice/confirm/[invoice_token]
curl -H "Content-Type: application/json" \
-H "PAYDUNYA-MASTER-KEY: wQzk9ZwR-Qq9m-0hD0-zpud-je5coGC3FHKW" \
-H "PAYDUNYA-PRIVATE-KEY: test_private_rMIdJM3PLLhLjyArx9tF3VURAF5" \
-H "PAYDUNYA-TOKEN: IivOiOxGJuWhc5znlIiK" \
"https://app.paydunya.com/sandbox-api/v1/checkout-invoice/confirm/test_P8FaseSVLd"
{
"response_code": "00",
"response_text": "Transaction Found",
"hash": "85c6564b0e29c7955633594bc8aca0d007dc1fce3f67bd3accb00ae4e9d39ae528574be9a6ea8bde81fcbb0bc0fae3e56eb1bbedcd4d119a7fd24b0d44ab3770",
"invoice": {
"items": {
"item_0": {
"name": "Chaussures Croco",
"quantity": 3,
"unit_price": "10000",
"total_price": "30000",
"description": "Chaussures faites en peau de crocrodile authentique qui chasse la pauvreté"
},
"item_1": {
"name": "Chemise Glacée",
"quantity": 1,
"unit_price": "5000",
"total_price": "5000",
"description": ""
}
},
"taxes": {
"tax_0": {
"name": "TVA (18%)",
"amount": 6300
},
"tax_1": {
"name": "Livraison",
"amount": 1000
}
},
"token": "test_Jh2T8skw1j",
"total_amount": 42300,
"description": "Paiement de 42300 FCFA pour article(s) achetés sur Magasin le Choco"
},
"custom_data": {
"categorie": "Jeu concours",
"periode": "Noël 2015",
"numero_gagnant": 5,
"prix" : "Bon de réduction de 50%"
},
"actions": {
"cancel_url": "http://magasin-le-choco.com/cancel_url.aspx",
"callback_url": "http://magasin-le-choco.com/callback_url.aspx",
"return_url": "http://magasin-le-choco.com/return_url.aspx"
},
"mode": "test",
"status": "completed",
"fail_reason": "",
"customer": {
"name": "Alioune Faye",
"phone": "774563209",
"email": "[email protected]"
},
"receipt_url": "https://paydunya.com/sandbox-checkout/receipt/pdf/test_Jh2T8skw1j.pdf"
}
Le hash renvoyé par PayDunya est le hash de votre MasterKey (clé principale). Ce hash vous permettra de vous assurer que les données que vous avez reçues proviennent de nos serveurs. L'algorithme utilisé pour obtenir le hash est du SHA-512
. Dans la réponse attendue un message d'échec est renseigné dans le noeud fail_reason
seulement pour les transactions par carte bancaires échouées
ou annulées
.
Pour les entreprises certifiés PCI-DSS, dans la réponse attendue le numéro de carte est renseigné dans le noeud pan
.
Dans la réponse attendue un message et une description de l'échec est renseigné dans le noeud errors
seulement pour les transactions par carte bancaires échouées
ou annulées
.
{
"response_code": "00",
"response_text": "Transaction Found",
"hash": "85c6564b0e29c7955633594bc8aca0d007dc1fce3f67bd3accb00ae4e9d39ae528574be9a6ea8bde81fcbb0bc0fae3e56eb1bbedcd4d119a7fd24b0d44ab3770",
"invoice": {
"items": {
"item_0": {
"name": "Chaussures Croco",
"quantity": 3,
"unit_price": "10000",
"total_price": "30000",
"description": "Chaussures faites en peau de crocrodile authentique qui chasse la pauvreté"
},
"item_1": {
"name": "Chemise Glacée",
"quantity": 1,
"unit_price": "5000",
"total_price": "5000",
"description": ""
}
},
"taxes": {
"tax_0": {
"name": "TVA (18%)",
"amount": 6300
},
"tax_1": {
"name": "Livraison",
"amount": 1000
}
},
"token": "test_Jh2T8skw1j",
"total_amount": 42300,
"description": "Paiement de 42300 FCFA pour article(s) achetés sur Magasin le Choco"
},
"custom_data": {
"categorie": "Jeu concours",
"periode": "Noël 2015",
"numero_gagnant": 5,
"prix" : "Bon de réduction de 50%"
},
"actions": {
"cancel_url": "http://magasin-le-choco.com/cancel_url.aspx",
"callback_url": "http://magasin-le-choco.com/callback_url.aspx",
"return_url": "http://magasin-le-choco.com/return_url.aspx"
},
"mode": "live",
"status": "cancelled",
"fail_reason": "Payment cancelled by customer",
"customer": {
"name": "Alioune Faye",
"phone": "774563209",
"email": "[email protected]"
},
"errors": {
"message": "Payment cancelled by customer",
"description": "Payment cancelled by customer"
},
"receipt_url": "https://paydunya.com/sandbox-checkout/receipt/pdf/test_Jh2T8skw1j.pdf"
}