我一直在使用Chase Paymentech作为客户的电子商务网关。最近他们将托管服务转移到了GoDaddy,从那以后电子商务一直没有运作。我曾尝试使用Chase和GoDaddy对此进行故障排除,但最终都没有得到很多帮助。我已经确认Chase已将GoDaddy托管服务器的新IP附加到我的帐户。
我从Chase技术支持部门回复的答复是我的请求永远不会到达他们的网关。然而,当我尝试时,我得到了一个XML响应。
$url = "https://orbital1.paymentech.net"; // use for production
$fltGrandTotal = "1.00";
$exp = "0117";
$strCardNumber = "4242424242424242";
$_SESSION[UUID] = '9999555444';
$fltGrandTotal = str_replace(',', '', $fltGrandTotal);
$total = number_format($fltGrandTotal, 2);
$total2 = str_replace('.', '', $total);
$post_string="
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Request>
<NewOrder>
<IndustryType>EC</IndustryType>
<MessageType>AC</MessageType>
<BIN>000002</BIN>
<MerchantID>XXXXXXX</MerchantID>
<TerminalID>001</TerminalID>
<CardBrand></CardBrand>
<AccountNum>$strCardNumber</AccountNum>
<Exp>$exp</Exp>
<OrderID>$_SESSION[UUID]</OrderID>
<Amount>100</Amount>
<Comments></Comments>
<ShippingRef></ShippingRef>
</NewOrder>
</Request>
";
$header= "POST /authorize/ HTTP/1.0\r\n";
$header.= "MIME-Version: 1.0\r\n";
$header.= "Content-type: application/PTI43\r\n";
$header.= "Content-length: " .strlen($post_string) . "\r\n";
$header.= "Content-transfer-encoding: text\r\n";
$header.= "Request-number: 1\r\n";
$header.= "Document-type: Request\r\n";
$header.= "Interface-Version: Test 1.4\r\n";
$header.= "Connection: close \r\n\r\n";
$header.= $post_string;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
if (curl_errno($ch)) {
//print curl_error($ch);
} else {
curl_close($ch);
}
$sitemap = simplexml_load_string($data);
foreach($sitemap as $url) {
$approval = $url->ApprovalStatus;
$txRefNum = $url->TxRefNum;
$message = $url->StatusMsg;
$authcode = $url->AuthCode;
}
echo "approval: $approval<br>";
echo "txRefNum: $txRefNum<br>";
echo "message: $message<br>";
echo "authcode: $authcode<br>";
我收到的XML是:
<?xml version="1.0" encoding="UTF-8"?><Response><QuickResponse HcsTcsInd="T" Version="2"> <ProcStatus>20400</ProcStatus><StatusMsg StatusMsgLth="15">Invalid Request</StatusMsg></QuickResponse></Response>
他们已经让我做了一些事情,例如设置与以前相同的托管环境,使用完全相同的PHP版本等等。我真的不明白为什么这会对事情产生影响。< / p>
答案 0 :(得分:3)
他们的技术支持(哈!)答案具有误导性,因为像这样的快速响应甚至不会记录到他们可以“看到”的系统中。
有意减轻轨道响应以减轻“黑客网络钓鱼”。为防止泄漏攻击媒介,任何安全问题都会产生简约的错误响应。如果发生这种情况,并假设合法使用正在进行中,请至少验证以下内容:
简而言之,使用与正在使用的XML版本号相关的PTI规范文档验证您发送的每种事务类型。当该文档将字段指示为“有条件”时,确保该条件与您提交的特定交易相关。如果某个字段被记录为“可选”且您没有任何要提供的内容,则不包含该字段。