问题描述
我相信我已经遵循了加密表单数据的规范,以便将其发送到支付处理器 Opayo(以前称为 Sage Pay)。但是,我收到一个错误,似乎无法读取加密。
Crypt 字段的规范(VPSProtocol 4.00 版),https://developer-eu.elavon.com/docs/opayo-forms/api-reference/crypt-field
Crypt 字段应包含纯文本形式的交易信息,如 Name=Value 字段,以“&”字符分隔。
该字符串必须使用 AES(块大小 128 位)在 CBC 模式下使用 PKCS#5 填充进行加密。
使用提供的密码作为密钥和初始化向量,并将结果编码为十六进制(确保字母为大写)。
在编码结果的开头添加“@”符号。
生成 Crypt 字段值的实现:
function encodeAES (text,key,iv) {
const cipher = crypto.createCipheriv('aes-128-cbc',new Buffer(key),new Buffer(iv));
const encrypted = Buffer.concat([
cipher.update(text),cipher.final()
]);
return encrypted.toString('hex').toupperCase();
}
function createHash (paramsstring) {
return '@' + encodeAES(paramsstring,OPAYO_FORM_API_PASSWORD,OPAYO_FORM_API_PASSWORD);
}
const crypt = createHash("Name=Value...");
当表单与所有其他必填字段一起发布时,我得到 error 5080。测试门户中未记录任何交易。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)