Sagepay 3121:DeliveryFirstnames值太长

时间:2014-01-20 12:50:06

标签: sagepay

我一直在努力解决这个问题一整天(浪费我的时间)。 我还有一位来自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

我在这个领域尝试了各种组合,但都没有。

2 个答案:

答案 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);