2015-03-18 2 views
1

Я младший разработчик (новый на работе), которому поручено выполнить обновление от Sagepay 2.23 -> 3.00. (на сайте, который мы недавно приняли) Я внес изменения в VPSProtocol, и я думаю, что я успешно выполнил переход к AES.Обновление Sagepay от 2.33 до 3.00 AES и форму ответа

Однако, предыдущий фрагмент кода был установлен:

$strCrypt = base64Encode(SimpleXor($strPost,$strEncryptionPassword)); 

Я намерен комментировать, что, и выскочили это:

function pkcs5_pad($text, $blocksize) 
{ 
    $pad = $blocksize - (strlen($text) % $blocksize); 
    //echo "<br/>Padding:".str_repeat(chr($pad), $pad)."<"; 
    return $text . str_repeat(chr($pad), $pad); 
} 

function encryptFieldData($input) 
{ 
    $key = $strEncryptionPassword; 
    $iv = $key; 

    $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128, "", MCRYPT_MODE_CBC, ""); 
    if (mcrypt_generic_init($cipher, $key, $iv) != -1) 
    { 
     $cipherText = mcrypt_generic($cipher,$input); 
     mcrypt_generic_deinit($cipher); 

     $enc = bin2hex($cipherText); 
    } 
    return $enc; 
} 

$datapadded = pkcs5_pad($str,16); 
$cryptpadded = "@" . encryptFieldData($datapadded); 

И сделал изменение здесь:

<input type="hidden" name="Crypt" value="<? echo $cryptpadded ?>"> 

Я думаю, этого достаточно, я жду доступа к тестовой среде Sagepay.

С точки зрения поля ответа я не совсем понимаю, где реализовать требуемые изменения. Приведенный пример кода содержит эту информацию, но существующий файл php не содержит никаких данных для поля ответа.

Любая помощь или руководство будут очень оценены. спасибо!

ответ

0

Посмотрите, что отправляется как URL-адрес «Успех/Неудача» со столбцом транзакции, а затем вернитесь к коду оттуда. Вам в основном нужно расшифровать строку crypt, возвращаемую Sage Pay, которая содержит результат транзакции/идентификаторы транзакций и (не забудьте удалить «@» перед попыткой расшифровки).