Client Web Hébergé MPay

Le client web hébergé MPay est un mini site web installé sur nos serveurs afin de faciliter l'ajout de la fonctionnalité de paiement. Il est accessible à l'URL suivante: https://www.hostedclient.mpay.ytsamy.name/.

Le client hébergé est en fait le client web. Mais vu qu'il est hébergé chez nous, toutes les informations doivent lui être passées en paramètre dans la query string.

L'invocation se fera comme suit (en PHP):

<?php
$params=http_build_query([
      'amount' => 800,
      'description' => 'nom article',
      'return_url' => 'https://www.votresite.com/payment/success?id=%ID%',
      'number_orange' => NUMBER_ORANGE,
      'number_telmob' => NUMBER_TELMOB,
      'shop_name' => NOM_BOUTIQUE,
      'logo_url' => PAIEMENT_LOGO_URL,
      // 'immutableRowIds' => [id1, id2],
    ]);
    $sum=hash('sha256',$params);
    if(defined('PUBLIC_KEY')) {
      while ($msg = openssl_error_string()) {};
      $sumTmp=$sum;
      $rv=openssl_public_encrypt($sumTmp, $sum, PUBLIC_KEY);
      $str="";
      while ($msg = openssl_error_string())
        $str.=$msg . "\n";
      // if($str) print_r($str);
    }
    $query_string = http_build_query(array('enc' => base64_encode($params), 'sum' => base64_encode($sum), 'id' => base64_encode(MPAY_USER_ID)));
?>
<p>effectuer le <a href="https://www.hostedclient.mpay.ytsamy.name/?<?= $query_string ?>">paiement</a>.</p>

Les paramètres à fournir sont les suivants:

  • amount: le montant à payer. Ce peut être un entier ou un tableau (s'il y a plusieurs possibilités)
    [
      [
          'label' => '1 mois',
          'montant' => 200,
      ],
      [
          'label' => '6 mois',
          'montant' => 1100,
      ],
      [
          'label' => '1 an',
          'montant' => 2000,
      ],
    ]
  • description: le nom de l'article à payer
  • return_url: l'url vers laquelle renvoyer l'utilisateur si le paiement est effectif. Au moment de rediriger l’utilisateur, les substitutions suivantes sont faites:
    • %ID% est remplacé par l’identifiant de l’enregistrement dans la base de données MPay
    • %TRANSACTION_ID% est remplacé par l’identifiant du transfert tel qu’indiqué dans le SMS de confirmation de l’opérateur
    • %AMOUNT% est remplacé par le montant du transfert.
  • number_orange et number_telmob: les numéros de téléphone Orange et Telmob sur lesquels l'argent du paiement doit être envoyé
  • shop_name: le nom de votre boutique / site web
  • logo_url: l'url d'un logo (au format 32x32 pixels) à afficher en regard du nom de votre boutique
  • immutableRowIds: si vous avez créé des codes promos (sous forme de transfert avec entre autre, identifiant de transfert) qui peuvent être utilisés par plusieurs personnes, une fois le paiement fait, les enregistrements doivent rester au statut 'Pending' au lieu de passer à 'OK'. Ce paramètre vous permet d'indiquer les identifiants des enregistrements correspondants auxdits codes promos.

La constante PUBLIC_KEY sert à chiffrer la somme de contrôle avant envoi afin de s'assurer qu'un petit malin n'a pas modifié les informations de vérification du paiement. Elle doit être initialisée avec votre clé publique (disponible sur la page d'informations de votre compte). Quant à la constante MPAY_USER_ID, il s'agit de l'identifiant (attention!, l'identifiant, et non l'adresse mail) de votre compte MPay (également disponible sur la page d'informations de votre compte).

Le client hébergé apparaît à l'utilisateur sous la forme suivante:

... ou sur mobile:

  • Le bouton orange «Retour» renvoie à RETURN_URL, défini plus haut.
  • Et si le paiement est effectif, le bouton «Envoyer» renverra l'utilisateur à votre RETURN_URL, après avoir effectué les substitutions (%AMOUNT%, %ID%, %TRANSACTION_ID%)

A vous à présent d'utiliser votre logique interne pour d'abord vérifier que le montant reçu correspond à celui qui était attendu (mesure supplémentaire de sécurité), et ensuite associer ce paiement à un utilisateur donné.