我在调用统一下单接口时获得返回错误 代码是 `FAIL` 但是提示是说 `签名错误`
可是根据文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
签名错误的错误码应该是 `SIGNERROR`
由于反复确认了签名方法并没有问题 参数也反复确认了 所以想知道这里是不是有其他问题文档里没有描述的?
请求的xml是
```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<appid>申请下来的appid</appid>
<mch_id>商户号id</mch_id>
<nonce_str>FFiOlwht1m9PW7xS9iCXdQT2fOTwQt4S</nonce_str>
<body>weiyu-jsapi</body>
<detail>nothing2say</detail>
<out_trade_no>RzXrLv1nPkFfRqsj</out_trade_no>
<total_fee>3</total_fee>
<spbill_create_ip>测试手机的外网ip</spbill_create_ip>
<notify>我的回调url
<trade_type>JSAPI</trade_type>
<sign>BF52D4BFE00CA5997B00BDD706636DE6</sign>
</root>
```
返回的xml是
```
<xml><return_code><![CDATA[FAIL]]></return_code>\n<return_msg><![CDATA[签名错误]]></return_msg>\n</xml>
```
---------------------------------------------------------------------------------------------
按照回复 到那个在线测试工具那测试 我生成的xml和sign都通过了 所以认为是密钥问题 找领导修改了密钥
用新的还是一样的错误 并且在测试工具那确认仍然能通过
你好,请按照以下几点仔细检查:
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:)消息中字段大小写和文档中完全一致