我正在尝试将Secure Hosting (UPG) payment gateway与我的网站上的最终结帐相结合。一切正常,除了我试图从他们的Technical Integration Guide(见第17-9页)中受益于高级Secuitems安全系统。
以下是用于生成唯一哈希的 PHP 代码:
$secuStringFields = "shreference=SH20XXXX&secuitems=".$secuitems."&secuphrase=yourphrase&transactionamount=".$transactionamount;
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, "https://www.secure-server-hosting.com/secutran/create_secustring.php");
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $secuStringFields);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_REFERER, "http://www.yourdomain.com/basket.php");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
$secuString = trim(curl_exec ($ch));
if($secuString == "") $secuString='Call to create_secustring Failed';
curl_close ($ch);
以下建议here使用经典ASP ,这是我正在编写的语言(我知道...遗留系统!):
Set objXMLHttp = CreateObject("Microsoft.XMLHTTP")
objXmlHttp.open "POST", "https://www.secure-server-hosting.com/secutran/create_secustring.php", False
objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXmlHttp.setRequestHeader "REFERER", "http://www.yourdomain.com/basket.asp"
objXmlHttp.send "shreference=SH20XXXX&secuitems="&secuitems&"secuphrase=yourphrase&transactionamount="&transactionamount
secuString = objXmlHttp.responseText
问题在于我不断收到Referral Check Failed
错误消息,根据上述技术指南第19页,该消息表示“请求的引用者与客户端中配置的URL不匹配”控制面板”。我已经确保这两个(推荐人和面板中的一个)是相同的。
我也尝试按this answer将RequestHeader
字符串设置为X-Alt-Referer
,但无济于事。
在联系UPG支持团队时,他们帮助告诉我“当你打电话给我们的系统时,没有收到推荐人”,并且“我们无法协助开发你的代码因为我们不是ASP开发人员,无法为你提供足够的答案“。
嗯,至少我知道问题是他们没有收到推荐人网址。所以,问题是:有谁知道为什么以及如何解决这个问题?或者有更好的方法来实现同样的目标吗?
如果我错过了显而易见的事情,请多多感谢并提前道歉。
答案 0 :(得分:1)
UPG的请求标头检查可能区分大小写,在这种情况下我会更改
objXmlHttp.setRequestHeader "REFERER", "http://www.yourdomain.com/basket.asp"
到
objXmlHttp.setRequestHeader "Referer", "http://www.yourdomain.com/basket.asp"
这是我在设置中使用的格式,它正常工作和验证。
以下行似乎也存在问题
objXmlHttp.send "shreference=SH20XXXX&secuitems="&secuitems&"secuphrase=yourphrase&transactionamount="&transactionamount
在" secuphrase = yourphrase"
之前,引号内应该有&符号(&)