1、在event包中添加InWifiConnectedEvent类:
package com.jfinal.weixin.sdk.msg.in.event; import com.jfinal.weixin.sdk.msg.in.InMsg; /** 通过微信连Wi-Fi连网成功后会触发事件推送, 该事件将发送至开发者填写的URL(登录公众平台进入开发者中心设置)。 开发者可通过事件推送获取连网相关信息、数据统计等操作。 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[WifiConnected]]></Event> <ConnectTime>0</ConnectTime> <ExpireTime>0</ExpireTime> <VendorId>![CDATA[3001224419]]</VendorId> <PlaceId>![CDATA[PlaceId]]</PlaceId> <DeviceNo>![CDATA[DeviceNo]]</DeviceNo> </xml> */ public class InWifiConnectedEvent extends InMsg { private String event; private Integer connectTime;//用户联网时间 private String expireTime;//系统保留字 private String vendorId;//系统保留字 private Integer placeId;//设备所属的门店id private String deviceNo;//设备的mac地址 public InWifiConnectedEvent(String toUserName, String fromUserName, Integer createTime, String msgType) { super(toUserName, fromUserName, createTime, msgType); } public String getEvent() { return event; } public void setEvent(String event) { this.event = event; } public Integer getConnectTime() { return connectTime; } public void setConnectTime(Integer connectTime) { this.connectTime = connectTime; } public String getExpireTime() { return expireTime; } public void setExpireTime(String expireTime) { this.expireTime = expireTime; } public String getVendorId() { return vendorId; } public void setVendorId(String vendorId) { this.vendorId = vendorId; } public Integer getPlaceId() { return placeId; } public void setPlaceId(Integer placeId) { this.placeId = placeId; } public String getDeviceNo() { return deviceNo; } public void setDeviceNo(String deviceNo) { this.deviceNo = deviceNo; } }
2、扩展InMsgParaser类的parseInEvent方法:
//微信连WiFi成功通知事件 if ("WifiConnected".equals(event)){ InWifiConnectedEvent e=new InWifiConnectedEvent(toUserName,fromUserName,createTime,msgType); e.setEvent(event); e.setConnectTime(Integer.parseInt(root.elementText("ConnectTime"))); e.setExpireTime(root.elementText("ExpireTime")); e.setVendorId(root.elementText("VendorId")); e.setPlaceId(Integer.parseInt(root.elementText("PlaceId"))); e.setDeviceNo(root.elementText("PlaceId")); return e; }
3、继续扩展MsgController类,添加processInWifiConnectedEvent抽象方法:
protected abstract void processInWifiConnectedEvent(InWifiConnectedEvent inWifiConnectedEvent);
在其index方法中添加:
else if (msg instanceof InWifiConnectedEvent) processInWifiConnectedEvent((InWifiConnectedEvent) msg);
5、在WeixinMsgController控制器中实现上一步的抽象方法:
@Override protected void processInWifiConnectedEvent(InWifiConnectedEvent inWifiConnectedEvent) { System.out.println("WiFi连接成功通知事件"); }