微信几个开源项目参考

1、https://github.com/liyiorg/weixin-popular

weixin-popular

微信公众平台Java SDK

介绍

weixin-popular 包括微信公众平台基础API与支付API,提供便捷的API调用接口.

API 列表

工具类

  • PayUtil 支付工具类,生成JS支付,原生支付
  • SignatureUtil 签权生成、验证
  • XMLConverUtil XML 对象转换(JAXB)
  • JsUtil JsAPI config,chooseWXPay JSON生成

example

其它

参考资料


2、https://github.com/caijianqing/weixinmp4java

微信公众平台API接口JAVA版

  • 别名:weixinmp4java、wechat4java
  • 这个包是微信公众平台纯API接口实现,除了一个gson的jar包以外,没有任何业务代码。
  • 支持公众号(包括订阅号和服务号)的所有主动接口和被动接口。
  • 支持小店接口v1.4

最近更新

2014.07.07

  • 将代码切换为maven管理
  • 原代码保留在no_maven目录中

2014.07.06 v91

  • 小店API 1.4完成【警告:小店代码仅在本地进行模拟测试,没有经过微信服务器测试,欢迎有条件的同学反馈BUG】
    • cjc.weixinmp包增加了7个以Merchant开头的类,分别对应API手册的7个功能接口,每个方法对应一个功能
    • 增加cjc.weixinmp.merchant.bean包,存放与小店有关实体
    • 增加cjc.weixinmp.merchant.builder包,因为小店的数据实体比较复杂(很多字段很多结构),所有特设数据构造器,非常好用!
    • AbstractUserOperate增加onMerchantOrderPayEvent接口,为小店的订单支付推送事件
    • 详细测试例子查看cjc.weixinmp.test.WeixinmpTestXiaodianServlet,部署test项目后打开首页可以看到连接。
  • 内建模拟测试服务器,是本屌在封装小店接口时,因为没有小店测试权限特别开发的本地模拟测试模式。
    • 开关在cjc.weixinmp.test.Engine的contextInitialized方法,默认关,见注释。

项目介绍

/weixinmp          实现代码主项目,可以输出为jar包使用。注意依赖gson.jar。
/weixinmp.test     示例&测试项目,看这里快速上手。需要依赖/weixinmp项目,
                   注意不是把代码复制过来用,而是在Eclipse或者MyEclipse是两个project的形式。

软件包介绍

cjc.weixinmp

包含事件分发、主动调用、通讯,解析json,解析xml,日志储存,读取配置文件,读取帮助文件信息等功能。

cjc.weixinmp.bean

接口通讯中涉及到的数据格式(xml或者json),已被封装为实体。

cjc.weixinmp.merchant.bean

存放与小店有关实体

cjc.weixinmp.merchant.builder

因为小店的数据实体比较复杂(很多字段很多结构),所有特设数据构造器,非常好用!

配置文件

/weixinmp.default.properties

框架基本设置,请复制一份并重命名为weixinmp.properties存放在你的src根目录下。

  • 公众号的基本信息(token、appid、appsecret等)
  • 公众平台API接口配置(各种URL)
  • 代理设置(支持通过代理上网的环境)

/weixinmp_helps.xml

帮助信息文件,请复制一份weixinmp_helps.xml存放在你的src目录下。

  • 帮助信息配置文件,由controller.getHelp(key)获得内容。

接口介绍

cjc.weixinmp.AbstractUserOperate

由微信服务器对你的服务器进行调用的接口称之为被动接口。 例如:发送文本消息、语音消息、订阅事件、退订事件、点击菜单事件等。 该接口已包含了所有开放的接口,选择需要的方法进行重写,并编写自己的业务代码即可。

// 用户主动发送文本消息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onTextMessage(TextRequest text) 

// 用户主动发图片消息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onImageMessage(ImageRequest image)

// 用户主动发语音消息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onVoiceMessage(VoiceRequest voice)

// 用户主动发视频消息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onVideoMessage(VideoRequest video)

// 用户主动发位置消息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onLocationMessage(LocationRequest location)

// 用户主动发链接消息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onLinkMessage(LinkRequest link) 

// 用户订阅事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onSubscribeEvent(SubscribeEventRequest event)

// 用户退订事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onUnsubscribeEvent(SubscribeEventRequest event)

// 用户扫描参数二维码事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onScanEvent(ScanEventRequest event) 

// 自动上报位置信息事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onLocationEvent(LocationEventRequest event) 

// 用户点击自定义菜单事件
AbstractResponse cjc.weixinmp.AbstractUserOperate.onClickEvent(ClickEventRequest click) 

// 小店支付通知
AbstractResponse cjc.weixinmp.AbstractUserOperate.onMerchantOrderPayEvent(OrderPayEventRequest orderPayEvent) 

以“用户订阅事件”为例:

AbstractResponse cjc.weixinmp.AbstractUserOperate.onSubscribeEvent(SubscribeEventRequest event){
    // 从帮助信息文件(weixinmp_helps.xml)中加载。也可以自己new TextResponse对象。
    String help = controller.findHelp("欢迎关注"); 
    // 这个是内置的一个快速构建“文本回复”的方法,这里意思是向用户回复“欢迎关注”的文字。
    return buildTextResponse(help); 
}

cjc.weixinmp.AbstractWeixinmpController

这个是API的总控制器,包含主动接口和被动接口。 这个控制器应该在Application上下文的生命周期内只创建一个实例,并接管某一个Servlet的doPost和doGet请求。

AbstractUserOperate cjc.weixinmp.test.WeixinmpController.getUserOperate(String FromUserName)

这个抽象方法为每次用户主动发送消息时调用,一般返回与用户绑定的AbstractUserOperate对象,这样保证用户会话不被串线。

void cjc.weixinmp.test.WeixinmpController.logInfo(String msg)

这是框架默认的记录日志方法,你可以重写它以及其他几个日志方法,用你自己的记录方式,例如log4j。

主动接口

由你的服务器对微信服务器进行主动调用的接口称之为主动服务。 例如:自定义菜单、客户消息用户管理等。

以下为可用的接口(注意:这些主动接口大部分为高级接口,需要服务号才能使用):

// 自定义菜单接口
CustomerMenuService cjc.weixinmp.AbstractWeixinmpController.getCustomMenuService()

// 上传下载接口
MediaLibraryService cjc.weixinmp.AbstractWeixinmpController.getMediaLibraryService()

// 客户消息接口
MessageService cjc.weixinmp.AbstractWeixinmpController.getMessageService()

// 参数二维码接口
QRCodeService cjc.weixinmp.AbstractWeixinmpController.getQrCodeService()

// 用户管理接口
UserManagerService cjc.weixinmp.AbstractWeixinmpController.getUserManagerService()

// 商品管理接口
MerchantProductService cjc.weixinmp.AbstractWeixinmpController.getMerchantProductService();

// 库存管理接口
MerchantStockService cjc.weixinmp.AbstractWeixinmpController.getMerchantStockService();

// 邮费模板管理接口 
MerchantExpressService cjc.weixinmp.AbstractWeixinmpController.getMerchantExpressService();

// 商品分组管理接口 
MerchantGroupService cjc.weixinmp.AbstractWeixinmpController.getMerchantGroupService();

// 货架管理接口
MerchantShelfService cjc.weixinmp.AbstractWeixinmpController.getMerchantShelfService();

// 订单管理接口
MerchantOrderService cjc.weixinmp.AbstractWeixinmpController.getMerchantOrderService();

以创建自定义菜单为例:

CustomButton button = new CustomButton();
button.addButton(CustomMenu.TYPE.click, "空按钮", "anniu1", null);
button.addButton(CustomMenu.TYPE.view, "百度", null, "http://www.baidu.com");
button.addButton(CustomMenu.TYPE.click, "菜单", "anniu1", null) //
        .addSubButton(CustomMenu.TYPE.click, "按钮一", "anniu1", null) //
        .addSubButton(CustomMenu.TYPE.click, "按钮二", "anniu2", null) //
        .addSubButton(CustomMenu.TYPE.view, "视频", null, "http://v.qq.com");
AbstractWeixinmpController.getCustomMenuService().updateMenu(button);
3、https://github.com/foxinmy/weixin4j

weixin4j

微信开发工具包

功能列表

  • weixin4j-mp

    公众平台API封装

    微信支付(刷卡/扫码/公众号)

  • weixin4j-qy

    企业号API封装

  • weixin4j-server

    netty服务器&消息分发

项目说明

  • weixin4j包含「微信公众平台」和「微信企业号」的API封装.

  • API的成功调用依赖于正确的appid等数据,填写格式说明见API工程下的README.md文件.

  • netty服务正在重构中

如何获取

1.maven依赖(1.4,2015-04-29 released)

微信公众平台API

<dependency>
    <groupId>com.foxinmy</groupId>
    <artifactId>weixin4j-mp</artifactId>
    <version>1.4</version>
</dependency>

微信企业号API

<dependency>
    <groupId>com.foxinmy</groupId>
    <artifactId>weixin4j-qy</artifactId>
    <version>1.4</version>
</dependency>

微信被动消息服务器

正在重构中..

以上依赖如果出现Missing artifact错误 请尝试在eclipse里这么做

  • 进入 Window > Show View > Other > Maven Repositories 展开 Global Repositories 在group或者central上右键执行update index 操作

  • 或者进入 Windows > Preferences > Maven 选中 Download repository index updates on startup即可

2.直接下载jar包

https://github.com/foxinmy/weixin4j/releases

3.从源码打包

git clone&mvn package -Prelease

更新LOG

接下来

  • 被动消息服务重构

消息分发

  • 公众号第三方服务应用

  • 企业号第三方应用 & 企业号登陆授权

  • 硬件设备 & 摇一摇周边

  • 微信小店

  • 微信卡券

4、https://github.com/chanjarster/weixin-java-tools

微信公众号、企业号Java SDK。

详细文档请看 wiki

Quick Start

如果要开发公众号(订阅号、服务号)应用,在你的maven项目中添加:

<dependency>
  <groupId>me.chanjar</groupId>
  <artifactId>weixin-java-mp</artifactId>
  <version>1.1.4</version>
</dependency>

如果要开发企业号应用,在你的maven项目中添加:

<dependency>
  <groupId>me.chanjar</groupId>
  <artifactId>weixin-java-cp</artifactId>
  <version>1.1.4</version>
</dependency>

SNAPSHOT版

本项目的BUG修复和新特性一般会先发布在-SNAPSHOT版里供大家预览,如果要使用-SNAPSHOT版,则需要在你的pom.xml中添加这段:

<repositories>
  <repository>
      <snapshots />
      <id>sonatype snapshots</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
  </repository>
</repositories>

升级指南


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值