我有一个有效的表单集成,但需要迁移到表单集成的 v 3.00,它需要 AES 编码而不是 Xor。示例代码是一个隐藏加密方法的 J2EE 应用程序。SagePay 支持无法提供加密/解密的 API 类/方法;我怀疑它们在那里,如果有人使用过它们并可以就此提供建议吗?
或者,我正在尝试在我自己的代码中进行加密。SagePay 再次没有出现,因为他们没有提供足够的信息来说明加密是如何完成的。我相信我已经弄清楚他们提供的密码既用于加密密钥又用于 iv,尽管他们没有在集成指南中说明这一点。这是我尝试对 inString 进行编码的代码
byte[] byteDataToEncrypt = inString.getBytes();
final byte[] keyBytes = webSite.encryptionPassword().getBytes("ASCII");
final byte[] ivBytes = webSite.encryptionPassword().getBytes("ASCII");
final SecretKey key = new SecretKeySpec(keyBytes, "AES");
final IvParameterSpec iv = new IvParameterSpec(ivBytes);
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] byteCipherText = cipher.doFinal(byteDataToEncrypt);
byte[] aesEncryptedBase64encoded = Base64.encodeBase64(byteCipherText);
String crypt = "@" + new String(aesEncryptedBase64encoded);
我不知道为什么 @ 需要在前面,但我已经在其他代码中看到它已经在线发布用于 SagePay 集成。没有它,SagePay 测试服务器告诉我加密方法无法识别。有了它,它告诉我缺少货币字段,尽管我知道货币字段在源中设置为“GBP”并且我正在使用提供的测试服务器密码。
任何来自 SagePay 或开发者社区的帮助都非常感谢。约翰