Я добавил весь параметр в URL-адрес 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>
Ошибка:
Кто-то может помочь мне решить эту проблему.
Я использую данные тестовой учетной записи с этим URL: « test.sagepay.com/gateway/service/vspform-register.vsp »; он работает , То же, что и данные реального счета, с ' live.sagepay.com/gateway/service/vspform-register.vsp '; но он вызывает ошибку: поле «Валюта» отсутствует. Некоторые могут мне помочь. –
У меня была аналогичная проблема, моя проблема оказалась другим ключом, если вы отправляете форму на
test.sagepay.com/gateway/service/vspform-register.vsp
или
live.sagepay.com/gateway/service/vspform-register.vsp
Тот факт, что поле «Валюта» находится, было немного красной селедки.
Надеюсь это поможет.
Надеюсь, вы решите свою проблему. В случае не попробуйте следующее.
Найдите function pkcs5_pad
в sagepay.php, которая будет помещена в папку lib. И замените содержимое внутри этой функции следующим образом:
$pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad);
У меня была аналогичная проблема, и это решило для меня. Дайте мне знать, если это вам поможет.