2011-04-25 84 views
2

我使用PHP创建一个网站,它具有访问巴克莱卡ePDQ MPI支付接口的巴克莱卡ePDQ MPI的样本脚本。在使用旧的HSBC XML API之前,我已经完成了这个工作,但Barclaycard看起来给我带来了一些麻烦。汇丰的API有一些非常糟糕的文档和很少的例子,所以我最终不得不在2年前自己发布一个例子(不是在stackoverflow上)。有谁知道使用PHP和卷曲

我正在做的是从我的数据库收集客户信息,同时,我已经在服务器上使用JavaScript,然后PHP验证卡的详细信息,创建一个XML包装和后期使用curl。我整个上午都遇到了问题,所以有人知道使用Barclaycard ePDQ支付界面的一些很好的例子吗?

我已经设置了所有的需求(SSL等),但到目前为止,我没有得到来自巴克莱响应。我宁愿找到一个很好的例子,在这个网站上发布各种问题。

请转发任何好的网址,我发现通过谷歌很少。

干杯

+0

我怀疑你觉得没有什么的原因是因为巴克莱想保持这种不是出于安全原因的公共领域。我建议你在这种情况下联系他们,除非你得到一般错误。 – 2011-04-25 14:27:26

回答

0

我提出了另一个问题认为这不过在此之前....这里是准确的卷曲设置你必须做的......

我意识到变量可以更好地和我应该把它作为一个对象,但我只想在那里得到一个快速答案。该脚本还需要通过筛选不同的接受和错误消息,但是这是我这么远......

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

希望这有助于谁必须设置此别人!