Introduction Last updated: 2020-12-03

Cette page permet de bien démarrer avec DigiPay, vous permettant d'avoir une solution de paiement électronique a la fois flexible, securisée et adaptée aux besoins des utilisateurs.

1- Configuration

Cette partie vous permet de :

  • créer un compte client,
  • créer une ou plusieurs boutiques,
  • et de récupérer les clés API par mail ou directement via l'espace client .

1-1 Création Compte

Pour créer un compte client DigiPay, il faut se rendre sur le lien de Création Compte .

Après inscription, vous recevrez un mail comprenant vos paramètres de connexion de l'espace client.

1-2 Création Boutique

Pour créer une boutique, il faut se connecter à l'espace client, puis se rendre sur le menu Boutique. Une fois dans le menu cliquer sur le bouton Nouvelle Boutique

Exemple de boutique avec Wordpress

Exemple de boutique avec PrestaShop

Exemple de boutique Personalisée

1-3 Récuperation Clés API

Une fois la boutique créée, vous recevrez vos clés API par mails.

Les Clés API sont aussi disponibles dans l'espace client .

1-4 Regénération Clés API

Pour regénérer vos clés API, cliquer sur le bouton dans la liste des boutiques, en suite cliquer sur le bouton .

1-5 URL Api

BASE_URL = https://proxy.bgpay.digital/api
REQUEST_PAYMENT_URL = BASE_URL/payment/request

2 Intégrations Paiement

L'API de paiement permet aux partenaires intégrateurs de faire une demande de paiement par génération d'un token unique pour l’obtention d’un url de paiement sécurisé. Mais aussi permettant d'interagir avec les clients du partenaire intégrateur pour leurs proposer différents modes de paiements.

2-1 Demande de Paiement

Cette partie permet à un client final d’effectuer un paiement en ligne via la plateforme en suivant les étapes:

  • Se rendre dans le site du partenaire intégrateur.
  • Remplir son Panier.
  • Finaliser le checkout et choisir DigiPay comme moyen de paiement
  • Puis cliquer sur le lien de paiement.
  • Le partenaire intégrateur fait un appel à l’API Gateway pour la génération d'un token de paiement
  • L’API génère le token et retourne un lien de paiement sécurisé

Méthode : POST
Headers : Content-Type : application/json
URL : https://proxy.bgpay.digital/api/payment/request
Paramètres :

Paramètres Type Défaut Obligatoire Description
app_key String NULL OUI Identifiant de l'application lié á la boutique en ligne
public_key String NULL OUI Clé public á voir dans l'espace client( partie application )
secrete_key String NULL OUI Clé privée de sécurité á voir dans l'espace client( partie application )
amount Number NULL OUI Montant de la transaction
commande_name String NULL OUI Nom de la commande
ref_commande String|Uniq NULL OUI Référence de la commande
currency String Paramètre global boutique OUI Device (XOF, EUR USD CAD GBP MAD)
data_transactions Json NULL OUI Données supplémentaires en Json
mode String NULL OUI Mode transaction ( test | prod )
ipn_url String Paramètre global boutique NON Url de callback
success_url String Paramètre global boutique NON Url de succès
cancel_url String Paramètre global boutique NON Url d'annulation
failed_url String Paramètre global boutique NON Url d'erreur
client_name String NULL NON Le nom du client qui va éffectuer le paiement
client_phone String NULL NON Le numéro de téléphone du client qui va éffectuer le paiement
client_email String NULL NON L'adresse mail du client qui va éffectuer le paiement

curl --location --request POST 'https://proxy.bgpay.digital/api/payment/request' \
--header 'Content-Type: application/json' \
--data-raw '{
        "app_key": "string",
        "public_key": "string",
        "secrete_key": "string",
        "amount": "number",
        "commande_name": "string",
        "ref_commande": "string",
        "currency": "string",
        "data_transactions": "json",
        "mode": "string",
        "ipn_url": "string",
        "success_url": "string",
        "cancel_url": "string",
        "failed_url": "string",
        "client_name": "string",
        "client_phone": "string",
        "client_email": "string"
}'

                         

Réponse correcte :


{
        "data": {
        "hash":"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
         "url_payment":"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
        },
        "msg": "Token generer avec success",
        "error": false,
        "code": 200
}

                         

Réponse erreur :


{
        "error": true,
        "msg": "Votre clée d'application n'existe pas !!!",
        "code": "400"
}

                         

2-2 Validation Paiement

Cette partie permet aux clients finaux de choisir un mode de paiement et de terminer le processus selon le mode spécifié.

2-3 CallBack (IPN)

Une fois cette étape franchie, le client devra valider la transaction à son niveau, en recevant un URL de validation via requête https.

Méthode : POST
Headers : Content-Type : application/json
URL : url_ipn
Paramètres :

Paramètres Type Description
hash_app_key String Identifiant de l'application lié á la boutique en ligne (haché via l'algorythme sha512)
hash_public_key String Clé public á voir dans l'espace client partie application (haché via l'algorythme sha512)
hash_secret_key String Clé privée de sécurité á voir dans l'espace client partie application (haché avec l'algorythme sha512)
amount Number Montant de la transaction
commande_name String Nom de la commande envoyée dans la phase de demande de paiement
ref_commande String|Uniq Référence de la commande envoyée dans la phase de demande de paiement
currency String Device
data_transactions Json Données supplémentaires en Json envoyées lors de la demande de paiement
mode String Mode transaction ( test | prod )
ref_internal_digi_pay String Référence de la transaction générée par la plateforme DigiPay
statut String Statut de la transaction ( success)
event String Type événement ( web_payment)
client_name String Le nom du client qui a éffectué le paiement
client_phone String Le numéro de téléphone du client qui a éffectué le paiement
client_email String L'adresse mail du client qui a éffectué le paiement

{
        "data_transactions": "{\"id\":23}",
        "hash_app_key": "string",
        "hash_secret_key": "string",
        "hash_public_key": "string",
        "mode": "string",
        "payment_method": "string",
        "ref_commande": "string",
        "commande_name": "string",
        "amount": "number",
        "currency": "number",
        "ref_internal_bg": "string",
        "statut": "string",
        "event": "string",
        "client_name": "string",
        "client_phone": "string",
        "client_email": "string"
}

                         

Après réception de la requête HTTPS de notre serveur, repondez avec un statut code HTTP 200.

3 Exemples d'intégrations

Dans cette partie, vous retrouvrez un exemple complet d'intégration avec plusieurs technologies.

JAVA

Demander un url de Paiement avec JAVA en utilisant le SDK Java avec Spring Boot

Télécharger le SDK Java


   @RequestMapping(path = "/requestPayment",method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
   @ResponseBody
   public String requestPayment(){
       DigiPayGatway payment = new DigiPayGatway();
       /*Config boutique*/
        payment.setSuccess_url("https://mywebsite.shop/success");
        payment.setCancel_url("https://mywebsite.shop/cancel");
        payment.setIpn_url("https://mywebsite.shop/ipn");
        payment.setFailed_url("https://mywebsite.shop/failed");
        payment.setApp_key("YOUR_SECRETE_KEY");
        payment.setSecrete_key("YOUR_SECRETE_KEY");
        payment.setSecrete_key_test("YOUR_SECRETE_TEST_KEY");
        payment.setPublic_key("YOUR_PUBLIC_KEY");
        payment.setPublic_key_test("YOUR_PUBLIC_TEST_KEY");
        payment.setCurrency("XOF");
       /*Config boutique*/

        /*Client infos*/
        payment->setClient_name("Pape Samba Ndour")
        payment->setClient_phone("777293282")
        payment->getClient_email("papesambandour@hotmail.com")
        /*Client infos*/

       /*Config product*/
       payment.setAmount(1000);
       payment.setAmount(1000);
       payment.setCommande_name("mY COMMANDE");
       payment.setRef_commande(DigiPayGatway.RandomString.generate());
       Map data_transactions = new HashMap<>();
       payment.setMode(payment.getMODE_TEST());
       //info supplementair
       data_transactions.put("id","12");
       payment.setData_transactions(data_transactions);
       /*Config product*/
       return payment.start();
   }

                         

Réponse attendue



    [
    "data"=>
        [
            "hash"=>"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
            "url_payment"=>"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
        ],
     "msg"=>"Token generer avec success",
    "error"=>false,
    "code"=>200
    ]


                         

Validation du Paiement via le Callback


   @RequestMapping(path = "/ipn",method = RequestMethod.POST,produces = MediaType.APPLICATION_JSON_VALUE)
   @ResponseBody
   public String ipn(@RequestBody DigiPayGatway.DigiIpnData digiIpnData ){
       String app_key = "YOUR_APP_KEY";
       String secret_key_prod = "YOUR_SECRETE_KEY";
       String public_key_prod = "YOUR_PUBLIC_KEY";
       String secret_key_test = "YOUR_SECRETE_TEST_KEY";
       String public_key_test = "YOUR_PUBLIC_TEST_KEY";
       String mode = digiIpnData.mode;
       String hash_app_key = digiIpnData.hash_app_key;
       String hash_secret_key = digiIpnData.hash_secret_key;
       String hash_public_key = digiIpnData.hash_public_key;

       String my_hash_app_key =  DigiPayGatway.HASX512( app_key);
       String my_hash_secret_key = "";
       String my_hash_public_key = "";
       if (mode == "prod") {
           my_hash_secret_key = DigiPayGatway.HASX512( secret_key_prod);
           my_hash_public_key = DigiPayGatway.HASX512( public_key_prod);
       } else {
           my_hash_secret_key = DigiPayGatway.HASX512( secret_key_test);
           my_hash_public_key = DigiPayGatway.HASX512( public_key_test);
       }
       if (my_hash_public_key == hash_public_key && my_hash_secret_key == hash_secret_key && my_hash_app_key == hash_app_key) {
           //FROM BG DIGITAL
           return "SUCCESS";
       } else {
           return "NO_SUCCES";
       }
   }


                         

NODEJS

Demander un url de Paiement avec NodeJs en utilisant le SDK NodeJs

Télécharger le SDK NodeJs


app.post('/requestPayment', async (req, res) => {
    const DigiPayGatway =  require("./DigiPayGatway.js") ;
    let id = req.body.id;
    let other = req.body.other;
    /*START SDA*/
    let payment = new DigiPayGatway();

    /*CONFIG APPLICATION START*/
       payment.success_url = ('https://mywebsite.shop/success');
       payment.cancel_url = ('https://mywebsite.shop/cancel');
       payment.ipn_url = ('https://mywebsite.shop/ipn');
       payment.app_key = "YOUR_APP_KEY";
       payment.secrete_key = "YOUR_SECRETE_KEY";
       payment.secrete_key_test = "YOUR_SECRETE_TEST_KEY";
       payment.public_key = "YOUR_PUBLIC_KEY";
       payment.public_key_test = "YOUR_PUBLIC_TEST_KEY";
       payment.currency = "XOF";
    /*CONFIG APPLICATION END*/

     /*Client info */
    payment.client_name = "Pape Ndour"
    payment.client_phone = "777293282"
    payment.client_email = "papesambandour@hotmail.com"
     /*Client info */

    /*ADD PRODUCT INFOS START*/
    payment.mode = 'test';
    payment.amount = 1000;
    payment.ref_commande = Math.random().toString().substr(3,20);
    payment.commande_name ="Achat Produit sur Digi-shop";
    payment.mode =DigiPayGatway.MODE_TEST;
    payment.data_transactions ={
        "myProductId" : id,
        "otherInfo" : other
    };
    /*ADD PRODUCT INFOS END*/
    /*PROCESS  GET  URL PAYMENT*/
   return  res.json(await payment.start())
});

                         

Réponse attendue



    {
    "data":
        {
            "hash":"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
            "url_payment":"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
        },
     "msg":"Token generer avec success",
    "error":false,
    "code":200
    }


                         

Validation du Paiement via le Callback


    app.post('/ipn', (req, res) => {
    const crypto = require('crypto')
    const hash = crypto.createHash('sha512');
    let app_key ='YOUR_APP_KEY';
    let secret_key_prod ='YOUR_SECRETE_KEY';
    let public_key_prod ='YOUR_PUBLIC_KEY';
    let secret_key_test ='YOUR_SECRETE_TEST_KEY';
    let public_key_test ='YOUR_PUBLIC_TEST_KEY';
    let mode = req.body.mode;
    let hash_app_key = req.body.hash_app_key;
    let hash_secret_key = req.body.hash_secret_key;
    let hash_public_key = req.body.hash_public_key;

    let my_hash_app_key =  crypto.createHash('sha512').update(app_key).digest('hex')
    let my_hash_secret_key = '';
    let my_hash_public_key = '';
    if ( mode === 'prod') {
         my_hash_secret_key = crypto.createHash('sha512').update(secret_key_prod).digest('hex');
         my_hash_public_key = crypto.createHash('sha512').update(public_key_prod).digest('hex');
    } else {
        my_hash_secret_key = crypto.createHash('sha512').update(secret_key_test).digest('hex');
        my_hash_public_key = crypto.createHash('sha512').update(public_key_test).digest('hex');
    }
    if (my_hash_public_key === hash_public_key && my_hash_secret_key === hash_secret_key && my_hash_app_key === hash_app_key) {
        //FROM BG DIGITAL
        res.send("SUCCESS");
    } else {
        res.send("NO_SUCCES");
    }
});


                         

PHP

Demander un url de Paiement avec PHP en utilisant le SDK Php

Télécharger le SDK Php


use Digipay\Darkness\Pay\DigiPayGatway;
include 'DigiPayGatway.php';

        $id = @$_REQUEST['idProduct'];
        $other = @$_REQUEST['other'];

        /*START SDA*/
        $payment = new DigiPayGatway();

        /*CONFIG APPLICATION START*/
        $payment->setSuccessUrl('https://mywebsite.shop/success');
        $payment->setCancelUrl('https://mywebsite.shop/cancel');
        $payment->setIpnUrl('https://mywebsite.shop/ipn');
        $payment->setAppKey("YOUR_APP_KEY");
        $payment->setSecreteKey("YOUR_SECRETE_KEY");
        $payment->setSecreteKeyTest("YOUR_SECRETE_TEST_KEY");
        $payment->setPublicKey("YOUR_PUBLIC_KEY");
        $payment->setPublicKeyTest("YOUR_PUBLIC_TEST_KEY");
        $payment->setCurrency("XOF");
        /*CONFIG APPLICATION END*/

      /*Client info */
        $payment->setClientName("Pape Ndour") ;
        $payment->setClientPhone("777293282");
        $payment->setClientEmail( "papesambandour@hotmail.com");
     /*Client info */

        /*ADD PRODUCT INFOS START*/
        $payment->setAmount(1000);
        $payment->setRefCommande(uniqid());
        $payment->setCommandeName("Achat Produit sur Digi-shop");
        $payment->setMode(DigiPayGatway::MODE_TEST);
        $payment->setDataTransactions([
            "myProductId" => $id,
            "otherInfo" => $other
        ]);
        /*ADD PRODUCT INFOS END*/

        /*PROCESS  GET  URL PAYMENT*/
        $res =  $payment->start();

                         

Réponse attendue



    [
    "data"=>
        [
            "hash"=>"K4Xg5ukuFf5kjde1U806M6cxRyWqur",
            "url_payment"=>"https://proxy.bgpay.digital/gateway/K4Xg5ukuFf5kjde1U806M6cxRyWqur"
        ],
     "msg"=>"Token generer avec success",
    "error"=>false,
    "code"=>200
    ]


                         

Validation du Paiement via le Callback


     $app_key ='YOUR_APP_KEY';
        $secret_key_prod ='YOUR_SECRETE_KEY';
        $public_key_prod ='YOUR_PUBLIC_KEY';
        $secret_key_test ='YOUR_SECRETE_TEST_KEY';
        $public_key_test ='YOUR_PUBLIC_TEST_KEY';
        $mode = @$_REQUEST['mode'];
        $hash_app_key = @$_REQUEST['hash_app_key'];
        $hash_secret_key = @$_REQUEST['hash_secret_key'];
        $hash_public_key = @$_REQUEST['hash_public_key'];

        $my_hash_app_key = hash('sha512', $app_key);
        $my_hash_secret_key = '';
        $my_hash_public_key = '';
        if ($mode === 'prod') {
            $my_hash_secret_key = hash('sha512', $secret_key_prod);
      $my_hash_public_key = hash('sha512', $public_key_prod);
    } else {
            $my_hash_secret_key = hash('sha512', $secret_key_test);
      $my_hash_public_key = hash('sha512', $public_key_test);
    }
        if ($my_hash_public_key === $hash_public_key && $my_hash_secret_key === $hash_secret_key && $my_hash_app_key === $hash_app_key) {
            //FROM BG DIGITAL
            die("SUCCESS");
    } else {
      die("NO_SUCCES");
    }
    }


                         

4- Ressources

Ressources disponibles en telehargement libre

4-1 Plugings

1- Télécharger le plugin WordPress : ICI

4-2 SDK

Télécharger le SDK PHP : ICI

Télécharger le SDK JAVA : ICI

Télécharger le SDK NodeJs : ICI