开源中国的 IT 公司开源软件整理计划介绍
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类不再兼容之前的版本,具体使用方法如下:
@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<MessageHandle> initMessageHandles() { List<MessageHandle> handles = new ArrayList<MessageHandle>(); handles.add(new MyMessageHandle()); return handles; } //1.1版本新增,重写父类方法,加入自定义微信事件处理器,同上 @Override protected List<EventHandle> initEventHandles() { List<EventHandle> handles = new ArrayList<EventHandle>(); handles.add(new MyEventHandle()); return handles; } }
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("服务器回复用户消息!"); } }
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()); } }