Sagepay 3121: значение DeliveryFirstnames слишком длинное

Я пытался решить эту проблему весь день (впустую потратил свое время). Я также привлек технического специалиста из 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

Я пробовал различные комбинации в этой области, и ни одна из них не сработала.


person Schalk Keun    schedule 20.01.2014    source источник


Ответы (2)


Сожалеем, что сегодня вы столкнулись с трудностями при решении проблемы. Не могли бы вы опубликовать тестовую транзакцию на наш почтовый адрес, чтобы я мог исследовать это для вас. Адрес: https://test.sagepay.com/showpost/showpost.asp.

Если вы сможете сообщить Sage Pay, когда вы попытались совершить эту транзакцию, мы сможем ее найти.

Значение DeliveryFirstnames не может содержать более 20 символов. То же самое для DeliverySurname, BillingFirstnames и BillingSurname. Если значение превышает 20 символов, вы получите эту ошибку.

Спасибо,

Платная поддержка Sage

person Sage Pay Support    schedule 20.01.2014
comment
Спасибо, один из сотрудников службы поддержки помог мне, и мы наконец решили проблему. Казалось бы, функция шифрования, которую я получил, сломала значения сообщения и удалила & после «DeliveryFirstnames», тем самым сделав все поля после него частью строки. Я только что использовал новый класс шифрования, и проблема была решена. - person Schalk Keun; 22.01.2014

Итак, после большой борьбы я изменил свои функции шифрования, и проблема была решена. Вот функции, которые я сейчас использую для успешных платежей.

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);
person Schalk Keun    schedule 22.01.2014