1

我正在尝试将我网站上的最终结帐与安全托管 (UPG) 支付网关集成。根据他们的技术集成指南(请参阅第 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); 

此处建议使用Classic 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 不匹配”。我确保两者(发送的推荐人和面板中的一组)是相同的。

根据这个答案,我也尝试将RequestHeader字符串设置为,但无济于事。X-Alt-Referer

在联系 UPG 支持团队时,他们很有帮助地告诉我“当您调用我们的系统时,我们(原文如此)没有收到推荐人”并且“我们无法协助开发您的代码,因为我们不是 ASP 开发人员并且无法为您提供足够的答案”。

好吧,至少我知道问题是他们没有收到引荐来源网址。所以,问题是:有谁知道为什么以及如何解决这个问题?或者有没有更好的方法来实现同样的目标?

如果我错过了显而易见的事情,非常感谢和道歉(提前)。

4

1 回答 1

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" 之前的引号内应该有一个和号 (&)

于 2015-05-06T10:54:19.493 回答