我正在使用PHP创建一个站点,它必须访问Barclaycard ePDQ MPI支付界面。我在使用旧的HSBC XML API之前已经完成了这个,但是Barclaycard看起来让我有些头疼。 HSBC API有一些非常糟糕的文档和几个例子,所以我最终必须在大约2年前自己发布一个例子(不是在stackoverflow上)。
我正在做的是从我的数据库收集客户信息,获取我在服务器上使用JavaScript然后使用PHP验证的卡详细信息,创建XML包装并使用CURL发布。我整个上午都没有问题,所以有人知道使用Barclaycard ePDQ支付界面的一些好例子吗?
我已经设置了所有要求(SSL等),但到目前为止我没有收到Barclaycard的回复。我宁愿找到一个在本网站上发布各种问题的好例子。
请转发任何好的网址,我通过Google找到的很少。
干杯
答案 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();
}
希望这有助于其他需要设置的人!