rolai / wechat-payment

WeChat payment APIs for Node.js 微信支付API
39 stars 12 forks source link

为什么会返回签名失败? #1

Open David-Pan opened 7 years ago

David-Pan commented 7 years ago

是不是微信官方给的签名方法中MD5编码有问题,要转为utf-8?

rolai commented 7 years ago

检查一下输入的参数是否有问题: wxPayment.init({ appid: 'xxxxxxxx', mch_id: '1234567890', apiKey: 'xxxxxxxxxxxxxxxxx', //微信商户平台API密钥 pfx: fs.readFileSync('./apiclient_cert.p12'), //微信商户平台证书 (optional,部分API需要使用) });

微信签名的具体规范参考:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

David-Pan commented 7 years ago

嗯嗯。https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1这个是微信支付接口签名校验工具。 我把nodejs生成的xml文本直接复制上去,签名是校验通过的,但是,如果我选择“自定义参数”生成签名的方式,把我自己的appid之类的参数填上去,生成的签名和程序返回的签名又是不一样的。最终在前端显示的结果是,支付签名验证失败。

David-Pan commented 7 years ago

这是什么原因导致的?我的支付授权目录、JS安全域名等,都已经设置正确了,很无语。。。麻烦你可以加一下我QQ704588727吗?

lvsjack commented 7 years ago

我也是,签名失败了

rolai commented 7 years ago

签名失败基本上是没有按微信支付的规范来签名导致的,请仔细阅读微信支付的说明文档. 另外,可以参考:https://github.com/rolai/RedPacket/blob/master/wechat-utils.js

caiya commented 6 years ago

@David-Pan @lvsjack @rolai 我也报错说是签名失败,请教下各位最后都是怎么解决的呢?