微信公众号,接口服务配置url验证失败的问题

这段时间研究微信公众号,发现了很多坑,现在贴出来做个记录

1、微信公众号在做开发的时候,首先就是对微信的服务接口的配置。让微信能够响应我们的接口。官方的接口文档吧可以这么说,你懂的或者了解他了吧可以说简单些,但是当你刚接触的时候,你会感觉写的是啥啊,压根看不懂。

好了步入正题

首先接口配置,这个就不多说了,图上标的很清楚微信公众号,接口服务配置url验证失败的问题_第1张图片

这个配置好了就是后台接收微信的 验证参数了先来看看微信对这个接口的说明吧

微信公众号,接口服务配置url验证失败的问题_第2张图片

就四个参数,你需要对这几个参数进行加解密啊等操作,然后确认是不是微信发送来的请求,完事后,看到图片上标红的地方了吧,原样返回。

1、什么是原样返回,我接收的string类型,那么我这个接口返回spring类型就ok了,但是问题来了 验证token是吧

2、继续怀疑微信发来的参数都是加密的,需不需要给他解密下返回原来样子了(猜想,但是我明显勾选的的是明文啊),还是token验证失败

3、换个思路,是不是我这就return这种echostr不对了。那就像原来最老的那种返回,咱们把参数直接write到response里面

上图

@GetMapping("/welcome")
  public void checkName(@RequestParam(name = "signature") String signature,
                        @RequestParam(name = "timestamp") String timestamp,
                        @RequestParam(name = "nonce") String nonce,
                        @RequestParam(name = "echostr") String echostr,
                        HttpServletResponse response) throws IOException, AesException {
      System.out.println("-----------------------开始校验------------------------");
      //排序
      String sortString = CheckoutUntil.sort(TOKEN, timestamp, nonce);
      //加密
      String myString = CheckoutUntil.sha1(sortString);
      //校验
      if (myString != null && myString != "" && myString.equals(signature)) {
          System.out.println("签名校验通过");
          //如果检验成功原样返回echostr,微信服务器接收到此输出,才会确认检验完成。
          PrintWriter out = null;
          try {
              out = response.getWriter();
              // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,否则接入失败
              out.print(echostr);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              out.close();
          }
      }

这样返回,发现验证成功了。

网上的说法五法八门的,有的说是要返回xml文本,有的说返回的格式不对,还有的说返回的编码格式不对。最后这种直接写的方法我是配置成功了。后来有人问我为啥一直配置失败,我把我的这个给他,反正他也成功了,记录下。你要成功了点个赞吧哈哈哈 

 

 

你可能感兴趣的:(微信公众号开发,微信开发,服务接口配置,token验证失败,原样返回echostr)