Sagepay从2.33升级到3.00 AES&;回复表格


Sagepay upgrade from 2.33 to 3.00 AES & response form

我是一名初级开发人员(新上任),负责从Sagepay 2.23->3.00进行升级。(在我们最近接管的一个网站上)我已经对VPSProtocol进行了更改,我认为我已经成功地实现了向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文件似乎不包括响应字段的任何数据。

如有任何帮助或指导,我们将不胜感激。谢谢

查看事务帖子中作为成功/失败URL发送的内容,然后从那里返回代码。您基本上需要解密Sage Pay返回的密码字符串,其中包含交易结果/transactionID和(请记住在尝试解密之前删除"@")。