有没有人知道使用PHP& amp;的Barclaycard ePDQ MPI的示例脚本?卷曲

时间:2011-04-25 13:45:07

标签: php curl

我正在使用PHP创建一个站点,它必须访问Barclaycard ePDQ MPI支付界面。我在使用旧的HSBC XML API之前已经完成了这个,但是Barclaycard看起来让我有些头疼。 HSBC API有一些非常糟糕的文档和几个例子,所以我最终必须在大约2年前自己发布一个例子(不是在stackoverflow上)。

我正在做的是从我的数据库收集客户信息,获取我在服务器上使用JavaScript然后使用PHP验证的卡详细信息,创建XML包装并使用CURL发布。我整个上午都没有问题,所以有人知道使用Barclaycard ePDQ支付界面的一些好例子吗?

我已经设置了所有要求(SSL等),但到目前为止我没有收到Barclaycard的回复。我宁愿找到一个在本网站上发布各种问题的好例子。

请转发任何好的网址,我通过Google找到的很少。

干杯

1 个答案:

答案 0 :(得分:0)

我提出了另一个问题,但在此期间......这里是你必须做的正确的CURL设置......

我意识到变量可能会更好,我应该把它作为一个对象,但我只想在那里快速回答。该脚本还需要筛选不同的接受和错误消息,但这是我到目前为止所得到的......

$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();
}

希望这有助于其他需要设置的人!