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

哈哈----在开源社区中无意中找到了关于微信全套开发的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;
         }
    }

 

posted on 2018-08-26 00:42  iscys  阅读(749)  评论(0编辑  收藏  举报