demo:https://github.com/wenrongyao/wechat-demo
摘要:在0020中,我们已经可以接收用户发送的文本消息,并回复文本消息了,对于公众号还有另一类交互方式就是事件推送,比如关注,取消关注,扫码等(详见:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454),这篇帖子以关注事件为例,简要说明一下事件的处理。
1、依据公众号开发者文档,扫码关注事件推送信息为。
可以msgType为event,Event为subscribe即为关注
2、EntryController增加关注事件处理
关于获取微信服务器向我服务器推送数据的解析参考:https://blog.csdn.net/wrongyao/article/details/80229407
try {
if (StringUtils.isEmpty(msgType)) {
// 创建加密类
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(Constant.WechatAccount.TOKEN, Constant.WechatAccount.ENCODINGAESKEY, Constant.WechatAccount.APPID);
// 比对msgSignature 用token, timeStamp, nonce加密的参数是否一致,一致证明该接口来自微信,异常则不是来自微信
result = wxcpt.verifyUrl_WXGZ(msgSignature, Constant.WechatAccount.TOKEN, timeStamp, nonce, echoStr);
} else {
if (msgType.equals(Constant.MsgType.TEXT)) {
result = msgService.returnText(map);
} else if (msgType.equals(Constant.MsgType.EVENT)) { //事件处理
String event = map.get("Event");
if (event.equals(Constant.Event.SUBSCRIBE)) { // 关注公众号
result = msgService.returnText(map, message.getSubscribe());
}
}
}
这边关注以后回复欢迎语,直接接上文回复文本信息。
3、结果