微信支付签名错误
发布于 6 年前 作者 caiguiying 13763 次浏览 来自 问答

在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

8 回复

我也遇到了同样的问题,最后发现是因为body参数里面使用了中文造成的。

解决方法写出来供大家参考一下:

  1. md5加密的时候字符串使用utf-8。(这个网上好多搜一下就有)

  2. 请求微信接口的时候http的头部信息的Content-Type参数里面写上text/xml;charset=utf-8

这个问题是你们把API密钥和APP_SECRET弄混了

签名需要的是API密钥,设置路径如下:

微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>密钥设置

看下apiv3 key   和 api key  是两个,后台要配apikey,配错了就报签名错误,我中了这个毒

保证 key, appid, mch_id 等参数正确的情况下。

生成签名时,参数位置顺序问题也会导致签名错误。

解决方法 -> 工具:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1,位置顺序请参考工具生成的顺序。

我的解决了,在本地测试一直成功,部署到测试环境就签名错误;解决办法:签名生成字段中不要出现汉字,用英文,这样编码不会错误(尤其注意签名类型 sign_type 字段

老哥你的解决了吗?跟你同样的问题,无从下手,心累。

后端什么语言,顺便检查下微信支付的商户号和支付秘钥是否匹配,小程序微信支付要求和微信支付商户的主体一致

有没有官方回复一下

回到顶部