HTTP/JSON


  IMPORTANT


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.

Génération de vos clés API

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 :

APIs

PayDunya vous propose trois (03) APIs :

  • deux (02) APIs de paiement qui vous permettent de vous faire payer (PAR et PSR).

  • et une troisième API (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.

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.

Info

Toutes les réponses de succès renvoient un objet JSON contenant un nœud response_code égal à 00.

PAIEMENT AVEC REDIRECTION

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.


Endpoints API TEST

https://app.paydunya.com/sandbox-API/v1/checkout-invoice/create


Endpoints API PRODUCTION

https://app.paydunya.com/API/v1/checkout-invoice/create


Requête POST HTTP


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"

Réponse attendue


{
    "response_code":"00",
    "response_text":"https://app.paydunya.com/sandbox-checkout/invoice/test_RHICF0HboN",
    "description":"Checkout Invoice Created",
    "token":"test_RHICF0HboN"
}

Astuce

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

PAIEMENT SANS REDIRECTION

Le service de "Paiement Sans Redirection (PSR)" vous permet de facturer vos clients PayDunya directement sur votre site web ou votre application mobile. Le processus d'exécution du service PSR se fait en deux(2) étapes. Pensez à créer un compte client fictif PayDunya pour tester l'API PSR.


Etape 1 : Demande de Token PSR

Info

À cette étape, recupérer l'adresse email ou le numéro mobile du client et le donner comme valeur à account_alias de opr_data.


"opr_data" :{"account_alias" : "774563209"}

Astuce

Vous pouvez récupérer ces informations par exemple grâce à un formulaire que vous présenterez au client.


Endpoints API TEST

https://app.paydunya.com/sandbox-API/v1/opr/create


Endpoints API PRODUCTION

https://app.paydunya.com/v1/opr/create


Requête POST HTTP


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_data" : {"invoice": {"total_amount": 5000, "description": "Chaussure VANS dernier modèle"},"store": {"name": "Magasin le Choco"}},"opr_data" :{"account_alias" : "774563209"}}' \
"https://app.paydunya.com/sandbox-API/v1/opr/create"

Réponse attendue

La validation réussie de la première étape retourne un objet JSON contenant un noeud token. Votre application devra enregistrer ledit token afin de l'utiliser à la deuxième étape ou étape finale du processus PSR. À ce stade, le client PayDunya reçoit également un code de confirmation par e-mail et par SMS. À noter que les SMS sont uniquement envoyés pour les transactions réelles.


{
    "response_code":"00",
    "response_text":"PSR-test_oAe8AB",
    "description":"Onsite Payment Request successfully sent.",
    "token":"PSR-test_oAe8AB",
    "invoice_token":"test_eSVLdP8Fas"
}

Etape 2 : Facturation PSR

Cette dernière étape nécessite votre token PSR ainsi que le code de confirmation que nous avons envoyé au client.


Endpoints API TEST

https://app.paydunya.com/sandbox-API/v1/opr/charge


Endpoints API PRODUCTION

https://app.paydunya.com/API/v1/opr/charge


Requête POST HTTP


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 '{"token" : "PSR-test_oAe8AB", "confirm_token" : "5838"}' \
"https://app.paydunya.com/sandbox-API/v1/opr/charge"

Réponse attendue

Important

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.


{
    "response_code": "00",
    "response_text": "Payment received",
    "description": "Customer has been charged successfully",
    "invoice_data": {
    "invoice": {
        "total_amount": 5000,
        "description": "Chaussure VANS dernier modèle"
    },
    "mode": "test",
    "status": "completed",
    "customer": {
    "name": "Alioune Faye",
    "phone": "774563209",
    "email": "aliounefaye@gmail.com"
    },
    "receipt_url": "https://app.paydunya.com/sandbox-checkout/receipt/pdf/test_eSVLdP8Fas.pdf"
    }
}
    

PAIEMENT ET REDIRECTION

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 Redirection. Pour des raisons de sécurité, vous devez explicitement activer l'option de Paiement Et Redirection 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 Redirection en mettant à jour la configuration de votre intégration/application en vous connectant à votre compte Business PayDunya.


Endpoints API

https://app.paydunya.com/sandbox-API/v1/direct-pay/credit-account


Endpoints API

https://app.paydunya.com/API/v1/direct-pay/credit-account


Requête POST HTTP


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"

Réponse attendue


{
    "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"
}

Configuration de base des informations a envoyer au serveur de PayDunya


Structure JSON complète des données à envoyer


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": {

    },

    "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": ""
    }
}

Ajout d'articles ou d'éléments sur la facture PayDunya (facultatif)


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": ""
    }
}

Ajout de taxes (facultatif)


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
    }
}

Ajout de données personnalisées (facultatif)


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.

Info

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.


Exemple 1


"custom_data": {
    "categorie": "Jeu concours",
    "periode":  "Noël 2015",
    "numero_gagnant": 5,
    "prix" : "Bon de réduction de 50%"
}

Exemple 2


"custom_data": {
    "phone_brand": "Nokia",
    "IMEI": "72892821010728",
    "model": "Luna"
}

Configuration d'une URL de redirection après annulation de paiement


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"
}

Configuration d'une URL de redirection après confirmation de paiements


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.

Note

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"
}

Configuration de l'IPN (Instant Payment Notification)


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 au moment où le paiement est confirmé.

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"
}

Important

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.


Réponse attendue :


{
    "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",
    "customer": {
        "name": "Alioune Faye",
        "phone": "774563209",
        "email": "aliounefaye@gmail.com"
    },
    "receipt_url": "https://paydunya.com/sandbox-checkout/receipt/pdf/test_Jh2T8skw1j.pdf"
}

Important

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.

Astuce

Vous n'avez pas besoin de faire un json_decode pour traiter les données reçues et vous devez utiliser la clé "data" avant de récupérer un noeud (La strucutre renvoyée se trouve sous l'index "data").

Etat de paiement

Lorsque vous faites une requête de Paiement Avec Redirection (PAR) ou une requête de Paiement Sans Redirection (PSR), PayDunya retourne un objet JSON contenant un noeud représentant le token de facture. Vous pouvez utiliser la valeur de ce token afin de vérifier le statut de paiement de votre facture. Le statut d'une facture peut être soit pending (en attente), cancelled (annulé) ou completed (complété) en fonction de si oui ou non le client a réglé la facture.

Info

Rappelez-vous de toujours rajouter la valeur de votre token de facture aux endpoints.


Endpoints API TEST

https://app.paydunya.com/sandbox-API/v1/checkout-invoice/confirm/[invoice_token]


Endpoints API PRODUCTION

https://app.paydunya.com/API/v1/checkout-invoice/confirm/[invoice_token]

Requête GET HTTP


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"

Réponse attendue


{
    "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",
    "customer": {
        "name": "Alioune Faye",
        "phone": "774563209",
        "email": "aliounefaye@gmail.com"
    },
    "receipt_url": "https://paydunya.com/sandbox-checkout/receipt/pdf/test_Jh2T8skw1j.pdf"
}

Important

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.