SOFTPAY


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 d'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 :

  • 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 du menu à 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.

Intégration des APIs


Endpoints API LIVE

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: live_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/api/v1/checkout-invoice/create"

Réponse attendue


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

1 - 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": {
        "callback_url": ""
    }
}

2 - Ajout d'articles ou d'éléments sur la facture PayDunya


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

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

4 - 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.fa-lightbulb-o}

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

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


Réponse attendue :


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' => 'aliounefaye@gmail.com',
        ),
      '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.

Paiement par ORANGE MONEY SENEGAL

Après avoir généré le token, vous devez demander à l'utilisateur final de générer un code de paiement Orange Money en suivant le code USSD suivant:


#144#391*USER_ORANGE_MONEY_PIN_CODE#


Endpoints API ORANGE MONEY SENEGAL

https://app.paydunya.com/api/v1/softpay/orange-money-senegal


Requête POST HTTP


{
  "customer_name": "John Doe",
  "customer_email": "test@gmail.com",
  "phone_number": "778676477",
  "authorization_code": "152347",
  "invoice_token": "GS46gkCAnRv3WfRwFdJU"
}
  • "customer_name": C'est le nom du payeur
  • "customer_email": C'est l'email du payeur
  • "phone_number": C'est le numéro du payeur
  • "authorization_code": C'est le code USSD généré par le payeur
  • "invoice_token": C'est le TOKEN de paiement généré plus haut


Réponse attendue


{
  "success": true,
  "message": "Transaction éffectué avec succés"
}

Paiement par FREE MONEY


Endpoints API FREE MONEY SENEGAL

https://app.paydunya.com/api/v1/softpay/free-money-senegal


Requête POST HTTP


{
  "customer_name": "John Doe",
  "customer_email": "test@gmail.com",
  "phone_number": "768690999",
  "payment_token": "GS46gkCAnRv3WfRwFdJU"
}


Réponse attendue


{
  "message": "Opération réussi, Veuillez tapez #150# pour finaliser votre paiement",
  "data": {
    "status": "PENDING",
    "amount": 200,
    "currency": "XOF",
    "customermsisdn": 768690999,
    "transactionid": "MP210921.1230.B04577",
    "externaltransactionid": "FM076_93108370"
  },
  "success": true
}

Paiement par EXPRESSO


Endpoints API EXPRESSO

https://app.paydunya.com/api/v1/softpay/expresso-senegal


Requête POST HTTP


{
  "expresso_sn_fullName": "John Doe",
  "expresso_sn_email": "test@gmail.com",
  "expresso_sn_phone": "705189525",
  "payment_token": "GS46gkCAnRv3WfRwFdJU"
}


Réponse attendue


{
  "success": true,
  "message": "Votre paiement est en cours de traitement. Merci de valider le paiement après reception de sms pour le compléter."
}

Paiement par WAVE


Endpoints API WAVE

https://app.paydunya.com/api/v1/softpay/wave-senegal


Requête POST HTTP


{
  "wave_senegal_fullName": "John Doe",
  "wave_senegal_email": "test@gmail.com",
  "wave_senegal_phone": "77777777",
  "wave_senegal_payment_token": "OnW1IkMIQDTiJnQ9S3Ix"
}


Réponse attendue


{
  "success": true,
  "message": "Votre paiement est en cours de traitement. Merci de valider le paiement après reception de sms pour le compléter."
}

Paiement par ORANGE MONEY COTE D'IVOIRE


Après avoir généré le token, vous devez demander à l'utilisateur final de générer un code de paiement Orange Money en suivant le code USSD suivant:

#144*82# + option 2 pour obtenir le code de paiement.


Endpoints API ORANGE MONEY COTE D'IVOIRE

https://app.paydunya.com/api/v1/softpay/orange-money-ci


Requête POST HTTP

{
  "orange_money_ci_customer_fullname": "John Doe",
  "orange_money_ci_email": "test@gmail.com",
  "orange_money_ci_phone_number": "0777568646",
  "orange_money_ci_otp": "8562",
  "payment_token": "ljUZxD5T3RRxhpoOl66b"
}


Réponse attendue

{
    "success": true,
    "message": "Paiement effectuée avec succès."
}

Paiement par MTN MONEY COTE D'IVOIRE


Endpoints API MTN MONEY COTE D'IVOIRE

https://app.paydunya.com/api/v1/softpay/mtn-ci


Requête POST HTTP

{
  "mtn_ci_customer_fullname": "John Doe",
  "mtn_ci_email": "test@gmail.com",
  "mtn_ci_phone_number": "664142312",
  "mtn_ci_wallet_provider": "MTNCI",
  "payment_token": "OnW1IkMIQDTiJnQ9S3Ix"
}


Réponse attendue

{
  "success": true,
  "message": "success message"
}

Paiement par ORANGE MONEY BURKINA FASSO


Endpoints API ORANGE MONEY BURKINA FASSO

https://app.paydunya.com/api/v1/softpay/orange-money-bf


Requête POST HTTP

{
  "name_bf": "John Doe",
  "email_bf": "test@gmail.com",
  "phone_bf": "76950976",
  "otp_code": "89525",
  "payment_token": "lLTs7h0tor82tchzvSec"
}


Réponse attendue

{
  "success": true,
  "message": "success message"
}

Paiement par MOOV BURKINA FASSO


Endpoints API MOOV BURKINA FASSO

https://app.paydunya.com/api/v1/softpay/moov-burkina


Requête POST HTTP

{
  "moov_burkina_faso_fullName": "John Doe",
  "moov_burkina_faso_email": "test@gmail.com",
  "moov_burkina_faso_phone_number": "51765664",
  "moov_burkina_faso_payment_token": "lLTs7h0tor82tchzvSec"
}


Réponse attendue

{
  "success": true,
  "message": "Veuillez compléter le paiement en composant le *555*6#."
}

Paiement par MOOV BENIN


Endpoints API MOOV BENIN

https://app.paydunya.com/api/v1/softpay/moov-benin


Requête POST HTTP

{
  "moov_benin_customer_fullname": "Camille",
  "moov_benin_email": "camillemilly7@gmail.com",
  "moov_benin_phone_number": "0140253725",
  "payment_token": "lLTs7h0tor82tchzvSec"
}


Réponse attendue

{
  "success": true,
  "message": "Success message"
}

Paiement par MTN BENIN


Endpoints API MTN BENIN

https://app.paydunya.com/api/v1/softpay/mtn-benin


Requête POST HTTP

{
  "mtn_benin_customer_fullname": "Camille",
  "mtn_benin_email": "camillemilly7@gmail.com",
  "mtn_benin_phone_number": "66414231",
  "mtn_benin_wallet_provider": "MTNBENIN",
  "payment_token": "lLTs7h0tor82tchzvSec"
}


Réponse attendue

{
  "success": true,
  "message": "Votre paiement est en cours de traitement. Merci de valider le paiement après reception de sms pour le compléter"
}

Paiement par PAYDUNYA


Endpoints API PAYDUNYA

https://app.paydunya.com/api/v1/softpay/paydunya


Requête POST HTTP

{
  "customer_name": "John Doe",
  "customer_email": "exemple@paydunya.com",
  "phone_phone": "77777777",
  "password": "12345678",
  "invoice_token": "lLTs7h0tor82tchzvSec"
}


Réponse attendue

{
  "success": true,
  "message": "Success message"
}

Paiement par T-MONEY


Endpoints API T-Money

https://app.paydunya.com/api/v1/softpay/t-money-togo


Requête POST HTTP

{
  "name_t_money": "Camille",
  "email_t_money": "exemple@paydunya.com",
  "phone_t_money": "70707070","
  "payment_token": "lLTs7h0tor82tchzvSec"
}


Réponse attendue

{
  "success": true,
  "message": "Votre paiement est en cours de traitement. Merci de valider le paiement après reception de sms pour le compléter."
}

Paiement par MOOV CÔTE D'IVOIRE


API MOOV CÔTE D'IVOIRE

https://app.paydunya.com/api/v1/softpay/moov-ci


Requête POST HTTP

{
    "moov_ci_customer_fullname": "Camille",
    "moov_ci_email": "camillemilly7@gmail.com",
    "moov_ci_phone_number": "0153401679",
    "payment_token": "dzSNGqLCohvsFq9KlCmN"
}


Réponse attendue

{
    "success": true,
    "message": "Votre transaction a été validé avec succès."
}

Note


Lorsque vous lancez un paiement par MOOV CI , un popup s'ouvre automatiquement sur votre téléphone avec un champs de saisie de votre code secret pour validation du paiement.

Si le delai de la validation dépasse 30 secondes , L'API renvoie la réponse ci-dessous :


Réponse attendue

{
    "success": false,
    "message": "Vous avez dépassé le délais de validation de la transaction."
}