2 votes

Quelqu'un connaît-il un exemple de script pour le Barclaycard ePDQ MPI utilisant PHP & CURL ?

Je suis en train de créer un site en PHP qui doit accéder à l'interface de paiement Barclaycard ePDQ MPI. Je l'ai déjà fait en utilisant l'ancienne API XML de HSBC, mais celle de Barclaycard semble me donner quelques maux de tête. L'API HSBC avait une documentation plutôt mauvaise et peu d'exemples, j'ai donc fini par devoir poster un exemple moi-même (pas sur stackoverflow) il y a environ 2 ans.

Ce que je fais, c'est collecter des informations sur les clients à partir de ma base de données, prendre les détails de la carte que j'ai validés en utilisant JavaScript puis PHP sur le serveur, créer un wrapper XML et poster en utilisant CURL. Je n'ai eu que des problèmes toute la matinée. Quelqu'un connaît-il de bons exemples d'utilisation de l'interface de paiement Barclaycard ePDQ ?

J'ai mis en place toutes les conditions requises (SSL, etc.) mais jusqu'à présent, je n'ai reçu aucune réponse de Barclaycard. Je préfère trouver un bon exemple que de poster diverses questions sur ce site.

Veuillez m'indiquer les bonnes adresses URL, car je n'en trouve que très peu via Google.

Cheers

0voto

Mike Sav Points 2736

J'ai posé une autre question à ce sujet, mais pendant ce temps, voici la configuration correcte de CURL que vous devez faire...

Je me rends compte que les variables pourraient être améliorées et que je devrais en faire un objet, mais je veux juste obtenir une réponse rapide. Le script doit également passer au crible les différents messages d'acceptation et d'erreur mais voici ce que j'ai obtenu jusqu'à présent...

$ch = curl_init();
$url = "https://secure2.epdq.co.uk:11500"; // Don't need to add curl_setopt($curlSession, CURLOPT_PORT, 443); as port is included
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); // $vars is your XML 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$data = curl_exec($ch);
curl_close ($ch);

$xml = new domDocument;
$xml->loadXML($data);

if (!$xml) {
    echo 'Error while parsing the document - Please Contact to determine if payment has gone though';
    exit;
}

$x = $xml->getElementsByTagName( "CcErrCode" );
$approved = $x->item(0)->nodeValue;

$xx = $xml->getElementsByTagName( "CcReturnMsg" );
$CcReturnMsg = $xx->item(0)->nodeValue;

if($approved) {

// the card is valid.
    $y = $xml->getElementsByTagName( "Id" );
    $BCardId = $y->item(1)->nodeValue;

    $z = $xml->getElementsByTagName( "MessageList" );
    $MessageList = $z->item(0)->nodeValue;

    $zz = $xml->getElementsByTagName( "AvsRespCode" );
    $AvsRespCode = $zz->item(0)->nodeValue;

    $zzz = $xml->getElementsByTagName( "AvsDisplay" );
    $AvsDisplay = $zzz->item(0)->nodeValue;

    $zzzz = $xml->getElementsByTagName( "ProcReturnMsg" );
    $ProcReturnMsg = $zzzz->item(0)->nodeValue;

     if($approved == "1"){
       echo "approved!<br />";
       echo "BCardId: " . $BCardId . ", MessageList=" . $MessageList . ", " . $AvsRespCode . ", " . $AvsDisplay . ", " . $ProcReturnMsg;
       die();
     }else{
       // raise that it's been partially accepted, 
       echo "partially approved";
       echo "BCardId: " . $BCardId . ", MessageList=" . $MessageList . ", " . $AvsRespCode . ", " . $AvsDisplay . ", " . $ProcReturnMsg;
       die();
     }

}else{
   echo "you have been completely knocked back";
   $zzzzz = $xml->getElementsByTagName( "Text" );
   $BCard_Text = $zzzzz->item(0)->nodeValue;
   echo "The reason:" . $BCard_Text;    
   die();
}

J'espère que cela aidera d'autres personnes qui doivent mettre en place ce système !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X