fastweixin 发布 1.3.0 版本,微信消息处理器重构,非常感谢 @Nottyjay 贡献的代码,版本更新内容:
1.修复JS-SDK中token过期不刷新的BUG
2.修复网页授权接口返回值中缺失的unionid字段
3.修复文件名获取的bug
4.增加菜单点击事件(二维码扫描与照片发送)对应处理
5.新增消息群发接口
6.修复获取分组信息的方法,现在可以获取多个分组了
7.修复当一级菜单不存在二级时,获取菜单异常的情况
9.增加批量移动用户分组接口,增加删除分组接口
10.增加上传、删除永久素材的对应方法
11.重构WeixinSupport类,可以支持扩展到更多框架
v1.3.0重构了微信消息接收控制器,将WeixinSupport类完全独立抽象出来,不再依赖web框架
所以WeixinServletSupport类不再兼容之前的版本,具体使用方法如下:
基于springmvc项目的集成方法
@RestController
@RequestMapping("/weixin")
public class WeixinController extends WeixinControllerSupport {
private static final Logger log = LoggerFactory.getLogger(WeixinController.class);
private static final String TOKEN = "myToken";
//设置TOKEN,用于绑定微信服务器
@Override
protected String getToken() {
return TOKEN;
}
//使用安全模式时设置:APPID
@Override
protected String getAppId() {
return null;
}
//使用安全模式时设置:密钥
@Override
protected String getAESKey() {
return null;
}
//重写父类方法,处理对应的微信消息
@Override
protected BaseMsg handleTextMsg(TextReqMsg msg) {
String content = msg.getContent();
log.debug("用户发送到服务器的内容:{}", content);
return new TextMsg("服务器回复用户消息!");
}
/*1.1版本新增,重写父类方法,加入自定义微信消息处理器
*不是必须的,上面的方法是统一处理所有的文本消息,如果业务觉复杂,上面的会显得比较乱
*这个机制就是为了应对这种情况,每个MessageHandle就是一个业务,只处理指定的那部分消息
*/
@Override
protected List initMessageHandles() {
List handles = new ArrayList();
handles.add(new MyMessageHandle());
return handles;
}
//1.1版本新增,重写父类方法,加入自定义微信事件处理器,同上
@Override
protected List initEventHandles() {
List handles = new ArrayList();
handles.add(new MyEventHandle());
return handles;
}
}
基于servlet项目的集成方法
public class WeixinServlet extends WeixinServletSupport {
@Override
protected WeixinSupport getWeixinSupport() {
return new MyServletWeixinSupport();
}
}
//用户自行实现的微信消息收发处理器
public class MyServletWeixinSupport extends WeixinSupport {
private static final Logger log = LoggerFactory.getLogger(MyServletWeixinSupport.class);
@Override
protected String getToken() {
return "myToken";
}
@Override
protected BaseMsg handleTextMsg(TextReqMsg msg) {
String content = msg.getContent();
log.debug("用户发送到服务器的内容:{}", content);
return new TextMsg("服务器回复用户消息!");
}
}
基于Jfinal框架的集成方法
public class MyJfinalController extends Controller {
//用户自行实现的消息处理器
private WeixinSupport support = new MyServletWeixinSupport();
//绑定微信服务器
@Before(GET.class)
public void bind() {
support.bindServer(getRequest(), getResponse());
}
//处理消息
@Before(POST.class)
public void messageHandler() {
support.processRequest(getRequest());
}
}
原文:http://www.dajiake.com/article/index.php?id=645