我是一名初级开发人员(新工作人员),负责从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文件似乎不包含响应字段的任何数据。
非常感谢任何帮助或指导。 谢谢!
答案 0 :(得分:0)
查看使用事务帖子发送的成功/失败URL的内容,然后从那里返回代码。您基本上需要解密Sage Pay返回的加密字符串,其中包含交易结果/交易ID以及(记得在尝试解密之前删除&#39; @&#39;)。