issue #18 支持新的自定义菜单事件类型
This commit is contained in:
@@ -78,9 +78,15 @@ public class WxConsts {
|
||||
public static final String EVT_UNSUBSCRIBE = "unsubscribe";
|
||||
public static final String EVT_SCAN = "SCAN";
|
||||
public static final String EVT_LOCATION = "LOCATION";
|
||||
public static final String EVT_CLICK = "LOCATION";
|
||||
public static final String EVT_CLICK = "CLICK";
|
||||
public static final String EVT_VIEW = "VIEW";
|
||||
public static final String EVT_MASS_SEND_JOB_FINISH = "MASSSENDJOBFINISH";
|
||||
public static final String EVT_SCANCODE_PUSH = "scancode_push";
|
||||
public static final String EVT_SCANCODE_WAITMSG = "scancode_waitmsg";
|
||||
public static final String EVT_PIC_SYSPHOTO = "pic_sysphoto";
|
||||
public static final String EVT_PIC_PHOTO_OR_ALBUM = "pic_photo_or_album";
|
||||
public static final String EVT_PIC_WEIXIN = "pic_weixin";
|
||||
public static final String EVT_LOCATION_SELECT = "location_select";
|
||||
|
||||
///////////////////////
|
||||
// 上传多媒体文件的类型
|
||||
@@ -98,4 +104,25 @@ public class WxConsts {
|
||||
public static final String FILE_ARM = "arm";
|
||||
public static final String FILE_MP4 = "mp4";
|
||||
|
||||
|
||||
///////////////////////
|
||||
// 自定义菜单的按钮类型
|
||||
///////////////////////
|
||||
/** 点击推事件 */
|
||||
public static final String BUTTON_CLICK = "click";
|
||||
/** 跳转URL */
|
||||
public static final String BUTTON_VIEW = "view";
|
||||
/** 扫码推事件 */
|
||||
public static final String BUTTON_SCANCODE_PUSH = "scancode_push";
|
||||
/** 扫码推事件且弹出“消息接收中”提示框 */
|
||||
public static final String BUTTON_SCANCODE_WAITMSG = "scancode_waitmsg";
|
||||
/** 弹出系统拍照发图 */
|
||||
public static final String PIC_SYSPHOTO = "pic_sysphoto";
|
||||
/** 弹出拍照或者相册发图 */
|
||||
public static final String PIC_PHOTO_OR_ALBUM = "pic_photo_or_album";
|
||||
/** 弹出微信相册发图器 */
|
||||
public static final String PIC_WEIXIN = "pic_weixin";
|
||||
/** 弹出地理位置选择器 */
|
||||
public static final String LOCATION_SELECT = "location_select";
|
||||
|
||||
}
|
||||
|
||||
@@ -8,13 +8,12 @@ import me.chanjar.weixin.util.xml.XmlTransformer;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.bind.annotation.*;
|
||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
@@ -149,6 +148,15 @@ public class WxXmlMessage {
|
||||
*/
|
||||
private Integer ErrorCount;
|
||||
|
||||
@XmlElement(name = "ScanCodeInfo")
|
||||
private ScanCodeInfo ScanCodeInfo = new ScanCodeInfo();
|
||||
|
||||
@XmlElement(name = "SendPicsInfo")
|
||||
private SendPicsInfo SendPicsInfo = new SendPicsInfo();
|
||||
|
||||
@XmlElement(name = "SendLocationInfo")
|
||||
private SendLocationInfo SendLocationInfo = new SendLocationInfo();
|
||||
|
||||
public String getToUserName() {
|
||||
return ToUserName;
|
||||
}
|
||||
@@ -454,4 +462,173 @@ public class WxXmlMessage {
|
||||
ErrorCount = errorCount;
|
||||
}
|
||||
|
||||
public WxXmlMessage.ScanCodeInfo getScanCodeInfo() {
|
||||
return ScanCodeInfo;
|
||||
}
|
||||
|
||||
public void setScanCodeInfo(WxXmlMessage.ScanCodeInfo scanCodeInfo) {
|
||||
ScanCodeInfo = scanCodeInfo;
|
||||
}
|
||||
|
||||
public WxXmlMessage.SendPicsInfo getSendPicsInfo() {
|
||||
return SendPicsInfo;
|
||||
}
|
||||
|
||||
public void setSendPicsInfo(WxXmlMessage.SendPicsInfo sendPicsInfo) {
|
||||
SendPicsInfo = sendPicsInfo;
|
||||
}
|
||||
|
||||
public WxXmlMessage.SendLocationInfo getSendLocationInfo() {
|
||||
return SendLocationInfo;
|
||||
}
|
||||
|
||||
public void setSendLocationInfo(WxXmlMessage.SendLocationInfo sendLocationInfo) {
|
||||
SendLocationInfo = sendLocationInfo;
|
||||
}
|
||||
|
||||
@XmlRootElement(name = "ScanCodeInfo")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class ScanCodeInfo {
|
||||
|
||||
@XmlElement(name = "ScanType")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String ScanType;
|
||||
|
||||
@XmlElement(name = "ScanResult")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String ScanResult;
|
||||
|
||||
/**
|
||||
* 扫描类型,一般是qrcode
|
||||
* @return
|
||||
*/
|
||||
public String getScanType() {
|
||||
|
||||
return ScanType;
|
||||
}
|
||||
|
||||
public void setScanType(String scanType) {
|
||||
ScanType = scanType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 扫描结果,即二维码对应的字符串信息
|
||||
* @return
|
||||
*/
|
||||
public String getScanResult() {
|
||||
return ScanResult;
|
||||
}
|
||||
|
||||
public void setScanResult(String scanResult) {
|
||||
ScanResult = scanResult;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@XmlRootElement(name = "SendPicsInfo")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class SendPicsInfo {
|
||||
|
||||
private Long Count;
|
||||
|
||||
@XmlElementWrapper(name="PicList")
|
||||
@XmlElement(name = "item")
|
||||
protected final List<Item> PicList = new ArrayList<Item>();
|
||||
|
||||
public Long getCount() {
|
||||
return Count;
|
||||
}
|
||||
|
||||
public void setCount(Long count) {
|
||||
Count = count;
|
||||
}
|
||||
|
||||
public List<Item> getPicList() {
|
||||
return PicList;
|
||||
}
|
||||
|
||||
@XmlRootElement(name = "item")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "me.chanjar.weixin.bean.WxXmlMessage.SendPicsInfo.Item")
|
||||
public static class Item {
|
||||
|
||||
@XmlElement(name = "PicMd5Sum")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String PicMd5Sum;
|
||||
|
||||
public String getPicMd5Sum() {
|
||||
return PicMd5Sum;
|
||||
}
|
||||
|
||||
public void setPicMd5Sum(String picMd5Sum) {
|
||||
PicMd5Sum = picMd5Sum;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@XmlRootElement(name = "SendLocationInfo")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static class SendLocationInfo {
|
||||
|
||||
@XmlElement(name = "Location_X")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String Location_X;
|
||||
|
||||
@XmlElement(name = "Location_Y")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String Location_Y;
|
||||
|
||||
@XmlElement(name = "Scale")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String Scale;
|
||||
|
||||
@XmlElement(name = "Label")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String Label;
|
||||
|
||||
@XmlElement(name = "Poiname")
|
||||
@XmlJavaTypeAdapter(AdapterCDATA.class)
|
||||
private String Poiname;
|
||||
|
||||
public String getLocation_X() {
|
||||
return Location_X;
|
||||
}
|
||||
|
||||
public void setLocation_X(String location_X) {
|
||||
Location_X = location_X;
|
||||
}
|
||||
|
||||
public String getLocation_Y() {
|
||||
return Location_Y;
|
||||
}
|
||||
|
||||
public void setLocation_Y(String location_Y) {
|
||||
Location_Y = location_Y;
|
||||
}
|
||||
|
||||
public String getScale() {
|
||||
return Scale;
|
||||
}
|
||||
|
||||
public void setScale(String scale) {
|
||||
Scale = scale;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return Label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
Label = label;
|
||||
}
|
||||
|
||||
public String getPoiname() {
|
||||
return Poiname;
|
||||
}
|
||||
|
||||
public void setPoiname(String poiname) {
|
||||
Poiname = poiname;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -44,12 +44,12 @@ public class WxMenuAPITest {
|
||||
public Object[][] getMenu() throws JAXBException {
|
||||
WxMenu menu = new WxMenu();
|
||||
WxMenuButton button1 = new WxMenuButton();
|
||||
button1.setType("click");
|
||||
button1.setType(WxConsts.BUTTON_CLICK);
|
||||
button1.setName("今日歌曲");
|
||||
button1.setKey("V1001_TODAY_MUSIC");
|
||||
|
||||
WxMenuButton button2 = new WxMenuButton();
|
||||
button2.setType("click");
|
||||
button2.setType(WxConsts.BUTTON_CLICK);
|
||||
button2.setName("歌手简介");
|
||||
button2.setKey("V1001_TODAY_SINGER");
|
||||
|
||||
@@ -61,17 +61,17 @@ public class WxMenuAPITest {
|
||||
menu.getButton().add(button3);
|
||||
|
||||
WxMenuButton button31 = new WxMenuButton();
|
||||
button31.setType("view");
|
||||
button31.setType(WxConsts.BUTTON_VIEW);
|
||||
button31.setName("搜索");
|
||||
button31.setUrl("http://www.soso.com/");
|
||||
|
||||
WxMenuButton button32 = new WxMenuButton();
|
||||
button32.setType("view");
|
||||
button32.setType(WxConsts.BUTTON_VIEW);
|
||||
button32.setName("视频");
|
||||
button32.setUrl("http://v.qq.com/");
|
||||
|
||||
WxMenuButton button33 = new WxMenuButton();
|
||||
button33.setType("click");
|
||||
button33.setType(WxConsts.BUTTON_CLICK);
|
||||
button33.setName("赞一下我们");
|
||||
button33.setKey("V1001_GOOD");
|
||||
|
||||
|
||||
@@ -33,6 +33,25 @@ public class WxXmlMessageTest {
|
||||
+ "<Latitude>23.137466</Latitude>"
|
||||
+ "<Longitude>113.352425</Longitude>"
|
||||
+ "<Precision>119.385040</Precision>"
|
||||
+ "<ScanCodeInfo>"
|
||||
+ " <ScanType><![CDATA[qrcode]]></ScanType>"
|
||||
+ " <ScanResult><![CDATA[1]]></ScanResult>"
|
||||
+ "</ScanCodeInfo>"
|
||||
+ "<SendPicsInfo>"
|
||||
+ " <Count>1</Count>\n"
|
||||
+ " <PicList>"
|
||||
+ " <item>"
|
||||
+ " <PicMd5Sum><![CDATA[1b5f7c23b5bf75682a53e7b6d163e185]]></PicMd5Sum>"
|
||||
+ " </item>"
|
||||
+ " </PicList>"
|
||||
+ "</SendPicsInfo>"
|
||||
+ "<SendLocationInfo>"
|
||||
+ " <Location_X><![CDATA[23]]></Location_X>\n"
|
||||
+ " <Location_Y><![CDATA[113]]></Location_Y>\n"
|
||||
+ " <Scale><![CDATA[15]]></Scale>\n"
|
||||
+ " <Label><![CDATA[ 广州市海珠区客村艺苑路 106号]]></Label>\n"
|
||||
+ " <Poiname><![CDATA[wo de poi]]></Poiname>\n"
|
||||
+ "</SendLocationInfo>"
|
||||
+ "</xml>";
|
||||
WxXmlMessage wxMessage = WxXmlMessage.fromXml(xml);
|
||||
Assert.assertEquals(wxMessage.getToUserName(), "toUser");
|
||||
@@ -58,6 +77,15 @@ public class WxXmlMessageTest {
|
||||
Assert.assertEquals(wxMessage.getLatitude(), new Double(23.137466));
|
||||
Assert.assertEquals(wxMessage.getLongitude(), new Double(113.352425));
|
||||
Assert.assertEquals(wxMessage.getPrecision(), new Double(119.385040));
|
||||
Assert.assertEquals(wxMessage.getScanCodeInfo().getScanType(), "qrcode");
|
||||
Assert.assertEquals(wxMessage.getScanCodeInfo().getScanResult(), "1");
|
||||
Assert.assertEquals(wxMessage.getSendPicsInfo().getCount(), new Long(1l));
|
||||
Assert.assertEquals(wxMessage.getSendPicsInfo().getPicList().get(0).getPicMd5Sum(), "1b5f7c23b5bf75682a53e7b6d163e185");
|
||||
Assert.assertEquals(wxMessage.getSendLocationInfo().getLocation_X(), "23");
|
||||
Assert.assertEquals(wxMessage.getSendLocationInfo().getLocation_Y(), "113");
|
||||
Assert.assertEquals(wxMessage.getSendLocationInfo().getScale(), "15");
|
||||
Assert.assertEquals(wxMessage.getSendLocationInfo().getLabel(), " 广州市海珠区客村艺苑路 106号");
|
||||
Assert.assertEquals(wxMessage.getSendLocationInfo().getPoiname(), "wo de poi");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user