我一直在努力解决这个问题一整天(浪费我的时间)。 我还有一位来自sagepay的技术人员,但他们只是花了很长时间才完成这项任务。
当我提交以下信息时,我得到3121:DeliveryFirstnames值太长
VendorTxCode=fake
&Amount=320
&Currency=GBP
&Description=Ticket
&SuccessURL=obscured
&FailureURL=obscured
&VendorEmail=obscured.com
&CustomerName=John Deer
&CustomerEMail=obscured.com
&BillingSurname=aaqib
&BillingFirstnames=Abc
&BillingAddress1=abc
&BillingCity=London
&BillingPostCode=se1234
&BillingCountry=GB
&DeliverySurname=Deer
&DeliveryFirstnames=John
&DeliverAddress1=Bleh
&DeliveryCity=TEST
&DeliveryPostCode=1234
&DeliveryCountry=GB
&AllowGiftAid=0
我在这个领域尝试了各种组合,但都没有。
答案 0 :(得分:1)
很抱歉听到您今天遇到解决问题的困难。您能否将测试交易发布到我们的showpost地址,以便我为您调查。地址为https://test.sagepay.com/showpost/showpost.asp。
如果您可以让Sage Pay知道您尝试此交易的时间,我们就可以找到它。
DeliveryFirstnames值不能超过20个字符。对于DeliverySurname,BillingFirstnames和BillingSurname也是如此。如果该值超过20个字符,您将收到该错误。
谢谢,
Sage Pay支持
答案 1 :(得分:0)
好的,经过大的努力,我改变了我的加密功能,问题得到了解决。 以下是我目前用于成功付款的功能。
function pkcs5_pad($text, $blocksize)
{
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
function encryptFieldData($input)
{
$key = 'your password here';
$iv = $key;
$input = pkcs5_pad($input, 16);
$strCrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $input, MCRYPT_MODE_CBC,$iv);
return "@".bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $input, MCRYPT_MODE_CBC, $iv));
}
cryptString = 'All your encryption data seperated by an &';
$cryptedData = encryptFieldData($cryptString);