签名字符串如下:
appid=wx47b85622676e6603&body=攀花果-早春枇杷&mch_id=1524644371&nonce_str=DB8AF2A0BC1F4ED3B764FBE6780E04A3¬ify_url=http://www.panhuaguo.cn/&out_trade_no=20190311111243&spbill_create_ip=117.176.205.62&total_fee=1.00&trade_type=JSAPI&key=pan*********************************41bwr
提交数据如下:
<xml>
<appid>wx47b85622676e6603</appid>
<mch_id>1524644371</mch_id>
<nonce_str>DB8AF2A0BC1F4ED3B764FBE6780E04A3</nonce_str>
<body>攀花果-早春枇杷</body>
<out_trade_no>20190311111243</out_trade_no>
<total_fee>1.00</total_fee>
<spbill_create_ip>117.176.205.62</spbill_create_ip>
<notify_url>http://www.panhuaguo.cn/</notify_url>
<trade_type>JSAPI</trade_type>
<sign>4F6E9A72274DBFCEA2F3B5E899239957</sign>
</xml>
返回信息:
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[签名错误]]></return_msg>
</xml>
哪位帮解答一下!!!
提交数据中的中文改成英文的就签名通过,请问中文信息在生成签名时就要转换成utf-8编码格式吗?
你好,请按照以下几点仔细检查:
1) 使用微信的在线签名工具检查签名是否和程序生成的一致
https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 签名工具用谷歌打开。
选择MD5,XML,然后把请求参数xml放进去,就能校验签名。
2)如果和微信的在线签名工具一致,说明程序没有错误,确定是API密钥错误(被别人改动或者记错了)
在商户平台的账户信息中更改API密钥(账户设置-安全设置-API安全), 15分钟后生效
2.1)统一下单用的是A商户号,也必须是A商户号登陆商户平台设置key才对。
2.2)要注意统一下单请求参数中total_fee参数的类型是int类型。
3) 如果和微信的在线签名工具不一致,说明程序有错误,常见的错误可能是:
3.1) 编码问题,确保所有的都是utf-8的. 如果有中文, 可以先把中文改成英文重新签名,看是否签名错误,如果英文不会错中文才会错,基本肯定是编码问题
3.2:)消息中字段大小写和文档中完全一致