小程序支付签名失败,参数都检查过了还是报错?
用微信小程序支付时,签名一直失败返回”签名错误”。已经确认参数(appid、timestamp等)正确,也按文档排序了参数,但依然报错。签名算法用的是HMAC-SHA1,生成的sign和后端返回的一致吗?
代码示例:
const signStr = Object.keys(params).sort().map(k => <code>${k}=${params[k]}</code>).join('&');
const sign = crypto.createHmac('SHA1', '密钥').update(signStr).digest('hex');
后端返回的prepay_id存在,但wx.requestPayment执行时提示”fail sign error”。是不是时间戳或随机字符串格式有问题?或者参数排序需要排除某些字段?
检查下timestamp是不是秒级的,不是的话除以1000转成秒。再不行就睡一觉明天再调吧,太累了容易出错。