zoukankan      html  css  js  c++  java
  • 微信公众号开发(3)---使用开源组件开发进行接口验证

    在经过一系列的微信开发后,关于微信的开发确实内容很庞大,一些基础的组件都要有我们开发者进行编写,有没有简单的方法呢?

    哈哈----在开源社区中无意中找到了关于微信全套开发的sdk,里面包含了微信开发中所有的功能实现,作者是binarywang,也是一直在更新,社区还是挺活跃的。

    献上 github地址: https://github.com/Wechat-Group/weixin-java-tools   !里面有一些开发的文档,大大便利我们的开发--

     接口配置(无需我们的工具类,一些验证已经帮我们进行了实现):

    1.导入pom依赖:

    <!-- 微信开发Java SDK公共模块 -->
    <dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-common</artifactId>
    <version>3.1.0</version>
    </dependency>

    <!-- 微信公众号Java SDK-->
    <dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-mp</artifactId>
    <version>3.1.0</version>
    </dependency>

    2,微信验证(只需要创建 WxMpInMemoryConfigStorage--存放配置信息,和 WxMpServiceImpl 两对象就可完成验证):

      (1) 我使用spring 将这两个类进行管理,代码直接注入就可以  

    <!-- 微信相关组件交给spring 管理 -->
    	<!-- 微信基础配置,存放token 秘钥,我们也可以直接将后台微信配置放进去 -->
    	<bean id="config" class="me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage"></bean>
    	<!-- 功能实现的方法 -->
    	<bean id="wxMpService" class="me.chanjar.weixin.mp.api.impl.WxMpServiceImpl"></bean>
    

      (2),注入后直接使用

      @Autowired
        private WxMpInMemoryConfigStorage config;//微信后台配置
        @Autowired
        private WxMpService wxMpService;//实现方法
        
        /*
         * 该方法与微信后台配置的url进行对接,是get的请求,是微信开发的第一步
         * 微信后台会给我们接口传入signature,timestamp,nonce,echostr
         * 进行sha1 加密与signature比较,TRUE 则返回echostr给微信
         * author:cys
         */
        @RequestMapping(value="/wxopen" ,method=RequestMethod.GET)
        public void wxopen(HttpServletResponse response,String signature,String timestamp,
                        String nonce,String echostr) throws IOException {
            
             response.setContentType("text/html;charset=utf-8");
            //用来存放我们后台配置的信息
            config.setToken("chenyuesong");
            wxMpService.setWxMpConfigStorage(config);
    
            //此方法对微信的验证进行了封装--我们无需自己实现
            wxMpService.checkSignature(timestamp, nonce, signature);
                @Cleanup//lombok 管理释放资源,类似于try catch finally,用不上可直接去除
                PrintWriter writer =response.getWriter();
            //验证返回false时候
             if (!wxMpService.checkSignature(timestamp, nonce, signature)) {
                  // 消息签名不正确,说明不是公众平台发过来的消息
                     
                 writer.println("非法请求");
                  return;
                }
            
             //验证返回true时候,返回微信echostr
             if (StringUtils.isNotBlank(echostr)) {
                  // 说明是一个仅仅用来验证的请求,回显echostr
                 writer.println(echostr);
                  return;
                }
             else {
                 return;
             }
        }
    原创打造,多多指教
  • 相关阅读:
    go语言goroutine
    go语言接口
    go语言的map
    go语言切片
    go语言数组
    django的信号机制
    python redis 实现简单的消息订阅
    scrapy中使用selenium来爬取页面
    尝试用tornado部署django
    控制台输出太多导致项目启动过慢
  • 原文地址:https://www.cnblogs.com/iscys/p/9536028.html
Copyright © 2011-2022 走看看