我有一个来自Ogone的测试帐户,我正在尝试测试支付系统。为了测试目的,我用最少的参数构建了一个字符串:
$ogoSHAstring = "AMOUNT=" . $amount . $signature .
"CURRENCY=" . $currency. $signature .
"LANGUAGE=" . $language . $signature .
"ORDERID=" . $orderId . $signature .
"PSPID=" . $pspId . $signature;
它会产生一个如下所示的字符串:
AMOUNT=990MySecretPassphrase!!CURRENCY=EURMySecretPassphrase!!LANGUAGE=nl_NLMySecretPassphrase!!ORDERID=67MySecretPassphrase!!PSPID=MyPSPIDMySecretPassphrase!!
哪个是哈希
1B8B605EAEF8E2FD9350958C0B152E22FD61FADB
发送的表单如下所示:
<form id='ogone' action='https://secure.ogone.com/ncol/test/orderstandard.asp' method='post'>
<input type='hidden' name='AMOUNT' value='$amount' />
<input type='hidden' name='CURRENCY' value='$currency' />
<input type='hidden' name='LANGUAGE' value='$language' />
<input type='hidden' name='ORDERID' value='$orderId' />
<input type='hidden' name='PSPID' value='$pspId' />
<input type='hidden' name='SHASIGN' value='$ogoSHAsign' />
</form>
但我一直收到错误:
unknown order/1/r/
这些是我的设置:
任何帮助?
答案 0 :(得分:11)
如果收到错误unknown order/1/r/
,则这不是由于您的SHA计算。这是由于您的引用网址。正如您在Data and origin verification
标签中配置的那样,您的表单应该从http://www.someurl.com/php/ogone.php
调用Ogone。
我想你是从另一个URL调用它们的。因此,我建议您在测试时从配置屏幕中删除引用URL。或者使用你实际使用的那个。
如果您遇到SHA错误,则会收到unknown order/1/s/
错误。
最后,您的表单也不正确。您只是在表单中编写PHP变量名称,而不是真正echo
。将其更改为:
<form id='ogone' action='https://secure.ogone.com/ncol/test/orderstandard.asp' method='post'>
<input type='hidden' name='AMOUNT' value='<?=$amount?>' />
<input type='hidden' name='CURRENCY' value='<?=$currency?>' />
<input type='hidden' name='LANGUAGE' value='<?=$language?>' />
<input type='hidden' name='ORDERID' value='<?=$orderId?>' />
<input type='hidden' name='PSPID' value='<?=$pspId?>' />
<input type='hidden' name='SHASIGN' value='<?=$ogoSHAsign?>' />
</form>