【问题标题】:Does anyone know of a sample script for the Barclaycard ePDQ MPI using PHP & CURL有谁知道使用 PHP 和 CURL 的 Barclaycard ePDQ MPI 示例脚本
【发布时间】:2011-08-12 08:18:09
【问题描述】:

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

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

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

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

干杯

【问题讨论】:

  • 我怀疑您一无所获的原因是因为 BarclayCard 出于安全原因不想将其保留在公共领域。我建议您在这种情况下联系他们,除非您收到一般错误。

标签: php curl


【解决方案1】:

我对此提出了另一个问题,但与此同时......这是你必须做的正确 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();
}

希望这可以帮助其他需要设置的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2016-07-24
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    • 2018-05-27
    相关资源
    最近更新 更多