收藏
回答

获得一个错误码为FAIL的错误

我在调用统一下单接口时获得返回错误 代码是 `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</notify>

  <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都通过了 所以认为是密钥问题 找领导修改了密钥

用新的还是一样的错误 并且在测试工具那确认仍然能通过

最后一次编辑于  03-06  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • 微信支付技术助手
    微信支付技术助手
    03-06

    你好,请按照以下几点仔细检查:

    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:)消息中字段大小写和文档中完全一致


    03-06
    赞同
    回复