zoukankan      html  css  js  c++  java
  • Java微信公众平台开发之接入(Spring Boot 2.X)

    声明 : 本系列纯属自己为了学习而编写,均已测试号为例,如果不正之处,恳请指正,谢谢!

    接入微信公众平台开发,开发者需要按照如下步骤完成:

    1、填写服务器配置

    由于只是接入,只需要一个Controller的方法路径 和 定义一个token,可以写在配置文件里

    2、验证服务器地址的有效性

    
    
    /**
    * 处理微信服务器发来的get请求,进行签名的验证
    * <p>
    * signature 微信端发来的签名
    * timestamp 微信端发来的时间戳
    * nonce 微信端发来的随机字符串
    * echostr 微信端发来的验证字符串
    */
    @GetMapping(value = "wechat")
    public void validate(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String signature = request.getParameter("signature");
    String timestamp = request.getParameter("timestamp");
    String nonce = request.getParameter("nonce");
    String echostr = request.getParameter("echostr");
    IOUtils.write(SignatureUtil.checkSignature(signature, wechatAccountConfig.getToken(), timestamp, nonce) ? echostr : null, response.getOutputStream());
    }

    /**
    * 此处是处理微信服务器的消息转发的
    */
    @PostMapping(value = "wechat")
    public void processMsg(HttpServletRequest request, HttpServletResponse response) throws Exception {
    //调用核心服务类接收处理请求
    defaultMsgDispose(request.getInputStream(), response.getOutputStream());
    }
     
    /**
    * SHA1加密 验证签名
    *
    * @param signature 微信签名
    * @param params token,timestamp,nonce
    * @return 是否符合
    */
    public static boolean checkSignature(String signature, String... params) {
    Arrays.sort(params);
    String str = StringUtils.join(params);
    String sign = DigestUtils.sha1Hex(str);
    return Objects.equals(signature, sign);
    }

    3、依据接口文档实现业务逻辑

    具体源码:https://github.com/philjing/my_wechat

  • 相关阅读:
    算法视频库下载常用网址(转载)
    Python study 1
    $X-Real-Ip和$X-Forwarded-For的区别
    python装饰器
    python迭代器和生成器
    python函数动态参数详解
    python常用模块
    python 正则re模块
    pycharm5新版注册
    老男孩python自动化运维作业2
  • 原文地址:https://www.cnblogs.com/phil_jing/p/10010550.html
Copyright © 2011-2022 走看看