状态详细信息:3045:缺少货币字段

时间:2014-09-19 19:03:58

标签: php payment-gateway sagepay

我在Sagepay网址中添加了所有参数。但它丢失了错误货币。 我无法解决这个问题。

代码:

$cryptString  = 'VendorTxCode='.$this->getVendorTxCode();
     $cryptString.= '&ReferrerID='.$this->getReferrerID();
     $cryptString.= '&Amount='.sprintf("%01.2F",($order->order_total_price-$order->order_fee));
     $cryptString.= '&Currency=GBP'; //Status Detail:   3045 : The Currency field is missing.
     $cryptString.= '&Description='.$this->getDescription();
     $cryptString.= '&SuccessURL=https://testurl/sage/success.php';
     $cryptString.= '&FailureURL=https://testurl/sage/fail.php';
     $cryptString.= '&CustomerName=Customer Name';
     .......

最后我打电话给加密方法

$cryptedString = $this->encryptAndEncode($cryptString);

表格标记:

<form name='sagepay' action='{$pm_sagepay_url}' method='post'>
        <input type='hidden' name='VPSProtocol'  value='3.00'>
        <input type='hidden' name='TxType' value= 'PAYMENT'>
        <input type='hidden' name='Vendor' value= 'protxross'>
        <input type='hidden' name='Crypt' value= '{$cryptedString}'>
         <input type='submit' value='{!pay!}' name='submit2' alt='{!sagepay_pay!}' >
</form>

错误:

  • 状态详细信息:3045:缺少货币字段。

有人可以帮我解决这个问题。

enter image description here

我在此网址上使用了测试帐户详细信息:' test.sagepay.com/gateway/service/vspform-register.vsp '; 正常运作,与“ live.sagepay.com/gateway/service/vspform-register.vsp ”的实时帐户详细信息相同; 但它会抛出错误:缺少货币字段。有些人可以帮助我。 -

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,如果将表单发布到

,我的问题就变成了一个不同的密钥
test.sagepay.com/gateway/service/vspform-register.vsp

live.sagepay.com/gateway/service/vspform-register.vsp

“货币”字段正在选址的事实是一个红色的鲱鱼。

希望这有帮助。

答案 1 :(得分:0)

我希望你能解决你的问题。如果没有尝试以下。

在sagepay.php中搜索function pkcs5_pad,它将放在lib文件夹中。并按如下方式替换该函数内的内容:

$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);

我有类似的问题,这为我解决了。如果这有助于你,请告诉我。