微信开发之如何使用开发工具--weixin-java-tools

摘要:
扩展性强;weixin-java-mp的代码结构设计合理,预留了较多扩展点,很容易自行扩展。--微信开发工具包--˃me.chanjarweixin-java-mp1.3.3me.chanjarweixin-java-common1.3.32、使用weixin-java-tools接入微信开发者使用到两个个比较重要的类:weixin-java-mp工具包中的WxMpService、WxMpInMemoryConfigStorage接入中使用到一个方法:WxMpService中的checkSignature方法,校验接入是否合法。

一、前沿

微信公众平台由于没有提供针对语言的开发包,只公布了一个基于Http协议的接口和加解密的算法sdk,这样给微信公众号的开发者带来很多工作量,除了实现业务逻辑外,还需要自己处理底层的接口协议细节,因此选择一个良好的sdk能够节省这样的工作量,而目前已经有不少的开源sdk可供使用,java语言的微信公众号sdk也有不少,那么作为java开发者我们应该如何选择呢?我将带着各位对java开源的一些微信公众号的sdk进行各方面的对比分析,为读者选择适合自己的sdk包提供一些帮助。

二、为什么要用weixin-java-tools

如下是官方给出的推荐。

  1. 不依赖任何mvc框架

  2. 也不依赖servlet,仅仅作为工具使用,可轻松嵌入到任何系统里(可能会有gson,httpclient的版本冲突问题,但是要比依赖spring mvc、struts、或者其他第三方框架好很多)

  3. 同时支持企业号和公众号

  4. 支持Session,实现了类似于HttpSession的WxSession。

二、几种常用的微信java sdk选型对比

1、初步选型

微信开发之如何使用开发工具--weixin-java-tools第1张

2、静态对比图

微信开发之如何使用开发工具--weixin-java-tools第2张

3、性能分析

这里我不多做介绍,已经有网友对此做了分析介绍,原文地址:http://my.oschina.net/ywbrj042/blog/402049?fromerr=NrYoMOTl   

4、分析总结

经过静态分析对比、使用测试和性能测试综合分析,我认为在java平台中开发微信公众号服务端基于weixin-java-mp开源框架是最值得推荐的开源sdk.
它的优点有这些:

    • 功能强大;包括公众号和企业号两个组件,公众号几乎所有的api都支持,若不知的还可以调用高级接口。
    • 扩展性强;weixin-java-mp的代码结构设计合理,预留了较多扩展点,很容易自行扩展。
    • 代码质量高;看了一些weixin-java-mp的代码,感觉该组件的质量非常高,设计精良,而且有大量的单元测试更加对该组件质量信心;
    • 性能良好;上述测试结果表明该组件自身代码在多线程并发测试的场景下并未发现性能和质量问题;
    • 通用性强;weixin-java-mp组件的第三方依赖较小,不依赖任何IOC、MVC容器,也不依赖于servlet,只是一个基础的微信api包装服务,可以在任何java项目中集成。
    • 有非常详细的文档,见:https://github.com/chanjarster/weixin-java-tools/wiki

它的局限性有这些:

    • 缺少与Servlet和Spring等同用框架的整合,给开发者增加了更高的学习和使用成本,应该基于weixin-java-mp开发一些快速上手的一些模块,以提高开发者使用效率;

对于大多数的场景我都推荐使用weixin-java-mp作为基础开发框架,它相对而言确实是一个更好的选择。

三、weixin-java-tools的使用介绍:

1、工具包下载: weixin-java-common 、weixin-java-mp

如果项目不是maven构建,请按照静态对比图,下载依赖jar包。

maven项目中只需要pom中添加如下依赖:

注:后续学习都是maven构建项目,如果不了解maven构建项目,请参考我的博文,谢谢~~

<!-- 微信开发工具包 -->
		<dependency>
			<groupId>me.chanjar</groupId>
			<artifactId>weixin-java-mp</artifactId>
			<version>1.3.3</version>
		</dependency>
		<dependency>
			<groupId>me.chanjar</groupId>
			<artifactId>weixin-java-common</artifactId>
			<version>1.3.3</version>
		</dependency>

2、使用weixin-java-tools接入微信开发者

使用到两个个比较重要的类 : weixin-java-mp工具包中的 WxMpService (一些API和封装的操作类)、WxMpInMemoryConfigStorage(微信配置参数实体类)

接入中使用到一个方法:WxMpService中的checkSignature方法,校验接入是否合法。

创建一个Servlet类,在get方法中 直接调用WxService.checkSignnature来校验接入是否合法 代码如下:

/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 * 用于接入
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//微信服务器get传递的参数
		String signature = request.getParameter("signature");
		String timestamp = request.getParameter("timestamp");
		String nonce = request.getParameter("nonce");
		String echostr = request.getParameter("echostr");
		
		//微信工具类
		WxMpService wxService=new WxMpServiceImpl();
		
		//注入token的配置参数
		/**
		 * 生产环境 建议将WxMpInMemoryConfigStorage持久化
		 */
		WxMpInMemoryConfigStorage wxConfigProvider=new WxMpInMemoryConfigStorage();
		//注入token值
		wxConfigProvider.setToken("weixin");
		
		wxService.setWxMpConfigStorage(wxConfigProvider);
		
		boolean flag=wxService.checkSignature(timestamp, nonce, signature);
		
		PrintWriter out=response.getWriter();
		if(flag){
			out.print(echostr);
		}
		
		out.close();
		out=null;
	}

3、测试是否能够接入成功,欢迎各位再评论区评论,互相学习。

PS:本节就给大家介绍到这里,后续我会持续使用weixin-java-tools来介绍一些微信开发,欢迎各位持续关注,谢谢~

免责声明:文章转载自《微信开发之如何使用开发工具--weixin-java-tools》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇排查CPU占用过高的问题Latex 中cite的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微信小程序开发记录(七)新版授权登录的实现

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/wh_xmy/article/details/86475859 背景:由于微信官方修改了 getUserInfo、authorize 接口,无法弹出授权窗口,所以现在无法实现一进入微信小程序就弹出授权...

Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单

在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介绍如何获取Access Token,再介绍如何通过Access Token来在微信内添加自定义菜单(注意,开发者需要申请测试账号来测试自定义菜单,如何申请请参...

Appium的环境搭建和配置

Appium的环境搭建和配置 一、安装Nodejs 下载nodejs安装包(https://nodejs.org/en/download/)安装 下载后,双击安装文件,按提示来安装。 测试安装是否成功:运行cmd,输入node –v 二、安装android的SDK 安装android的sdk包,(https://developer.android....

Xilinx SDK编译出现undeference to "outbyte"错误的解决办法

【前言】自己初次接触MicroBlaze,好多东西都不太了解,借着博客园的平台把自己平时学习和工作遇到的问题和解决办法,以及自己的一些想法记录下来,边学习,边积累,也想与大家分享交流一下心得,与众乐方为乐也,^_^ 自己前些天在SDK中编译一个helloworld的时候,提示“print函数中undeference to outbyte”的错误,通过百度以...

微信小程序开发——setData的使用技巧

前言: 之前使用 setData ,一直都是作为给变量赋值,感觉比起vue给data中的变量的赋值还是有点麻烦的。 最近项目不太紧张,为了提高小程序的开发效率及提升小程序开发的能力,又重新的通读了下小程序的开发文档。发现 setData 还有一个非必填的参数 callback——setData引起的界面更新渲染完毕后的回调函数,通过这个回调函数,可以在更新...

微信小程序插件开发

小程序插件功能介绍 插件,是可被添加到小程序内直接使用的功能组件。开发者可以像开发小程序一样开发一个插件,供其他小程序使用。同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的服务。 开发插件 开放范围及服务类目 开放范围:企业、媒体、政府及其他组织主体的小程序 开发者可选择当前小程序帐号已选类目中的一个,作为插件的服务类目。以下为...