Strapi集成Paytm网关遇RangeError: Invalid key length报错求助
问题诊断与解决:RangeError: Invalid key length(Strapi集成Paytm支付网关)
错误原因分析
该错误核心是Paytm商户密钥(MKEY)长度不符合AES加密算法要求。Paytm官方的paytmchecksum库依赖Node.js的crypto模块生成校验和,而AES加密对密钥长度有严格限制:必须是16位(AES-128)、24位(AES-192)或32位(AES-256)。你的密钥长度不在此范围内,导致加密模块抛出无效密钥长度的错误。
解决步骤
- 检查Paytm商户密钥有效性
登录Paytm商户后台获取你的Merchant Key,确认其长度为16/24/32位,避免复制到多余空格或特殊字符。 - 验证环境变量加载正确性
- 打开项目根目录的
.env文件,确认MKEY的值与Paytm后台的密钥完全一致,无拼写错误或遗漏。 - 可临时添加代码验证密钥加载状态:
运行后查看控制台输出,确保长度为16/24/32中的一个。console.log("Merchant Key Length:", process.env.MKEY?.length);
- 打开项目根目录的
- 排除代码额外处理问题
确保生成签名时直接传入原始密钥字符串,不要对process.env.MKEY进行编码、转义等额外操作,你的当前代码中PaytmChecksum.generateSignature的参数使用方式是正确的。 - 重启服务并测试
修正密钥后重启Strapi服务,重新发起支付请求验证错误是否解决。
额外注意事项
- Paytm测试环境与生产环境使用不同的商户密钥,确认使用的是对应环境的密钥。
- 若密钥长度符合要求但仍报错,检查是否存在字符编码问题(如包含非ASCII字符),此时需重新生成商户密钥。
内容的提问来源于stack exchange,提问作者a009a
相关产品推荐
相关产品推荐

