收藏
回答

小微商户申请入驻API提示“签名校验失败,请检查后重试”

已在社区搜了很久,没发现可行的解决方案,希望得到微信技术的支持!

场景:

  1. 访问的是申请入驻的接口:https://api.mch.weixin.qq.com/applyment/micro/submit
  2. 请求中的参数字段均按接口文档中填写,已对过多次
  3. 需加密的参数均已按要求加密,需传media_id的也获取到media_id
  4. 签名已通过“签名校验工具”检测
  5. 担心是密钥设置问题,已重新在服务商商户平台重新设置过
  6. 担心是编码问题,测试过不包含任何汉字的参数
  7. 使用的是python语言

访问接口总是“签名校验失败,请检查后重试”,已经被弄哭了。。

回答关注问题邀请回答
收藏

6 个回答

  • 🐘j꯭f꯭.w꯭a꯭n꯭g꯭  🖌
    🐘j꯭f꯭.w꯭a꯭n꯭g꯭ 🖌
    2022-03-06

    有人解决了么?我的这个接口也是这问题。

    在“微信支付接口签名校验工具”上能通过校验。但一提交,就报:

    <xml><return_code><![CDATA[FAIL]]></return_code>
    <return_msg><![CDATA[签名校验失败,请检查后重试]]></return_msg>
    </xml>
    
    2022-03-06
    有用 1
    回复
  • 阿白
    阿白
    2021-09-29

    python开发者可以使用已经封装好的“微信支付 V3 API Python SDK”

    https://github.com/minibear2021/wechatpayv3


    2021-09-29
    有用 1
    回复
  • Colorful
    Colorful
    2022-06-25

    array ( 'return_code' => 'SUCCESS', 'return_msg' => 'OK', 'nonce_str' => 'Two5SQeY4adsFWeE', 'sign' => '128D0CC2A661A27CA6959C17373A380A57B10D1663FCCB430ACF3590A36CC405', 'result_code' => 'FAIL', 'err_code' => array ( ), 'err_code_des' => '该功能已经下线。', )

    访问后 返回结果是 该功能已经下线,该功能不准备开放了么?


    2022-06-25
    有用
    回复
  • 梦尋 # Junjie
    梦尋 # Junjie
    2020-05-14

    我搞支付

    2020-05-14
    有用
    回复 4
  • 微信支付技术助手8
    微信支付技术助手8
    2020-05-14

    请按照以下几点进行排查:

    1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误

    2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)

    3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)

    4、确认参数的大小写,参数名与接口文档一致

    5、签名原串的参数值使用原始值,不需要encode

    6、接口需要使用UTF-8编码

    如果还不行,建议更换一下KEY。

    2020-05-14
    有用
    回复 4
    • 向根
      向根
      2020-05-14
      感谢回复,我按上述步骤进行验证:
      1. 使用签名检测工具确认算法没有问题
          
      2. 同一商户号和密钥请求下列接口都能正确返回:
          https://api.mch.weixin.qq.com/risk/getcertficates
          https://api.mch.weixin.qq.com/secapi/mch/uploadmedia


      3. 接口实际的请求参数与生成签名原串的参数使用的是同一变量,不会有增加或缺少的情况(见5)。


      4. 参数确认和接口文档一致。


      5. 签名和请求过程(python):
          params = { ... } # 生成请求参数
          params["sign"] = self.mk_sha256_sign(params) # 生成签名
          data = mk_xml(params) # 生成xml数据,可通过检查工具
          data = data.encode(“utf-8”) # 转成utf-8格式
          headers = {"Content-Type": "text/xml; charset=utf-8"}
          requests.post(url, headers=headers, data=data, 
                  cert=(self.ssl_cert_path, self.ssl_key_path))


      依然提示 “签名校验失败,请检查后重试”
      2020-05-14
      回复
    • 向根
      向根
      2020-05-14
      我刚才在社区溜了一圈,发现这个接口已经暂停使用了,真是蛋疼。我们的签约客户大多是做海淘的,并没有特约商户的营业执照,请问这个接口微信支付有重新开放的计划吗?如果没有,我们就提前想下其它办法
      2020-05-14
      回复
    • Cai
      Cai
      2021-02-06回复向根
      哪里看暂停使用
      2021-02-06
      回复
    • Colorful
      Colorful
      2022-06-25
      array ( 'return_code' => 'SUCCESS', 'return_msg' => 'OK', 'nonce_str' => 'Two5SQeY4adsFWeE', 'sign' => '128D0CC2A661A27CA6959C17373A380A57B10D1663FCCB430ACF3590A36CC405', 'result_code' => 'FAIL', 'err_code' => array ( ), 'err_code_des' => '该功能已经下线。', )
      访问后 返回结果是 该功能已经下线,该功能不准备开放了么?
      2022-06-25
      回复
  • 向根
    向根
    2020-05-14

    @API团队 如果签名校验失败,能不能返回服务端签名时用的输入,或者输入的md5也行,这样至少能知道是两边内容不一致造成的原因

    2020-05-14
    有用
    回复 3
    • 向根
      向根
      2020-05-14
      签名用的key的md5也可以返回下,排查下是不是key的原因
      2020-05-14
      回复
    • 向根
      向根
      2020-05-14
      小弟在线等各位大佬
      2020-05-14
      回复
    • 向根
      向根
      2020-05-14
      官方的社区支持人员呢?
      2020-05-14
      回复
登录 后发表内容
问题标签