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

  • 相关阅读:
    mybatis源码(八) Mybatis中的#{} 和${} 占位符的区别
    mybatis源码(七)mybatis动态sql的解析过程下篇
    mybatis源码(六)mybatis动态sql的解析过程上篇
    JDBC的API介绍
    mybatis源码(五)mybatis日志实现
    jmeter: 报错锦集
    python3升级后pip提示TLS/SSL错误问题
    Pytest+Jenkins+Allure
    建议
    Android Studio Button事件的三种方式
  • 原文地址:https://www.cnblogs.com/phil_jing/p/10010550.html
Copyright © 2011-2022 走看看