SandBox

Pour faire des tests, LabyrinthePay met à votre disposition des endpoints nommés Sandbox. Sandbox, qui signifie bac à sable, va vous permettre de faire vos tests en ayant le même comportement que lorsque vous êtes en production, à la seule différence que le montant et la monnaie impliqués dans la transaction sont définis par l'agrégateur (respectivement 100 & CDF).

N.B:

  • La connexion internet est requise pour toutes ces opérations. Beaucoup oublient d'activer la connexion internet lorsqu'ils travaillent en local alors que toutes ces APIs sont dans un serveur distant. Ne vous inquiétez pas, les APIs ne consomment pas beaucoup.
  • Le montant et la monnaie de transaction sont définis par Labyrinthe (respectivement 100 & CDF). Différemment des méthodes de paiement en production (où l'envoi de l'argent est instantané), dans le sandbox, l'argent vous sera envoyé, uniquement sur demande après avoir atteint vingt transactions cumulées (minimum une somme de 2000 CDF dans nos réserves).

Routes

La route est la passerelle comprise entre votre demande, l'action et la réponse de votre requête. En d'autres termes, c'est l'URL dans laquelle vous envoyez votre requête.

API
    https://payment.labyrinthe-rdc.com/api/beta/mobile

Les caractéristiques principales de la requête :

URL Méthode Return value ?
https://payment.labyrinthe-rdc.com/api/beta/mobile POST YES

Les paramètres de la requête :

Params Descritption Exemple Required
token C'est la clé fournie par Labyrinthe pour vous permettre d'effectuer les transactions et les vérifications. Comment l'obtenir ? xxxxxxxxxx YES
reference C'est la référence de la transaction. C'est l'une des informations qui vous permettrons de retracer vos différentes transactions. xxxxxxxxxx YES
phone Le numéro de téléphone qui devra valider la transaction. 0891234567 YES
  • method : Nous gardons la méthode POST
  • token : Le token est votre jeton de paiement personnalisé et confidentiel. Il représente vos informations confidentielles et peut être considéré comme votre empreinte numérique. L'exemple ci-dessous montre à quoi ressemble un token mais n'est pas valide.
    Exemple : $2y$12$ngaXsXGwkrxpTAA.ubLXietv/Pdadfbx3OziwIH88inGU4sGi6ivm
    Comment obtenir son token ? Cliquer sur ce lien pour plus d'informations.
  • reference : La référence n'est rien d'autre que l'ID de votre transaction. Elle ne doit pas dépasser 50 caractères. Elle vous permet de retracer une à une toutes vos transactions. Et aussi permet d'effectuer bien d'autres actions mais vous les verrez beaucoup plus loin. Pour chaque transaction, prenez soin de toujours changer votre référence.
  • phone : C'est le numéro de téléphone par lequel le paiement doit passer. Pour le test, nous vous recommanderons d'abord votre propre numéro de téléphone.
    Nous y sommes presque.
    Entrez un numéro à 9 chiffres (sans le zéro du début) ou à 10 chiffres (avec le zéro du début).
    Exemples :
    • 0891000200
    • 891000200
Response

La réponse est le résultat (ce que retourne) de la requête.

Exemple d'une réponse :

JSON
    {
        "success": true,
        "errors": [],
        "array": 
            [
                {
                "success": true,
                "message": "Transaction envoyée avec succès. Veuillez valider le push message",
                "data": {
                    "code": "0",
                    "message": "Transaction envoyée avec succès. Veuillez valider le push message",
                    "orderNumber": "OgLxDSO53TEw243896699032"
                },
                "errors": []
                }
            ]
    }

L'interprétation des résultats peut s'avérer capitale pour la suite du traitement des informations (pour ceux qui voudront bien les traiter).

  • success : C'est celui qui détermine si l'opération a réussi ou pas. La valeur est true si tout s'est bien passé et false dans le cas contraire.
  • error : Cette collection renvoie l'ensemble d'erreurs collectées lors du traitement de la requête. La collection est vide quand il n'y a pas d'erreurs. Et quand elle a des données, ce qu'il y a une erreur et l'objet success est false.
  • array : Dans array, nous avons l'ensemble de données pertinentes de la requête. Celles que nous pouvons traiter ou stocker.
  • orderNumber : C'est la référence que vous renvoie l'agrégateur, c'est la donnée que vous utiliserez pour retracer votre transaction auprès de ce dernier. Il faut la garder bien au chaud.
Integration

Il existe plusieurs moyens d'intégrer nos APIs dans vos applications. Le moyen le plus facile est notre package Layrinthe/Payment car avec une seule ligne, vous vous épargnez une dizaine de lignes de codes en plus de l'implémentation de la sécurité. Mais nous vous montrerons les autres méthodes au cas où vous vous sentez moins à l'aise avec le package.

Labyrinthe Package:
La simplicité du package permet une intégration rapide en une seule ligne. Cliquez sur Layrinthe/Payment pour voir comment intégrer le sandbox chez vous.

PHP
    $labyrinthe = LabyrintheServiceProvider::sandbox($array);

PHP Native:
Ce code vous permet de faire l'appel des APIs comme avec le package Labyrinthe/Payment mais présente moins d'avantages que le package. Notamment la gestion de la sécurité, le filtre des paramètres (required, type, length), la concision du code, etc.

PHP
    $data = array(
        # Remplacez par vos propres informations
        "token" => 'xxxxxxxxxxxxxxxxxxxxxxxxx',
        "phone"=> "0891234567",
        "reference" => "_reference",
    );
    $gateway = "https://payment.labyrinthe-rdc.com/api/beta/mobile";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $gateway);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 300);
    $response = curl_exec($ch);
    if(curl_errno($ch)) {
        # Erreur !
    }else {
        curl_close($ch);
        $jsonRes = json_decode($response);
        $jsonRes->success;
        if ($jsonRes->success) {
            # La requête retourne la bonne valeur 
        }else{
            # La requête a rencontré des problèmes 
        }
        echo "<pre>";
        print_r($jsonRes);
        echo "<pre>";
    }