在post调教数据https://api.mch.weixin.qq.com/pay/unifiedorder 返回
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[签名错误]]></return_msg>
</xml>
但是到工具 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1 是效验通过的
appid:wx36901e1fe756b722
老哥你的解决了吗?跟你同样的问题,无从下手,心累。
这个问题是你们把API密钥和APP_SECRET弄混了
签名需要的是API密钥,设置路径如下:
微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置
我也遇到了同样的问题,最后发现是因为body参数里面使用了中文造成的。
解决方法写出来供大家参考一下:
md5加密的时候字符串使用utf-8。(这个网上好多搜一下就有)
请求微信接口的时候http的头部信息的Content-Type参数里面写上text/xml;charset=utf-8
问题确实是由于参数里有中文造成的,但根本原因是在代码里,在用HMAC-SHA256算法加密的时候,调用的WxPayData类中的CalcHMACSHA256Hash方法,该方法中有一段var enc = Encoding.Default;然后根据enc来将字符串编码成字节数组,调试的时候发现默认是gb2312,而微信官方使用的是utf-8编码,所以发送过去验证不符,返回签名错误。
我的解决了,在本地测试一直成功,部署到测试环境就签名错误;解决办法:签名生成字段中不要出现汉字,用英文,这样编码不会错误(尤其注意签名类型 sign_type 字段)
看下apiv3 key 和 api key 是两个,后台要配apikey,配错了就报签名错误,我中了这个毒
我修改了apikey,怎么还不行呢
我的解决了,原因是商户账号绑定的appid失效了,大家注意下产品中心->开发设置里有没有失效的appid,重新绑定下就行
我也遇到这个问题了,用微信的工具验证了签名是ok的,但是预支付的时候提示签名错误。没个官方解释下吗?
是真坑坑呀,我确定没有设置错误API密钥,找了一天"签名错误"的问题,最后重新设置了一遍API密钥就不报错了
亲爱的们 经过 3天没头没脑的摸索,第三方开发没解决 ,微信客服没解决,关于微信支付提交订单显示 微信签名错误。已经完美解决 ,敲黑板 ,微信商户 API密匙设置之后还要在小程序里 填入商户号,及你设置的密匙,不是6位的支付密码,而是API 的32密匙
重新设置了一下32位秘钥可以了