前言

最近有做一些涉及到微信公众平台和第三方平台开发的工作。需要使用微信提供的接口。然而微信只提供了基于基本的HTTP接口,并没有对应各语言的SDK实现。所以如果自己开发的话需要封装一套SDK。不过,微信公众平台出来几年了,市面上早就有不少JAVA实现的微信SDK了。于是便收集了一些开源的JAVA实现的微信SDK,但是最后都不是特别合适。最终决定自己写一个。下面给出各开源SDK的实现对比和自己的写的进展。

微信公众号java sdk技术选型

针对目前开源的公众号java sdk对比,之前已经有人对比过了。可以自行前去:微信公众号java sdk技术选型

针对上面几款开源的微信公众号SDK,针对我自己的需求,我自己也做了下简单的对比:

- jfinal-weixin weixin-java-tools fastweixin weixin-popular
实现简单 x
更新快且全
有对应的实体封装 x
依赖少 x x
方便支持多公众号 x x
代码结构&可拓展性 x

可以看出是没有一个是完全符合自己的需求的。没有找到方便支持多公众号管理,代码结构好容易扩展且依赖少,更新快,使用简洁的。所以最后自己还是决定自己实现对应的SDK了。

自实现WeChat-SDK

目前只实现了一些微信基本的SDK。按照微信公众平台接口文档分类。

已实现功能:

  • 自定义菜单[√]
  • 消息管理[√]
  • 微信网页开发(网页授权)[√]
  • 素材管理[√]
  • 图文消息留言管理[√]
  • 用户管理[√]
  • 账号管理[√]
  • 数据统计[√]
  • 新版客服功能[√]
  • 微信第三方平台[√]
  • 微信卡券[√]
  • 微信门店[√]

未实现功能:

  • 微信小店[x]
  • 语义理解[x]
  • 微信设备功能[x]
  • 微信摇一摇周边[x]
  • 微信连WI-FI[x]
  • 微信扫一扫[x]
  • 微信发票[x]

项目依赖:

  • jackson(可选,默认的序列化工具类依赖于jsckson。可自定义实现对应的序列化接口)
  • slf4j(日志用)
  • httpcomponents (可选,默认的HTTP请求工具类依赖于httpcomponents 。可自定义实现对应的HTTP请求接口)
  • junit (测试用)

除了实现对应的微信功能接口。还提供了一些支持类的接口和默认实现。可以根据自己的需要使用默认的实现或使用自定义的实现。如消息查重接口、token缓存管理接口、消息推送处理接口、消息处理器管理接口。
目前只实现了上述功能。对应的测试用例也只写了一部分。需要后面慢慢的完善。

WeChat-SDK使用

maven依赖:

<dependency><groupId>com.github.vioao</groupId><artifactId>wechat-sdk</artifactId><version>1.0.0</version>
</dependency>

目前是版本1.0.0,接下来会不断完善代码。使得代码功能更全,使用更方便。

接口使用示例:

    // 用户标签接口@Testpublic void testAboutTagUsers() {TagsResponse result1 = UserApi.getTags(TOKEN);System.out.println("Get tags: " + result1);Assert.assertEquals(true, result1.isSuccess());if (result1.getTags().size() > 0) {Integer tagId = result1.getTags().get(0).getId();BaseResponse result2 = UserApi.batchTagUsers(TOKEN, Arrays.asList(OPENID), tagId);System.out.println("Batch tag users: " + result2);Assert.assertEquals(true, result2.isSuccess());FollowResponse result3 = UserApi.getTagUserIds(TOKEN, tagId, null);System.out.println("Get tag users: " + result3);Assert.assertEquals(true, result3.isSuccess());BaseResponse result4 = UserApi.batchUnTagUsers(TOKEN, Arrays.asList(OPENID), tagId);System.out.println("Batch tag users: " + result4);Assert.assertEquals(true, result4.isSuccess());}}// 菜单接口@Testpublic void testCreate() {Button click = new Button();click.setType("click");click.setName("今日歌曲");click.setKey("V1001_TODAY_MUSIC");Button view = new Button();view.setType("view");view.setName("搜索");view.setUrl("http://www.soso.com/");Button click2 = new Button();click2.setType("click");click2.setName("赞一下我们");click2.setKey("V1001_GOOD");Button complex = new Button();complex.setName("菜单");complex.setSubButton(Arrays.asList(view, click2));MenuButtons menuButtons = new MenuButtons();menuButtons.setButton(Arrays.asList(click, complex));BaseResponse result = MenuApi.create(TOKEN, menuButtons);System.out.println("Create Menu: " + result);Assert.assertEquals(true, result.isSuccess());}

更多示例可以查看项目的单元测试代码。项目地址:

wecht-sdk


更新日志

2018-02-28

Done:

完善以下功能模块的实现:

  • 微信门店功能
  • 微信卡券功能

2018-03-11

Done:

第三方平台对小程序的管理:

  • 小程序服务器域名设置
  • 小程序成员管理
  • 小程序微信登录
  • 小程序基础信息设置
  • 微信开放平台帐号管理

ToDo:

第三方平台对小程序的管理

  • 代码管理
  • 小程序模版库管理
  • 小程序代码模版库管理

2018-03-24

Done:

第三方平台对小程序的管理:

  • 小程序代码管理
  • 小程序代码模版库管理
  • 小程序模版设置
  • 小程序插件管理权限集

发布1.1.0版本

  • 本次版本主要是完善了第三方平台相关的接口支持。可以基于wechat-sdk方便实现自己的第三方平台。管理平台下的小程序和公众号。

maven依赖:

<dependency><groupId>com.github.vioao</groupId><artifactId>wechat-sdk</artifactId><version>1.1.0</version>
</dependency>

ToDo:

第三方平台相关:

  • 卡券强授权
  • 微信广告接口

公众号相关:

  • 微信摇一摇周边
  • 微信小店
  • 语义理解
  • 微信连WI-FI
  • 微信扫一扫
  • 微信设备功能
  • 微信发票

微信公众平台SDK JAVA实现WeChat-SDK相关推荐

  1. 1:新浪云SAE搭建微信公众平台开发-java

    从微信调用API中可以看出个大概流程,如下图 通过上图的了解,可知要想做微信公众平台第二次开发 必须搭建一个自定义服务器,自定义服务器上面部署相应的逻辑代码,搭建自定义服务器的方式有很多种 比如百度云 ...

  2. 微信公众平台开发-java

    微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,首先我们登录微信公众平台,通过其后台可以设置一些基础服务,如菜单设置.消息自动回复,但由于企业服务具有复杂性.通过微信公众平台后台设置一般 ...

  3. 微信公众平台开发JAVA(四)公众号进行视频发送

    备注:测试基于微信公众平台测试号编写,真实开发环境基本适用 微信公众号在进行视频群发的时候有一个坑,大家可以先看一下文档描述: 意思就是说要先把视频素材的media_id通过这个接口post一下,于是 ...

  4. Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能

    在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口. 有关的修改都在Senparc.Weixin/Utilities ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制

    在<Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明>中,我介绍了获取AccessToken(通用接口)的方法. 在实际的开发过程中,所有的高级接口都需 ...

  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler

    原文地址为: Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler 上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程( ...

  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试...

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...

  8. 微信接口验证类php,微信公众平台消息接口校验与消息接口响应实例

    本文实例讲述了微信公众平台消息接口校验与消息接口响应的方法.分享给大家供大家参考.具体分析如下: 开发微信公众平台消息接口过程中,我们首先需要验证消息接口的有效性,验证通过后,才可以进行其他开发,首先 ...

  9. 微信公众号消息接口PHP,微信公众平台消息接口校验与消息接口响应实例

    本文实例讲述了微信公众平台消息接口校验与消息接口响应的方法.分享给大家供大家参考.具体分析如下: 开发微信公众平台消息接口过程中,我们首先需要验证消息接口的有效性,验证通过后,才可以进行其他开发,首先 ...

  10. 微信公众平台操作获取token类

    /*** 微信公众平台操作类*/ class WeChat {private $_appid;private $_appsecret;public function __construct($id,$ ...

最新文章

  1. 【里程碑式证明】同时解决了量子物理学和理论数学的难题!
  2. 战神4 幕后花絮 概念艺术_幕后花絮:品牌更新的背后
  3. Android之用HttpURLConnection参数以XML形式封装的部分关键代码
  4. HTML5笔记——formData
  5. 《CCNA安全640-554认证考试指南》——第6章在Cisco IOS设备上保护管理层
  6. 一位编辑人员给作者们的市场汇报——冰冰子组织的市场宣传活动介绍之交互设计篇
  7. 下周把交接文档做完就交接实习结束离职了
  8. MS08067红队攻防第二期 开班啦~(附最新授课目录)
  9. python b站弹幕分析_【python】B站弹幕数据分析及可视化(爬虫+数据挖掘)
  10. 液晶显示屏的LED背光辉度公式计算?
  11. 如何发个 微信九宫格 朋友圈?
  12. 外贸技巧之如何引导客户尽早下单
  13. 虚拟信用卡最大的发行商有哪些?
  14. 通用视觉技术体系“书生”(INTERN)由七大模块组成
  15. Deep Biaffine Attention for Dependency Parsing
  16. 重构 - 提炼函数,消除重复代码
  17. 一个简单的小游戏——“数字炸弹”的实现
  18. 2020-11-20java数据类型及关键字
  19. 并发编程常见面试题Synchronized 相 关 问 题
  20. cad图形不见了怎么办_cad里的图标不见了,各种方法都试了变成这样怎么办,怎么调回原来的图标?...

热门文章

  1. 【POJ3585】Accumulation Degree 二次扫描与换根法
  2. Java--反射(框架设计的灵魂)
  3. Office 2019 激活-探索(仅供参考)
  4. Mysql入门【Mysql约束】
  5. 使用机器学习预测大盘
  6. 神仙道各种公式【转载】
  7. 2017.08.05
  8. HAUT校赛 魔法宝石 暴力
  9. 嵌入式linux pam,Linux PAM 之cracklib模块
  10. Oracle实现使用时间函数实现输出“上午好/下午好”