| @@ -38,7 +38,7 @@ wxService.setWxConfigStorage(config); | |||
| // 用户的openid在下面地址获得 | |||
| // https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=用户管理&form=获取关注者列表接口%20/user/get | |||
| String openid = ...; | |||
| WxCustomMessage message = WxCustomMessage.TEXT().toUser(openid).content("Hello World").build(); | |||
| String openId = ...; | |||
| WxCustomMessage message = WxCustomMessage.TEXT().toUser(openId).content("Hello World").build(); | |||
| wxService.customMessageSend(message); | |||
| ``` | |||
| @@ -17,7 +17,7 @@ public class WxInMemoryConfigStorage implements WxConfigStorage { | |||
| protected int expiresIn; | |||
| public void updateAccessToken(WxAccessToken accessToken) { | |||
| updateAccessToken(accessToken.getAccess_token(), accessToken.getExpires_in()); | |||
| updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn()); | |||
| } | |||
| public void updateAccessToken(String accessToken, int expiresIn) { | |||
| @@ -4,8 +4,6 @@ import java.io.File; | |||
| import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import java.io.StringReader; | |||
| import java.security.MessageDigest; | |||
| import java.util.Arrays; | |||
| import java.util.List; | |||
| import java.util.UUID; | |||
| import java.util.concurrent.atomic.AtomicBoolean; | |||
| @@ -86,11 +84,11 @@ public class WxServiceImpl implements WxService { | |||
| CloseableHttpResponse response = httpclient.execute(httpGet); | |||
| String resultContent = new BasicResponseHandler().handleResponse(response); | |||
| WxError error = WxError.fromJson(resultContent); | |||
| if (error.getErrcode() != 0) { | |||
| if (error.getErrorCode() != 0) { | |||
| throw new WxErrorException(error); | |||
| } | |||
| WxAccessToken accessToken = WxAccessToken.fromJson(resultContent); | |||
| wxConfigStorage.updateAccessToken(accessToken.getAccess_token(), accessToken.getExpires_in()); | |||
| wxConfigStorage.updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn()); | |||
| } catch (ClientProtocolException e) { | |||
| throw new RuntimeException(e); | |||
| } catch (IOException e) { | |||
| @@ -133,7 +131,7 @@ public class WxServiceImpl implements WxService { | |||
| return WxMenu.fromJson(resultContent); | |||
| } catch (WxErrorException e) { | |||
| // 46003 不存在的菜单数据 | |||
| if (e.getError().getErrcode() == 46003) { | |||
| if (e.getError().getErrorCode() == 46003) { | |||
| return null; | |||
| } | |||
| throw e; | |||
| @@ -316,14 +314,14 @@ public class WxServiceImpl implements WxService { | |||
| * 40001 获取access_token时AppSecret错误,或者access_token无效 | |||
| * 42001 access_token超时 | |||
| */ | |||
| if (error.getErrcode() == 42001 || error.getErrcode() == 40001) { | |||
| if (error.getErrorCode() == 42001 || error.getErrorCode() == 40001) { | |||
| accessTokenRefresh(); | |||
| return execute(executor, uri, data); | |||
| } | |||
| /** | |||
| * -1 系统繁忙, 1000ms后重试 | |||
| */ | |||
| if (error.getErrcode() == -1) { | |||
| if (error.getErrorCode() == -1) { | |||
| if(retryTimes.get() == null) { | |||
| retryTimes.set(0); | |||
| } | |||
| @@ -341,7 +339,7 @@ public class WxServiceImpl implements WxService { | |||
| throw new RuntimeException(e1); | |||
| } | |||
| } | |||
| if (error.getErrcode() != 0) { | |||
| if (error.getErrorCode() != 0) { | |||
| throw new WxErrorException(error); | |||
| } | |||
| return null; | |||
| @@ -4,24 +4,24 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| public class WxAccessToken { | |||
| private String access_token; | |||
| private String accessToken; | |||
| private int expires_in; | |||
| private int expiresIn; | |||
| public String getAccess_token() { | |||
| return access_token; | |||
| public String getAccessToken() { | |||
| return accessToken; | |||
| } | |||
| public void setAccess_token(String access_token) { | |||
| this.access_token = access_token; | |||
| public void setAccessToken(String accessToken) { | |||
| this.accessToken = accessToken; | |||
| } | |||
| public int getExpires_in() { | |||
| return expires_in; | |||
| public int getExpiresIn() { | |||
| return expiresIn; | |||
| } | |||
| public void setExpires_in(int expires_in) { | |||
| this.expires_in = expires_in; | |||
| public void setExpiresIn(int expiresIn) { | |||
| this.expiresIn = expiresIn; | |||
| } | |||
| public static WxAccessToken fromJson(String json) { | |||
| @@ -19,25 +19,25 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| */ | |||
| public class WxCustomMessage { | |||
| private String touser; | |||
| private String msgtype; | |||
| private String toUser; | |||
| private String msgType; | |||
| private String content; | |||
| private String media_id; | |||
| private String thumb_media_id; | |||
| private String mediaId; | |||
| private String thumbMediaId; | |||
| private String title; | |||
| private String description; | |||
| private String musicurl; | |||
| private String hqmusicurl; | |||
| private String musicUrl; | |||
| private String hqMusicUrl; | |||
| private List<WxArticle> articles = new ArrayList<WxArticle>(); | |||
| public String getTouser() { | |||
| return touser; | |||
| public String getToUser() { | |||
| return toUser; | |||
| } | |||
| public void setTouser(String touser) { | |||
| this.touser = touser; | |||
| public void setToUser(String toUser) { | |||
| this.toUser = toUser; | |||
| } | |||
| public String getMsgtype() { | |||
| return msgtype; | |||
| public String getMsgType() { | |||
| return msgType; | |||
| } | |||
| /** | |||
| @@ -50,10 +50,10 @@ public class WxCustomMessage { | |||
| * {@link WxConsts#CUSTOM_MSG_VIDEO} | |||
| * {@link WxConsts#CUSTOM_MSG_NEWS} | |||
| * </pre> | |||
| * @param msgtype | |||
| * @param msgType | |||
| */ | |||
| public void setMsgtype(String msgtype) { | |||
| this.msgtype = msgtype; | |||
| public void setMsgType(String msgType) { | |||
| this.msgType = msgType; | |||
| } | |||
| public String getContent() { | |||
| return content; | |||
| @@ -61,17 +61,17 @@ public class WxCustomMessage { | |||
| public void setContent(String content) { | |||
| this.content = content; | |||
| } | |||
| public String getMedia_id() { | |||
| return media_id; | |||
| public String getMediaId() { | |||
| return mediaId; | |||
| } | |||
| public void setMedia_id(String media_id) { | |||
| this.media_id = media_id; | |||
| public void setMediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| } | |||
| public String getThumb_media_id() { | |||
| return thumb_media_id; | |||
| public String getThumbMediaId() { | |||
| return thumbMediaId; | |||
| } | |||
| public void setThumb_media_id(String thumb_media_id) { | |||
| this.thumb_media_id = thumb_media_id; | |||
| public void setThumbMediaId(String thumbMediaId) { | |||
| this.thumbMediaId = thumbMediaId; | |||
| } | |||
| public String getTitle() { | |||
| return title; | |||
| @@ -85,17 +85,17 @@ public class WxCustomMessage { | |||
| public void setDescription(String description) { | |||
| this.description = description; | |||
| } | |||
| public String getMusicurl() { | |||
| return musicurl; | |||
| public String getMusicUrl() { | |||
| return musicUrl; | |||
| } | |||
| public void setMusicurl(String musicurl) { | |||
| this.musicurl = musicurl; | |||
| public void setMusicUrl(String musicUrl) { | |||
| this.musicUrl = musicUrl; | |||
| } | |||
| public String getHqmusicurl() { | |||
| return hqmusicurl; | |||
| public String getHqMusicUrl() { | |||
| return hqMusicUrl; | |||
| } | |||
| public void setHqmusicurl(String hqmusicurl) { | |||
| this.hqmusicurl = hqmusicurl; | |||
| public void setHqMusicUrl(String hqMusicUrl) { | |||
| this.hqMusicUrl = hqMusicUrl; | |||
| } | |||
| public List<WxArticle> getArticles() { | |||
| return articles; | |||
| @@ -113,7 +113,7 @@ public class WxCustomMessage { | |||
| private String title; | |||
| private String description; | |||
| private String url; | |||
| private String picurl; | |||
| private String picUrl; | |||
| public String getTitle() { | |||
| return title; | |||
| @@ -133,11 +133,11 @@ public class WxCustomMessage { | |||
| public void setUrl(String url) { | |||
| this.url = url; | |||
| } | |||
| public String getPicurl() { | |||
| return picurl; | |||
| public String getPicUrl() { | |||
| return picUrl; | |||
| } | |||
| public void setPicurl(String picurl) { | |||
| this.picurl = picurl; | |||
| public void setPicUrl(String picUrl) { | |||
| this.picUrl = picUrl; | |||
| } | |||
| } | |||
| @@ -10,10 +10,10 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| */ | |||
| public class WxMassGroupMessage { | |||
| private long group_id; | |||
| private long groupId; | |||
| private String msgtype; | |||
| private String content; | |||
| private String media_id; | |||
| private String mediaId; | |||
| public WxMassGroupMessage() { | |||
| super(); | |||
| @@ -47,24 +47,24 @@ public class WxMassGroupMessage { | |||
| this.content = content; | |||
| } | |||
| public String getMedia_id() { | |||
| return media_id; | |||
| public String getMediaId() { | |||
| return mediaId; | |||
| } | |||
| public void setMedia_id(String media_id) { | |||
| this.media_id = media_id; | |||
| public void setMediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| } | |||
| public String toJson() { | |||
| return WxGsonBuilder.INSTANCE.create().toJson(this); | |||
| } | |||
| public long getGroup_id() { | |||
| return group_id; | |||
| public long getGroupId() { | |||
| return groupId; | |||
| } | |||
| public void setGroup_id(long group_id) { | |||
| this.group_id = group_id; | |||
| public void setGroupId(long groupId) { | |||
| this.groupId = groupId; | |||
| } | |||
| } | |||
| @@ -29,13 +29,13 @@ public class WxMassNews { | |||
| /** | |||
| * <pre> | |||
| * 群发图文消息article | |||
| * 1. thumb_media_id (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得 | |||
| * 1. thumbMediaId (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得 | |||
| * 2. author 图文消息的作者 | |||
| * 3. title (必填) 图文消息的标题 | |||
| * 4. content_source_url 在图文消息页面点击“阅读原文”后的页面链接 | |||
| * 4. contentSourceUrl 在图文消息页面点击“阅读原文”后的页面链接 | |||
| * 5. content (必填) 图文消息页面的内容,支持HTML标签 | |||
| * 6. digest 图文消息的描述 | |||
| * 7, show_cover_pic 是否显示封面,true为显示,false为不显示 | |||
| * 7, showCoverPic 是否显示封面,true为显示,false为不显示 | |||
| * </pre> | |||
| * @author chanjarster | |||
| * | |||
| @@ -44,7 +44,7 @@ public class WxMassNews { | |||
| /** | |||
| * (必填) 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得 | |||
| */ | |||
| private String thumb_media_id; | |||
| private String thumbMediaId; | |||
| /** | |||
| * 图文消息的作者 | |||
| */ | |||
| @@ -56,7 +56,7 @@ public class WxMassNews { | |||
| /** | |||
| * 在图文消息页面点击“阅读原文”后的页面链接 | |||
| */ | |||
| private String content_source_url; | |||
| private String contentSourceUrl; | |||
| /** | |||
| * (必填) 图文消息页面的内容,支持HTML标签 | |||
| */ | |||
| @@ -68,13 +68,13 @@ public class WxMassNews { | |||
| /** | |||
| * 是否显示封面,true为显示,false为不显示 | |||
| */ | |||
| private boolean show_cover_pic; | |||
| private boolean showCoverPic; | |||
| public String getThumb_media_id() { | |||
| return thumb_media_id; | |||
| public String getThumbMediaId() { | |||
| return thumbMediaId; | |||
| } | |||
| public void setThumb_media_id(String thumb_media_id) { | |||
| this.thumb_media_id = thumb_media_id; | |||
| public void setThumbMediaId(String thumbMediaId) { | |||
| this.thumbMediaId = thumbMediaId; | |||
| } | |||
| public String getAuthor() { | |||
| return author; | |||
| @@ -88,11 +88,11 @@ public class WxMassNews { | |||
| public void setTitle(String title) { | |||
| this.title = title; | |||
| } | |||
| public String getContent_source_url() { | |||
| return content_source_url; | |||
| public String getContentSourceUrl() { | |||
| return contentSourceUrl; | |||
| } | |||
| public void setContent_source_url(String content_source_url) { | |||
| this.content_source_url = content_source_url; | |||
| public void setContentSourceUrl(String contentSourceUrl) { | |||
| this.contentSourceUrl = contentSourceUrl; | |||
| } | |||
| public String getContent() { | |||
| return content; | |||
| @@ -106,11 +106,11 @@ public class WxMassNews { | |||
| public void setDigest(String digest) { | |||
| this.digest = digest; | |||
| } | |||
| public boolean isShow_cover_pic() { | |||
| return show_cover_pic; | |||
| public boolean isShowCoverPic() { | |||
| return showCoverPic; | |||
| } | |||
| public void setShow_cover_pic(boolean show_cover_pic) { | |||
| this.show_cover_pic = show_cover_pic; | |||
| public void setShowCoverPic(boolean showCoverPic) { | |||
| this.showCoverPic = showCoverPic; | |||
| } | |||
| } | |||
| @@ -12,17 +12,17 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| */ | |||
| public class WxMassOpenIdsMessage { | |||
| private List<String> touser = new ArrayList<String>(); | |||
| private String msgtype; | |||
| private List<String> toUsers = new ArrayList<String>(); | |||
| private String msgType; | |||
| private String content; | |||
| private String media_id; | |||
| private String mediaId; | |||
| public WxMassOpenIdsMessage() { | |||
| super(); | |||
| } | |||
| public String getMsgtype() { | |||
| return msgtype; | |||
| public String getMsgType() { | |||
| return msgType; | |||
| } | |||
| /** | |||
| @@ -35,10 +35,10 @@ public class WxMassOpenIdsMessage { | |||
| * {@link me.chanjar.weixin.api.WxConsts#MASS_MSG_VOICE} | |||
| * 如果msgtype和media_id不匹配的话,会返回系统繁忙的错误 | |||
| * </pre> | |||
| * @param msgtype | |||
| * @param msgType | |||
| */ | |||
| public void setMsgtype(String msgtype) { | |||
| this.msgtype = msgtype; | |||
| public void setMsgType(String msgType) { | |||
| this.msgType = msgType; | |||
| } | |||
| public String getContent() { | |||
| @@ -49,12 +49,12 @@ public class WxMassOpenIdsMessage { | |||
| this.content = content; | |||
| } | |||
| public String getMedia_id() { | |||
| return media_id; | |||
| public String getMediaId() { | |||
| return mediaId; | |||
| } | |||
| public void setMedia_id(String media_id) { | |||
| this.media_id = media_id; | |||
| public void setMediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| } | |||
| public String toJson() { | |||
| @@ -65,8 +65,8 @@ public class WxMassOpenIdsMessage { | |||
| * OpenId列表,最多支持10,000个 | |||
| * @return | |||
| */ | |||
| public List<String> getTouser() { | |||
| return touser; | |||
| public List<String> getToUsers() { | |||
| return toUsers; | |||
| } | |||
| /** | |||
| @@ -74,6 +74,6 @@ public class WxMassOpenIdsMessage { | |||
| * @param openId | |||
| */ | |||
| public void addUser(String openId) { | |||
| this.touser.add(openId); | |||
| this.toUsers.add(openId); | |||
| } | |||
| } | |||
| @@ -9,7 +9,7 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| */ | |||
| public class WxMassVideo { | |||
| private String media_id; | |||
| private String mediaId; | |||
| private String title; | |||
| private String description; | |||
| @@ -29,12 +29,12 @@ public class WxMassVideo { | |||
| this.description = description; | |||
| } | |||
| public String getMedia_id() { | |||
| return media_id; | |||
| public String getMediaId() { | |||
| return mediaId; | |||
| } | |||
| public void setMedia_id(String media_id) { | |||
| this.media_id = media_id; | |||
| public void setMediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| } | |||
| public String toJson() { | |||
| @@ -14,14 +14,14 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| */ | |||
| public class WxMenu { | |||
| private List<WxMenuButton> button = new ArrayList<WxMenuButton>(); | |||
| private List<WxMenuButton> buttons = new ArrayList<WxMenuButton>(); | |||
| public List<WxMenuButton> getButton() { | |||
| return button; | |||
| public List<WxMenuButton> getButtons() { | |||
| return buttons; | |||
| } | |||
| public void setButton(List<WxMenuButton> button) { | |||
| this.button = button; | |||
| public void setButtons(List<WxMenuButton> buttons) { | |||
| this.buttons = buttons; | |||
| } | |||
| public String toJson() { | |||
| @@ -43,7 +43,7 @@ public class WxMenu { | |||
| private String key; | |||
| private String url; | |||
| private List<WxMenuButton> sub_button = new ArrayList<WxMenuButton>(); | |||
| private List<WxMenuButton> subButtons = new ArrayList<WxMenuButton>(); | |||
| public String getType() { | |||
| return type; | |||
| @@ -77,12 +77,12 @@ public class WxMenu { | |||
| this.url = url; | |||
| } | |||
| public List<WxMenuButton> getSub_button() { | |||
| return sub_button; | |||
| public List<WxMenuButton> getSubButtons() { | |||
| return subButtons; | |||
| } | |||
| public void setSub_button(List<WxMenuButton> sub_button) { | |||
| this.sub_button = sub_button; | |||
| public void setSubButtons(List<WxMenuButton> subButtons) { | |||
| this.subButtons = subButtons; | |||
| } | |||
| } | |||
| @@ -36,91 +36,91 @@ public class WxXmlMessage { | |||
| @XmlElement(name = "ToUserName") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String ToUserName; | |||
| private String toUserName; | |||
| @XmlElement(name = "FromUserName") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String FromUserName; | |||
| private String fromUserName; | |||
| @XmlElement(name = "CreateTime") | |||
| private Long CreateTime; | |||
| private Long createTime; | |||
| @XmlElement(name = "MsgType") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String MsgType; | |||
| private String msgType; | |||
| @XmlElement(name = "Content") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Content; | |||
| private String content; | |||
| @XmlElement(name = "MsgId") | |||
| private Long MsgId; | |||
| private Long msgId; | |||
| @XmlElement(name = "PicUrl") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String PicUrl; | |||
| private String picUrl; | |||
| @XmlElement(name = "MediaId") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String MediaId; | |||
| private String mediaId; | |||
| @XmlElement(name = "Format") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Format; | |||
| private String format; | |||
| @XmlElement(name = "ThumbMediaId") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String ThumbMediaId; | |||
| private String thumbMediaId; | |||
| @XmlElement(name = "Location_X") | |||
| private Double Location_X; | |||
| private Double locationX; | |||
| @XmlElement(name = "Location_Y") | |||
| private Double Location_Y; | |||
| private Double locationY; | |||
| @XmlElement(name = "Scale") | |||
| private Double Scale; | |||
| private Double scale; | |||
| @XmlElement(name = "Label") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Label; | |||
| private String label; | |||
| @XmlElement(name = "Title") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Title; | |||
| private String title; | |||
| @XmlElement(name = "Description") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Description; | |||
| private String description; | |||
| @XmlElement(name = "Url") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Url; | |||
| private String url; | |||
| @XmlElement(name = "Event") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Event; | |||
| private String event; | |||
| @XmlElement(name = "EventKey") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String EventKey; | |||
| private String eventKey; | |||
| @XmlElement(name = "Ticket") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Ticket; | |||
| private String ticket; | |||
| @XmlElement(name = "Latitude") | |||
| private Double Latitude; | |||
| private Double latitude; | |||
| @XmlElement(name = "Longitude") | |||
| private Double Longitude; | |||
| private Double longitude; | |||
| @XmlElement(name = "Precision") | |||
| private Double Precision; | |||
| private Double precision; | |||
| @XmlElement(name = "Recognition") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Recognition; | |||
| private String recognition; | |||
| /////////////////////////////////////// | |||
| // 群发消息返回的结果 | |||
| @@ -130,47 +130,51 @@ public class WxXmlMessage { | |||
| */ | |||
| @XmlElement(name = "Status") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Status; | |||
| private String status; | |||
| /** | |||
| * group_id下粉丝数;或者openid_list中的粉丝数 | |||
| */ | |||
| private Integer TotalCount; | |||
| @XmlElement(name = "TotalCount") | |||
| private Integer totalCount; | |||
| /** | |||
| * 过滤(过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数,原则上,FilterCount = SentCount + ErrorCount | |||
| * 过滤(过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数,原则上,filterCount = sentCount + errorCount | |||
| */ | |||
| private Integer FilterCount; | |||
| @XmlElement(name = "FilterCount") | |||
| private Integer filterCount; | |||
| /** | |||
| * 发送成功的粉丝数 | |||
| */ | |||
| private Integer SentCount; | |||
| @XmlElement(name = "SentCount") | |||
| private Integer sentCount; | |||
| /** | |||
| * 发送失败的粉丝数 | |||
| */ | |||
| private Integer ErrorCount; | |||
| @XmlElement(name = "ErrorCount") | |||
| private Integer errorCount; | |||
| @XmlElement(name = "ScanCodeInfo") | |||
| private ScanCodeInfo ScanCodeInfo = new ScanCodeInfo(); | |||
| private ScanCodeInfo scanCodeInfo = new ScanCodeInfo(); | |||
| @XmlElement(name = "SendPicsInfo") | |||
| private SendPicsInfo SendPicsInfo = new SendPicsInfo(); | |||
| private SendPicsInfo sendPicsInfo = new SendPicsInfo(); | |||
| @XmlElement(name = "SendLocationInfo") | |||
| private SendLocationInfo SendLocationInfo = new SendLocationInfo(); | |||
| private SendLocationInfo sendLocationInfo = new SendLocationInfo(); | |||
| public String getToUserName() { | |||
| return ToUserName; | |||
| return toUserName; | |||
| } | |||
| public void setToUserName(String toUserName) { | |||
| ToUserName = toUserName; | |||
| this.toUserName = toUserName; | |||
| } | |||
| public Long getCreateTime() { | |||
| return CreateTime; | |||
| return createTime; | |||
| } | |||
| public void setCreateTime(Long createTime) { | |||
| CreateTime = createTime; | |||
| this.createTime = createTime; | |||
| } | |||
| /** | |||
| @@ -188,7 +192,7 @@ public class WxXmlMessage { | |||
| * @return | |||
| */ | |||
| public String getMsgType() { | |||
| return MsgType; | |||
| return msgType; | |||
| } | |||
| /** | |||
| @@ -205,175 +209,175 @@ public class WxXmlMessage { | |||
| * @param msgType | |||
| */ | |||
| public void setMsgType(String msgType) { | |||
| MsgType = msgType; | |||
| this.msgType = msgType; | |||
| } | |||
| public String getContent() { | |||
| return Content; | |||
| return content; | |||
| } | |||
| public void setContent(String content) { | |||
| Content = content; | |||
| this.content = content; | |||
| } | |||
| public Long getMsgId() { | |||
| return MsgId; | |||
| return msgId; | |||
| } | |||
| public void setMsgId(Long msgId) { | |||
| MsgId = msgId; | |||
| this.msgId = msgId; | |||
| } | |||
| public String getPicUrl() { | |||
| return PicUrl; | |||
| return picUrl; | |||
| } | |||
| public void setPicUrl(String picUrl) { | |||
| PicUrl = picUrl; | |||
| this.picUrl = picUrl; | |||
| } | |||
| public String getMediaId() { | |||
| return MediaId; | |||
| return mediaId; | |||
| } | |||
| public void setMediaId(String mediaId) { | |||
| MediaId = mediaId; | |||
| this.mediaId = mediaId; | |||
| } | |||
| public String getFormat() { | |||
| return Format; | |||
| return format; | |||
| } | |||
| public void setFormat(String format) { | |||
| Format = format; | |||
| this.format = format; | |||
| } | |||
| public String getThumbMediaId() { | |||
| return ThumbMediaId; | |||
| return thumbMediaId; | |||
| } | |||
| public void setThumbMediaId(String thumbMediaId) { | |||
| ThumbMediaId = thumbMediaId; | |||
| this.thumbMediaId = thumbMediaId; | |||
| } | |||
| public Double getLocation_X() { | |||
| return Location_X; | |||
| public Double getLocationX() { | |||
| return locationX; | |||
| } | |||
| public void setLocation_X(Double location_X) { | |||
| Location_X = location_X; | |||
| public void setLocationX(Double locationX) { | |||
| this.locationX = locationX; | |||
| } | |||
| public Double getLocation_Y() { | |||
| return Location_Y; | |||
| public Double getLocationY() { | |||
| return locationY; | |||
| } | |||
| public void setLocation_Y(Double location_Y) { | |||
| Location_Y = location_Y; | |||
| public void setLocationY(Double locationY) { | |||
| this.locationY = locationY; | |||
| } | |||
| public Double getScale() { | |||
| return Scale; | |||
| return scale; | |||
| } | |||
| public void setScale(Double scale) { | |||
| Scale = scale; | |||
| this.scale = scale; | |||
| } | |||
| public String getLabel() { | |||
| return Label; | |||
| return label; | |||
| } | |||
| public void setLabel(String label) { | |||
| Label = label; | |||
| this.label = label; | |||
| } | |||
| public String getTitle() { | |||
| return Title; | |||
| return title; | |||
| } | |||
| public void setTitle(String title) { | |||
| Title = title; | |||
| this.title = title; | |||
| } | |||
| public String getDescription() { | |||
| return Description; | |||
| return description; | |||
| } | |||
| public void setDescription(String description) { | |||
| Description = description; | |||
| this.description = description; | |||
| } | |||
| public String getUrl() { | |||
| return Url; | |||
| return url; | |||
| } | |||
| public void setUrl(String url) { | |||
| Url = url; | |||
| this.url = url; | |||
| } | |||
| public String getEvent() { | |||
| return Event; | |||
| return event; | |||
| } | |||
| public void setEvent(String event) { | |||
| Event = event; | |||
| this.event = event; | |||
| } | |||
| public String getEventKey() { | |||
| return EventKey; | |||
| return eventKey; | |||
| } | |||
| public void setEventKey(String eventKey) { | |||
| EventKey = eventKey; | |||
| this.eventKey = eventKey; | |||
| } | |||
| public String getTicket() { | |||
| return Ticket; | |||
| return ticket; | |||
| } | |||
| public void setTicket(String ticket) { | |||
| Ticket = ticket; | |||
| this.ticket = ticket; | |||
| } | |||
| public Double getLatitude() { | |||
| return Latitude; | |||
| return latitude; | |||
| } | |||
| public void setLatitude(Double latitude) { | |||
| Latitude = latitude; | |||
| this.latitude = latitude; | |||
| } | |||
| public Double getLongitude() { | |||
| return Longitude; | |||
| return longitude; | |||
| } | |||
| public void setLongitude(Double longitude) { | |||
| Longitude = longitude; | |||
| this.longitude = longitude; | |||
| } | |||
| public Double getPrecision() { | |||
| return Precision; | |||
| return precision; | |||
| } | |||
| public void setPrecision(Double precision) { | |||
| Precision = precision; | |||
| this.precision = precision; | |||
| } | |||
| public String getRecognition() { | |||
| return Recognition; | |||
| return recognition; | |||
| } | |||
| public void setRecognition(String recognition) { | |||
| Recognition = recognition; | |||
| this.recognition = recognition; | |||
| } | |||
| public String getFromUserName() { | |||
| return FromUserName; | |||
| return fromUserName; | |||
| } | |||
| public void setFromUserName(String fromUserName) { | |||
| FromUserName = fromUserName; | |||
| this.fromUserName = fromUserName; | |||
| } | |||
| public static WxXmlMessage fromXml(String xml) { | |||
| @@ -423,67 +427,67 @@ public class WxXmlMessage { | |||
| } | |||
| public String getStatus() { | |||
| return Status; | |||
| return status; | |||
| } | |||
| public void setStatus(String status) { | |||
| Status = status; | |||
| this.status = status; | |||
| } | |||
| public Integer getTotalCount() { | |||
| return TotalCount; | |||
| return totalCount; | |||
| } | |||
| public void setTotalCount(Integer totalCount) { | |||
| TotalCount = totalCount; | |||
| this.totalCount = totalCount; | |||
| } | |||
| public Integer getFilterCount() { | |||
| return FilterCount; | |||
| return filterCount; | |||
| } | |||
| public void setFilterCount(Integer filterCount) { | |||
| FilterCount = filterCount; | |||
| this.filterCount = filterCount; | |||
| } | |||
| public Integer getSentCount() { | |||
| return SentCount; | |||
| return sentCount; | |||
| } | |||
| public void setSentCount(Integer sentCount) { | |||
| SentCount = sentCount; | |||
| this.sentCount = sentCount; | |||
| } | |||
| public Integer getErrorCount() { | |||
| return ErrorCount; | |||
| return errorCount; | |||
| } | |||
| public void setErrorCount(Integer errorCount) { | |||
| ErrorCount = errorCount; | |||
| this.errorCount = errorCount; | |||
| } | |||
| public WxXmlMessage.ScanCodeInfo getScanCodeInfo() { | |||
| return ScanCodeInfo; | |||
| return scanCodeInfo; | |||
| } | |||
| public void setScanCodeInfo(WxXmlMessage.ScanCodeInfo scanCodeInfo) { | |||
| ScanCodeInfo = scanCodeInfo; | |||
| this.scanCodeInfo = scanCodeInfo; | |||
| } | |||
| public WxXmlMessage.SendPicsInfo getSendPicsInfo() { | |||
| return SendPicsInfo; | |||
| return sendPicsInfo; | |||
| } | |||
| public void setSendPicsInfo(WxXmlMessage.SendPicsInfo sendPicsInfo) { | |||
| SendPicsInfo = sendPicsInfo; | |||
| this.sendPicsInfo = sendPicsInfo; | |||
| } | |||
| public WxXmlMessage.SendLocationInfo getSendLocationInfo() { | |||
| return SendLocationInfo; | |||
| return sendLocationInfo; | |||
| } | |||
| public void setSendLocationInfo(WxXmlMessage.SendLocationInfo sendLocationInfo) { | |||
| SendLocationInfo = sendLocationInfo; | |||
| this.sendLocationInfo = sendLocationInfo; | |||
| } | |||
| @XmlRootElement(name = "ScanCodeInfo") | |||
| @@ -492,11 +496,11 @@ public class WxXmlMessage { | |||
| @XmlElement(name = "ScanType") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String ScanType; | |||
| private String scanType; | |||
| @XmlElement(name = "ScanResult") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String ScanResult; | |||
| private String scanResult; | |||
| /** | |||
| * 扫描类型,一般是qrcode | |||
| @@ -504,11 +508,11 @@ public class WxXmlMessage { | |||
| */ | |||
| public String getScanType() { | |||
| return ScanType; | |||
| return scanType; | |||
| } | |||
| public void setScanType(String scanType) { | |||
| ScanType = scanType; | |||
| this.scanType = scanType; | |||
| } | |||
| /** | |||
| @@ -516,11 +520,11 @@ public class WxXmlMessage { | |||
| * @return | |||
| */ | |||
| public String getScanResult() { | |||
| return ScanResult; | |||
| return scanResult; | |||
| } | |||
| public void setScanResult(String scanResult) { | |||
| ScanResult = scanResult; | |||
| this.scanResult = scanResult; | |||
| } | |||
| } | |||
| @@ -529,22 +533,23 @@ public class WxXmlMessage { | |||
| @XmlAccessorType(XmlAccessType.FIELD) | |||
| public static class SendPicsInfo { | |||
| private Long Count; | |||
| @XmlElement(name = "Count") | |||
| private Long count; | |||
| @XmlElementWrapper(name="PicList") | |||
| @XmlElement(name = "item") | |||
| protected final List<Item> PicList = new ArrayList<Item>(); | |||
| protected final List<Item> picList = new ArrayList<Item>(); | |||
| public Long getCount() { | |||
| return Count; | |||
| return count; | |||
| } | |||
| public void setCount(Long count) { | |||
| Count = count; | |||
| this.count = count; | |||
| } | |||
| public List<Item> getPicList() { | |||
| return PicList; | |||
| return picList; | |||
| } | |||
| @XmlRootElement(name = "item") | |||
| @@ -572,62 +577,62 @@ public class WxXmlMessage { | |||
| @XmlElement(name = "Location_X") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Location_X; | |||
| private String locationX; | |||
| @XmlElement(name = "Location_Y") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Location_Y; | |||
| private String locationY; | |||
| @XmlElement(name = "Scale") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Scale; | |||
| private String scale; | |||
| @XmlElement(name = "Label") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Label; | |||
| private String label; | |||
| @XmlElement(name = "Poiname") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Poiname; | |||
| private String poiname; | |||
| public String getLocation_X() { | |||
| return Location_X; | |||
| public String getLocationX() { | |||
| return locationX; | |||
| } | |||
| public void setLocation_X(String location_X) { | |||
| Location_X = location_X; | |||
| public void setLocationX(String locationX) { | |||
| this.locationX = locationX; | |||
| } | |||
| public String getLocation_Y() { | |||
| return Location_Y; | |||
| public String getLocationY() { | |||
| return locationY; | |||
| } | |||
| public void setLocation_Y(String location_Y) { | |||
| Location_Y = location_Y; | |||
| public void setLocationY(String locationY) { | |||
| this.locationY = locationY; | |||
| } | |||
| public String getScale() { | |||
| return Scale; | |||
| return scale; | |||
| } | |||
| public void setScale(String scale) { | |||
| Scale = scale; | |||
| this.scale = scale; | |||
| } | |||
| public String getLabel() { | |||
| return Label; | |||
| return label; | |||
| } | |||
| public void setLabel(String label) { | |||
| Label = label; | |||
| this.label = label; | |||
| } | |||
| public String getPoiname() { | |||
| return Poiname; | |||
| return poiname; | |||
| } | |||
| public void setPoiname(String poiname) { | |||
| Poiname = poiname; | |||
| this.poiname = poiname; | |||
| } | |||
| } | |||
| @@ -15,18 +15,18 @@ public class WxXmlOutImageMessage extends WxXmlOutMessage { | |||
| @XmlElement(name="Image") | |||
| @XmlJavaTypeAdapter(MediaIdMarshaller.class) | |||
| private String MediaId; | |||
| private String mediaId; | |||
| public WxXmlOutImageMessage() { | |||
| this.MsgType = WxConsts.XML_MSG_IMAGE; | |||
| this.msgType = WxConsts.XML_MSG_IMAGE; | |||
| } | |||
| public String getMediaId() { | |||
| return MediaId; | |||
| return mediaId; | |||
| } | |||
| public void setMediaId(String mediaId) { | |||
| MediaId = mediaId; | |||
| this.mediaId = mediaId; | |||
| } | |||
| } | |||
| @@ -24,49 +24,49 @@ public class WxXmlOutMessage { | |||
| @XmlElement(name="ToUserName") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| protected String ToUserName; | |||
| protected String toUserName; | |||
| @XmlElement(name="FromUserName") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| protected String FromUserName; | |||
| protected String fromUserName; | |||
| @XmlElement(name="CreateTime") | |||
| protected Long CreateTime; | |||
| protected Long createTime; | |||
| @XmlElement(name="MsgType") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| protected String MsgType; | |||
| protected String msgType; | |||
| public String getToUserName() { | |||
| return ToUserName; | |||
| return toUserName; | |||
| } | |||
| public void setToUserName(String toUserName) { | |||
| ToUserName = toUserName; | |||
| this.toUserName = toUserName; | |||
| } | |||
| public String getFromUserName() { | |||
| return FromUserName; | |||
| return fromUserName; | |||
| } | |||
| public void setFromUserName(String fromUserName) { | |||
| FromUserName = fromUserName; | |||
| this.fromUserName = fromUserName; | |||
| } | |||
| public Long getCreateTime() { | |||
| return CreateTime; | |||
| return createTime; | |||
| } | |||
| public void setCreateTime(Long createTime) { | |||
| CreateTime = createTime; | |||
| this.createTime = createTime; | |||
| } | |||
| public String getMsgType() { | |||
| return MsgType; | |||
| return msgType; | |||
| } | |||
| public void setMsgType(String msgType) { | |||
| MsgType = msgType; | |||
| this.msgType = msgType; | |||
| } | |||
| public String toXml() { | |||
| @@ -18,27 +18,27 @@ import me.chanjar.weixin.util.xml.AdapterCDATA; | |||
| public class WxXmlOutMewsMessage extends WxXmlOutMessage { | |||
| @XmlElement(name = "ArticleCount") | |||
| protected int ArticleCount; | |||
| protected int articleCount; | |||
| @XmlElementWrapper(name="Articles") | |||
| @XmlElement(name = "Item") | |||
| protected final List<Item> Articles = new ArrayList<Item>(); | |||
| protected final List<Item> articles = new ArrayList<Item>(); | |||
| public WxXmlOutMewsMessage() { | |||
| this.MsgType = WxConsts.XML_MSG_NEWS; | |||
| this.msgType = WxConsts.XML_MSG_NEWS; | |||
| } | |||
| public int getArticleCount() { | |||
| return ArticleCount; | |||
| return articleCount; | |||
| } | |||
| public void addArticle(Item item) { | |||
| this.Articles.add(item); | |||
| this.ArticleCount = this.Articles.size(); | |||
| this.articles.add(item); | |||
| this.articleCount = this.articles.size(); | |||
| } | |||
| public List<Item> getArticles() { | |||
| return Articles; | |||
| return articles; | |||
| } | |||
| @@ -17,7 +17,7 @@ public class WxXmlOutMusicMessage extends WxXmlOutMessage { | |||
| protected final Music music = new Music(); | |||
| public WxXmlOutMusicMessage() { | |||
| this.MsgType = WxConsts.XML_MSG_MUSIC; | |||
| this.msgType = WxConsts.XML_MSG_MUSIC; | |||
| } | |||
| public String getTitle() { | |||
| @@ -52,12 +52,12 @@ public class WxXmlOutMusicMessage extends WxXmlOutMessage { | |||
| music.setMusicUrl(musicUrl); | |||
| } | |||
| public String getHQMusicUrl() { | |||
| return music.getHQMusicUrl(); | |||
| public String getHqMusicUrl() { | |||
| return music.getHqMusicUrl(); | |||
| } | |||
| public void setHQMusicUrl(String hQMusicUrl) { | |||
| music.setHQMusicUrl(hQMusicUrl); | |||
| public void setHqMusicUrl(String hqMusicUrl) { | |||
| music.setHqMusicUrl(hqMusicUrl); | |||
| } | |||
| @XmlRootElement(name = "Music") | |||
| @@ -66,62 +66,62 @@ public class WxXmlOutMusicMessage extends WxXmlOutMessage { | |||
| @XmlElement(name = "Title") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Title; | |||
| private String title; | |||
| @XmlElement(name = "Description") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Description; | |||
| private String description; | |||
| @XmlElement(name="ThumbMediaId") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String ThumbMediaId; | |||
| private String thumbMediaId; | |||
| @XmlElement(name="MusicUrl") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String MusicUrl; | |||
| private String musicUrl; | |||
| @XmlElement(name="HQMusicUrl") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String HQMusicUrl; | |||
| private String hqMusicUrl; | |||
| public String getTitle() { | |||
| return Title; | |||
| return title; | |||
| } | |||
| public void setTitle(String title) { | |||
| Title = title; | |||
| this.title = title; | |||
| } | |||
| public String getDescription() { | |||
| return Description; | |||
| return description; | |||
| } | |||
| public void setDescription(String description) { | |||
| Description = description; | |||
| this.description = description; | |||
| } | |||
| public String getThumbMediaId() { | |||
| return ThumbMediaId; | |||
| return thumbMediaId; | |||
| } | |||
| public void setThumbMediaId(String thumbMediaId) { | |||
| ThumbMediaId = thumbMediaId; | |||
| this.thumbMediaId = thumbMediaId; | |||
| } | |||
| public String getMusicUrl() { | |||
| return MusicUrl; | |||
| return musicUrl; | |||
| } | |||
| public void setMusicUrl(String musicUrl) { | |||
| MusicUrl = musicUrl; | |||
| this.musicUrl = musicUrl; | |||
| } | |||
| public String getHQMusicUrl() { | |||
| return HQMusicUrl; | |||
| public String getHqMusicUrl() { | |||
| return hqMusicUrl; | |||
| } | |||
| public void setHQMusicUrl(String hQMusicUrl) { | |||
| HQMusicUrl = hQMusicUrl; | |||
| public void setHqMusicUrl(String hqMusicUrl) { | |||
| this.hqMusicUrl = hqMusicUrl; | |||
| } | |||
| } | |||
| @@ -15,18 +15,18 @@ public class WxXmlOutTextMessage extends WxXmlOutMessage { | |||
| @XmlElement(name="Content") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Content; | |||
| private String content; | |||
| public WxXmlOutTextMessage() { | |||
| this.MsgType = WxConsts.XML_MSG_TEXT; | |||
| this.msgType = WxConsts.XML_MSG_TEXT; | |||
| } | |||
| public String getContent() { | |||
| return Content; | |||
| return content; | |||
| } | |||
| public void setContent(String content) { | |||
| Content = content; | |||
| this.content = content; | |||
| } | |||
| @@ -17,7 +17,7 @@ public class WxXmlOutVideoMessage extends WxXmlOutMessage { | |||
| protected final Video video = new Video(); | |||
| public WxXmlOutVideoMessage() { | |||
| this.MsgType = WxConsts.XML_MSG_VIDEO; | |||
| this.msgType = WxConsts.XML_MSG_VIDEO; | |||
| } | |||
| public String getMediaId() { | |||
| @@ -51,38 +51,38 @@ public class WxXmlOutVideoMessage extends WxXmlOutMessage { | |||
| @XmlElement(name = "MediaId") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String MediaId; | |||
| private String mediaId; | |||
| @XmlElement(name = "Title") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Title; | |||
| private String title; | |||
| @XmlElement(name = "Description") | |||
| @XmlJavaTypeAdapter(AdapterCDATA.class) | |||
| private String Description; | |||
| private String description; | |||
| public String getMediaId() { | |||
| return MediaId; | |||
| return mediaId; | |||
| } | |||
| public void setMediaId(String mediaId) { | |||
| MediaId = mediaId; | |||
| this.mediaId = mediaId; | |||
| } | |||
| public String getTitle() { | |||
| return Title; | |||
| return title; | |||
| } | |||
| public void setTitle(String title) { | |||
| Title = title; | |||
| this.title = title; | |||
| } | |||
| public String getDescription() { | |||
| return Description; | |||
| return description; | |||
| } | |||
| public void setDescription(String description) { | |||
| Description = description; | |||
| this.description = description; | |||
| } | |||
| } | |||
| @@ -15,18 +15,18 @@ public class WxXmlOutVoiceMessage extends WxXmlOutMessage { | |||
| @XmlElement(name="Voice") | |||
| @XmlJavaTypeAdapter(MediaIdMarshaller.class) | |||
| private String MediaId; | |||
| private String mediaId; | |||
| public WxXmlOutVoiceMessage() { | |||
| this.MsgType = WxConsts.XML_MSG_VOICE; | |||
| this.msgType = WxConsts.XML_MSG_VOICE; | |||
| } | |||
| public String getMediaId() { | |||
| return MediaId; | |||
| return mediaId; | |||
| } | |||
| public void setMediaId(String mediaId) { | |||
| MediaId = mediaId; | |||
| this.mediaId = mediaId; | |||
| } | |||
| } | |||
| @@ -3,7 +3,7 @@ package me.chanjar.weixin.bean.custombuilder; | |||
| import me.chanjar.weixin.bean.WxCustomMessage; | |||
| public class BaseBuilder<T> { | |||
| protected String msgtype; | |||
| protected String msgType; | |||
| protected String toUser; | |||
| public T toUser(String toUser) { | |||
| @@ -13,8 +13,8 @@ public class BaseBuilder<T> { | |||
| public WxCustomMessage build() { | |||
| WxCustomMessage m = new WxCustomMessage(); | |||
| m.setMsgtype(this.msgtype); | |||
| m.setTouser(this.toUser); | |||
| m.setMsgType(this.msgType); | |||
| m.setToUser(this.toUser); | |||
| return m; | |||
| } | |||
| } | |||
| @@ -6,26 +6,26 @@ import me.chanjar.weixin.bean.WxCustomMessage; | |||
| /** | |||
| * 获得消息builder | |||
| * <pre> | |||
| * 用法: WxCustomMessage m = WxCustomMessage.IMAGE().media_id(...).touser(...).build(); | |||
| * 用法: WxCustomMessage m = WxCustomMessage.IMAGE().mediaId(...).touser(...).build(); | |||
| * </pre> | |||
| * @author chanjarster | |||
| * | |||
| */ | |||
| public final class ImageBuilder extends BaseBuilder<ImageBuilder> { | |||
| private String media_id; | |||
| private String mediaId; | |||
| public ImageBuilder() { | |||
| this.msgtype = WxConsts.CUSTOM_MSG_IMAGE; | |||
| this.msgType = WxConsts.CUSTOM_MSG_IMAGE; | |||
| } | |||
| public ImageBuilder mediaId(String media_id) { | |||
| this.media_id = media_id; | |||
| this.mediaId = media_id; | |||
| return this; | |||
| } | |||
| public WxCustomMessage build() { | |||
| WxCustomMessage m = super.build(); | |||
| m.setMedia_id(this.media_id); | |||
| m.setMediaId(this.mediaId); | |||
| return m; | |||
| } | |||
| } | |||
| @@ -7,10 +7,10 @@ import me.chanjar.weixin.bean.WxCustomMessage; | |||
| * 音乐消息builder | |||
| * <pre> | |||
| * 用法: WxCustomMessage m = WxCustomMessage.MUSIC() | |||
| * .musicurl(...) | |||
| * .hqmusicurl(...) | |||
| * .musicUrl(...) | |||
| * .hqMusicUrl(...) | |||
| * .title(...) | |||
| * .thumb_media_id(..) | |||
| * .thumbMediaId(..) | |||
| * .description(..) | |||
| * .touser(...) | |||
| * .build(); | |||
| @@ -19,21 +19,21 @@ import me.chanjar.weixin.bean.WxCustomMessage; | |||
| public final class MusicBuilder extends BaseBuilder<MusicBuilder> { | |||
| private String title; | |||
| private String description; | |||
| private String thumb_media_id; | |||
| private String musicurl; | |||
| private String hqmusicurl; | |||
| private String thumbMediaId; | |||
| private String musicUrl; | |||
| private String hqMusicUrl; | |||
| public MusicBuilder() { | |||
| this.msgtype = WxConsts.CUSTOM_MSG_MUSIC; | |||
| this.msgType = WxConsts.CUSTOM_MSG_MUSIC; | |||
| } | |||
| public MusicBuilder musicUrl(String musicurl) { | |||
| this.musicurl = musicurl; | |||
| this.musicUrl = musicurl; | |||
| return this; | |||
| } | |||
| public MusicBuilder hqmusicUrl(String hqmusicurl) { | |||
| this.hqmusicurl = hqmusicurl; | |||
| public MusicBuilder hqMusicUrl(String hqMusicurl) { | |||
| this.hqMusicUrl = hqMusicurl; | |||
| return this; | |||
| } | |||
| @@ -48,17 +48,17 @@ public final class MusicBuilder extends BaseBuilder<MusicBuilder> { | |||
| } | |||
| public MusicBuilder thumbMediaId(String thumb_media_id) { | |||
| this.thumb_media_id = thumb_media_id; | |||
| this.thumbMediaId = thumb_media_id; | |||
| return this; | |||
| } | |||
| public WxCustomMessage build() { | |||
| WxCustomMessage m = super.build(); | |||
| m.setMusicurl(this.musicurl); | |||
| m.setHqmusicurl(this.hqmusicurl); | |||
| m.setMusicUrl(this.musicUrl); | |||
| m.setHqMusicUrl(this.hqMusicUrl); | |||
| m.setTitle(title); | |||
| m.setDescription(description); | |||
| m.setThumb_media_id(thumb_media_id); | |||
| m.setThumbMediaId(thumbMediaId); | |||
| return m; | |||
| } | |||
| } | |||
| @@ -20,7 +20,7 @@ public final class NewsBuilder extends BaseBuilder<NewsBuilder> { | |||
| private List<WxCustomMessage.WxArticle> articles = new ArrayList<WxCustomMessage.WxArticle>(); | |||
| public NewsBuilder() { | |||
| this.msgtype = WxConsts.CUSTOM_MSG_NEWS; | |||
| this.msgType = WxConsts.CUSTOM_MSG_NEWS; | |||
| } | |||
| public NewsBuilder addArticle(WxCustomMessage.WxArticle article) { | |||
| @@ -15,7 +15,7 @@ public final class TextBuilder extends BaseBuilder<TextBuilder> { | |||
| private String content; | |||
| public TextBuilder() { | |||
| this.msgtype = WxConsts.CUSTOM_MSG_TEXT; | |||
| this.msgType = WxConsts.CUSTOM_MSG_TEXT; | |||
| } | |||
| public TextBuilder content(String content) { | |||
| @@ -7,9 +7,9 @@ import me.chanjar.weixin.bean.WxCustomMessage; | |||
| * 视频消息builder | |||
| * <pre> | |||
| * 用法: WxCustomMessage m = WxCustomMessage.VOICE() | |||
| * .media_id(...) | |||
| * .mediaId(...) | |||
| * .title(...) | |||
| * .thumb_media_id(..) | |||
| * .thumbMediaId(..) | |||
| * .description(..) | |||
| * .touser(...) | |||
| * .build(); | |||
| @@ -18,17 +18,17 @@ import me.chanjar.weixin.bean.WxCustomMessage; | |||
| * | |||
| */ | |||
| public final class VideoBuilder extends BaseBuilder<VideoBuilder> { | |||
| private String media_id; | |||
| private String mediaId; | |||
| private String title; | |||
| private String description; | |||
| private String thumb_media_id; | |||
| private String thumbMediaId; | |||
| public VideoBuilder() { | |||
| this.msgtype = WxConsts.CUSTOM_MSG_VIDEO; | |||
| this.msgType = WxConsts.CUSTOM_MSG_VIDEO; | |||
| } | |||
| public VideoBuilder mediaId(String media_id) { | |||
| this.media_id = media_id; | |||
| public VideoBuilder mediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| return this; | |||
| } | |||
| @@ -43,16 +43,16 @@ public final class VideoBuilder extends BaseBuilder<VideoBuilder> { | |||
| } | |||
| public VideoBuilder thumbMediaId(String thumb_media_id) { | |||
| this.thumb_media_id = thumb_media_id; | |||
| this.thumbMediaId = thumb_media_id; | |||
| return this; | |||
| } | |||
| public WxCustomMessage build() { | |||
| WxCustomMessage m = super.build(); | |||
| m.setMedia_id(this.media_id); | |||
| m.setMediaId(this.mediaId); | |||
| m.setTitle(title); | |||
| m.setDescription(description); | |||
| m.setThumb_media_id(thumb_media_id); | |||
| m.setThumbMediaId(thumbMediaId); | |||
| return m; | |||
| } | |||
| } | |||
| @@ -6,26 +6,26 @@ import me.chanjar.weixin.bean.WxCustomMessage; | |||
| /** | |||
| * 语音消息builder | |||
| * <pre> | |||
| * 用法: WxCustomMessage m = WxCustomMessage.VOICE().media_id(...).touser(...).build(); | |||
| * 用法: WxCustomMessage m = WxCustomMessage.VOICE().mediaId(...).touser(...).build(); | |||
| * </pre> | |||
| * @author chanjarster | |||
| * | |||
| */ | |||
| public final class VoiceBuilder extends BaseBuilder<VoiceBuilder> { | |||
| private String media_id; | |||
| private String mediaId; | |||
| public VoiceBuilder() { | |||
| this.msgtype = WxConsts.CUSTOM_MSG_VOICE; | |||
| this.msgType = WxConsts.CUSTOM_MSG_VOICE; | |||
| } | |||
| public VoiceBuilder mediaId(String media_id) { | |||
| this.media_id = media_id; | |||
| this.mediaId = media_id; | |||
| return this; | |||
| } | |||
| public WxCustomMessage build() { | |||
| WxCustomMessage m = super.build(); | |||
| m.setMedia_id(this.media_id); | |||
| m.setMediaId(this.mediaId); | |||
| return m; | |||
| } | |||
| } | |||
| @@ -11,7 +11,7 @@ public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxXmlOutMusicM | |||
| private String title; | |||
| private String description; | |||
| private String hQMusicUrl; | |||
| private String hqMusicUrl; | |||
| private String musicUrl; | |||
| private String thumbMediaId; | |||
| @@ -25,8 +25,8 @@ public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxXmlOutMusicM | |||
| return this; | |||
| } | |||
| public MusicBuilder hqmusicUrl(String hQMusicUrl) { | |||
| this.hQMusicUrl = hQMusicUrl; | |||
| public MusicBuilder hqMusicUrl(String hqMusicUrl) { | |||
| this.hqMusicUrl = hqMusicUrl; | |||
| return this; | |||
| } | |||
| @@ -45,7 +45,7 @@ public final class MusicBuilder extends BaseBuilder<MusicBuilder, WxXmlOutMusicM | |||
| setCommon(m); | |||
| m.setTitle(title); | |||
| m.setDescription(description); | |||
| m.setHQMusicUrl(hQMusicUrl); | |||
| m.setHqMusicUrl(hqMusicUrl); | |||
| m.setMusicUrl(musicUrl); | |||
| m.setThumbMediaId(thumbMediaId); | |||
| return m; | |||
| @@ -100,28 +100,28 @@ public class WxError { | |||
| errMap.put(50001, "用户未授权该api"); | |||
| } | |||
| protected int errcode; | |||
| protected int errorCode; | |||
| protected String errmsg; | |||
| protected String errorMsg; | |||
| public int getErrcode() { | |||
| return errcode; | |||
| public int getErrorCode() { | |||
| return errorCode; | |||
| } | |||
| public void setErrcode(int errcode) { | |||
| this.errcode = errcode; | |||
| public void setErrorCode(int errorCode) { | |||
| this.errorCode = errorCode; | |||
| } | |||
| public String getErrmsg() { | |||
| return errmsg; | |||
| public String getErrorMsg() { | |||
| return errorMsg; | |||
| } | |||
| public void setErrmsg(String errmsg) { | |||
| this.errmsg = errmsg; | |||
| public void setErrorMsg(String errorMsg) { | |||
| this.errorMsg = errorMsg; | |||
| } | |||
| public String getDescription() { | |||
| return errMap.get(errcode); | |||
| return errMap.get(errorCode); | |||
| } | |||
| public static WxError fromJson(String json) { | |||
| @@ -130,7 +130,7 @@ public class WxError { | |||
| @Override | |||
| public String toString() { | |||
| return "微信错误 errcode=" + errcode + ", errmsg=" + errmsg + ", description=" + getDescription(); | |||
| return "微信错误 errcode=" + errorCode + ", errmsg=" + errorMsg + ", description=" + getDescription(); | |||
| } | |||
| } | |||
| @@ -15,32 +15,32 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| */ | |||
| public class WxMassSendResult { | |||
| private String errcode; | |||
| private String errmsg; | |||
| private String msg_id; | |||
| private String errorCode; | |||
| private String errorMsg; | |||
| private String msgId; | |||
| public String getErrcode() { | |||
| return errcode; | |||
| public String getErrorCode() { | |||
| return errorCode; | |||
| } | |||
| public void setErrcode(String errcode) { | |||
| this.errcode = errcode; | |||
| public void setErrorCode(String errorCode) { | |||
| this.errorCode = errorCode; | |||
| } | |||
| public String getErrmsg() { | |||
| return errmsg; | |||
| public String getErrorMsg() { | |||
| return errorMsg; | |||
| } | |||
| public void setErrmsg(String errmsg) { | |||
| this.errmsg = errmsg; | |||
| public void setErrorMsg(String errorMsg) { | |||
| this.errorMsg = errorMsg; | |||
| } | |||
| public String getMsg_id() { | |||
| return msg_id; | |||
| public String getMsgId() { | |||
| return msgId; | |||
| } | |||
| public void setMsg_id(String msg_id) { | |||
| this.msg_id = msg_id; | |||
| public void setMsgId(String msgId) { | |||
| this.msgId = msgId; | |||
| } | |||
| public static WxMassSendResult fromJson(String json) { | |||
| @@ -49,7 +49,7 @@ public class WxMassSendResult { | |||
| @Override | |||
| public String toString() { | |||
| return "WxMassSendResult [errcode=" + errcode + ", errmsg=" + errmsg + ", msg_id=" + msg_id + "]"; | |||
| return "WxMassSendResult [errcode=" + errorCode + ", errmsg=" + errorMsg + ", msg_id=" + msgId + "]"; | |||
| } | |||
| } | |||
| @@ -13,8 +13,8 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| public class WxMassUploadResult { | |||
| private String type; | |||
| private String media_id; | |||
| private long created_at; | |||
| private String mediaId; | |||
| private long createdAt; | |||
| public String getType() { | |||
| return type; | |||
| @@ -24,20 +24,20 @@ public class WxMassUploadResult { | |||
| this.type = type; | |||
| } | |||
| public String getMedia_id() { | |||
| return media_id; | |||
| public String getMediaId() { | |||
| return mediaId; | |||
| } | |||
| public void setMedia_id(String media_id) { | |||
| this.media_id = media_id; | |||
| public void setMediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| } | |||
| public long getCreated_at() { | |||
| return created_at; | |||
| public long getCreatedAt() { | |||
| return createdAt; | |||
| } | |||
| public void setCreated_at(long created_at) { | |||
| this.created_at = created_at; | |||
| public void setCreatedAt(long createdAt) { | |||
| this.createdAt = createdAt; | |||
| } | |||
| public static WxMassUploadResult fromJson(String json) { | |||
| @@ -46,7 +46,7 @@ public class WxMassUploadResult { | |||
| @Override | |||
| public String toString() { | |||
| return "WxUploadResult [type=" + type + ", media_id=" + media_id + ", created_at=" + created_at + "]"; | |||
| return "WxUploadResult [type=" + type + ", media_id=" + mediaId + ", created_at=" + createdAt + "]"; | |||
| } | |||
| } | |||
| @@ -5,9 +5,9 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| public class WxMediaUploadResult { | |||
| private String type; | |||
| private String media_id; | |||
| private String thumb_media_id; | |||
| private long created_at; | |||
| private String mediaId; | |||
| private String thumbMediaId; | |||
| private long createdAt; | |||
| public String getType() { | |||
| return type; | |||
| @@ -17,38 +17,38 @@ public class WxMediaUploadResult { | |||
| this.type = type; | |||
| } | |||
| public String getMedia_id() { | |||
| return media_id; | |||
| public String getMediaId() { | |||
| return mediaId; | |||
| } | |||
| public void setMedia_id(String media_id) { | |||
| this.media_id = media_id; | |||
| public void setMediaId(String mediaId) { | |||
| this.mediaId = mediaId; | |||
| } | |||
| public long getCreated_at() { | |||
| return created_at; | |||
| public long getCreatedAt() { | |||
| return createdAt; | |||
| } | |||
| public void setCreated_at(long created_at) { | |||
| this.created_at = created_at; | |||
| public void setCreatedAt(long createdAt) { | |||
| this.createdAt = createdAt; | |||
| } | |||
| public static WxMediaUploadResult fromJson(String json) { | |||
| return WxGsonBuilder.create().fromJson(json, WxMediaUploadResult.class); | |||
| } | |||
| public String getThumb_media_id() { | |||
| return thumb_media_id; | |||
| public String getThumbMediaId() { | |||
| return thumbMediaId; | |||
| } | |||
| public void setThumb_media_id(String thumb_media_id) { | |||
| this.thumb_media_id = thumb_media_id; | |||
| public void setThumbMediaId(String thumbMediaId) { | |||
| this.thumbMediaId = thumbMediaId; | |||
| } | |||
| @Override | |||
| public String toString() { | |||
| return "WxUploadResult [type=" + type + ", media_id=" + media_id + ", thumb_media_id=" + thumb_media_id | |||
| + ", created_at=" + created_at + "]"; | |||
| return "WxUploadResult [type=" + type + ", media_id=" + mediaId + ", thumb_media_id=" + thumbMediaId | |||
| + ", created_at=" + createdAt + "]"; | |||
| } | |||
| } | |||
| @@ -10,16 +10,16 @@ import me.chanjar.weixin.util.json.WxGsonBuilder; | |||
| public class WxUser { | |||
| protected boolean subscribe; | |||
| protected String openid; | |||
| protected String openId; | |||
| protected String nickname; | |||
| protected String sex; | |||
| protected String language; | |||
| protected String city; | |||
| protected String province; | |||
| protected String country; | |||
| protected String headimgurl; | |||
| protected long subscribe_time; | |||
| protected String unionid; | |||
| protected String headImgUrl; | |||
| protected long subscribeTime; | |||
| protected String unionId; | |||
| public boolean isSubscribe() { | |||
| return subscribe; | |||
| @@ -27,11 +27,11 @@ public class WxUser { | |||
| public void setSubscribe(boolean subscribe) { | |||
| this.subscribe = subscribe; | |||
| } | |||
| public String getOpenid() { | |||
| return openid; | |||
| public String getOpenId() { | |||
| return openId; | |||
| } | |||
| public void setOpenid(String openid) { | |||
| this.openid = openid; | |||
| public void setOpenId(String openId) { | |||
| this.openId = openId; | |||
| } | |||
| public String getNickname() { | |||
| return nickname; | |||
| @@ -69,23 +69,23 @@ public class WxUser { | |||
| public void setCountry(String country) { | |||
| this.country = country; | |||
| } | |||
| public String getHeadimgurl() { | |||
| return headimgurl; | |||
| public String getHeadImgUrl() { | |||
| return headImgUrl; | |||
| } | |||
| public void setHeadimgurl(String headimgurl) { | |||
| this.headimgurl = headimgurl; | |||
| public void setHeadImgUrl(String headImgUrl) { | |||
| this.headImgUrl = headImgUrl; | |||
| } | |||
| public long getSubscribe_time() { | |||
| return subscribe_time; | |||
| public long getSubscribeTime() { | |||
| return subscribeTime; | |||
| } | |||
| public void setSubscribe_time(long subscribe_time) { | |||
| this.subscribe_time = subscribe_time; | |||
| public void setSubscribeTime(long subscribeTime) { | |||
| this.subscribeTime = subscribeTime; | |||
| } | |||
| public String getUnionid() { | |||
| return unionid; | |||
| public String getUnionId() { | |||
| return unionId; | |||
| } | |||
| public void setUnionid(String unionid) { | |||
| this.unionid = unionid; | |||
| public void setUnionId(String unionId) { | |||
| this.unionId = unionId; | |||
| } | |||
| public static WxUser fromJson(String json) { | |||
| @@ -15,8 +15,8 @@ public class WxUserList { | |||
| protected int total = -1; | |||
| protected int count = -1; | |||
| protected List<String> openids = new ArrayList<String>(); | |||
| protected String next_openid; | |||
| protected List<String> openIds = new ArrayList<String>(); | |||
| protected String nextOpenId; | |||
| public int getTotal() { | |||
| return total; | |||
| } | |||
| @@ -29,17 +29,17 @@ public class WxUserList { | |||
| public void setCount(int count) { | |||
| this.count = count; | |||
| } | |||
| public List<String> getOpenids() { | |||
| return openids; | |||
| public List<String> getOpenIds() { | |||
| return openIds; | |||
| } | |||
| public void setOpenids(List<String> openids) { | |||
| this.openids = openids; | |||
| public void setOpenIds(List<String> openIds) { | |||
| this.openIds = openIds; | |||
| } | |||
| public String getNext_openid() { | |||
| return next_openid; | |||
| public String getNextOpenId() { | |||
| return nextOpenId; | |||
| } | |||
| public void setNext_openid(String next_openid) { | |||
| this.next_openid = next_openid; | |||
| public void setNextOpenId(String nextOpenId) { | |||
| this.nextOpenId = nextOpenId; | |||
| } | |||
| public static WxUserList fromJson(String json) { | |||
| @@ -35,7 +35,7 @@ public class MediaUploadRequestExecutor implements RequestExecutor<WxMediaUpload | |||
| CloseableHttpResponse response = httpclient.execute(httpPost); | |||
| String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | |||
| WxError error = WxError.fromJson(responseContent); | |||
| if (error.getErrcode() != 0) { | |||
| if (error.getErrorCode() != 0) { | |||
| throw new WxErrorException(error); | |||
| } | |||
| return WxMediaUploadResult.fromJson(responseContent); | |||
| @@ -28,7 +28,7 @@ public class SimpleGetRequestExecutor implements RequestExecutor<String, String> | |||
| CloseableHttpResponse response = httpclient.execute(httpGet); | |||
| String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | |||
| WxError error = WxError.fromJson(responseContent); | |||
| if (error.getErrcode() != 0) { | |||
| if (error.getErrorCode() != 0) { | |||
| throw new WxErrorException(error); | |||
| } | |||
| return responseContent; | |||
| @@ -27,7 +27,7 @@ public class SimplePostRequestExecutor implements RequestExecutor<String, String | |||
| CloseableHttpResponse response = httpclient.execute(httpPost); | |||
| String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | |||
| WxError error = WxError.fromJson(responseContent); | |||
| if (error.getErrcode() != 0) { | |||
| if (error.getErrorCode() != 0) { | |||
| throw new WxErrorException(error); | |||
| } | |||
| return responseContent; | |||
| @@ -0,0 +1,36 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.WxAccessToken; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxAccessTokenAdapter implements JsonDeserializer<WxAccessToken> { | |||
| public WxAccessToken deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||
| WxAccessToken accessToken = new WxAccessToken(); | |||
| JsonObject accessTokenJsonObject = json.getAsJsonObject(); | |||
| if (accessTokenJsonObject.get("access_token") != null && !accessTokenJsonObject.get("access_token").isJsonNull()) { | |||
| accessToken.setAccessToken(GsonHelper.getAsString(accessTokenJsonObject.get("access_token"))); | |||
| } | |||
| if (accessTokenJsonObject.get("expires_in") != null && !accessTokenJsonObject.get("expires_in").isJsonNull()) { | |||
| accessToken.setExpiresIn(GsonHelper.getAsPrimitiveInt(accessTokenJsonObject.get("expires_in"))); | |||
| } | |||
| return accessToken; | |||
| } | |||
| } | |||
| @@ -28,54 +28,54 @@ public class WxCustomMessageGsonAdapter implements JsonSerializer<WxCustomMessag | |||
| public JsonElement serialize(WxCustomMessage message, Type typeOfSrc, JsonSerializationContext context) { | |||
| JsonObject messageJson = new JsonObject(); | |||
| messageJson.addProperty("touser", message.getTouser()); | |||
| messageJson.addProperty("msgtype", message.getMsgtype()); | |||
| messageJson.addProperty("touser", message.getToUser()); | |||
| messageJson.addProperty("msgtype", message.getMsgType()); | |||
| if (WxConsts.CUSTOM_MSG_TEXT.equals(message.getMsgtype())) { | |||
| if (WxConsts.CUSTOM_MSG_TEXT.equals(message.getMsgType())) { | |||
| JsonObject text = new JsonObject(); | |||
| text.addProperty("content", message.getContent()); | |||
| messageJson.add("text", text); | |||
| } | |||
| if (WxConsts.CUSTOM_MSG_IMAGE.equals(message.getMsgtype())) { | |||
| if (WxConsts.CUSTOM_MSG_IMAGE.equals(message.getMsgType())) { | |||
| JsonObject image = new JsonObject(); | |||
| image.addProperty("media_id", message.getMedia_id()); | |||
| image.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add("image", image); | |||
| } | |||
| if (WxConsts.CUSTOM_MSG_VOICE.equals(message.getMsgtype())) { | |||
| if (WxConsts.CUSTOM_MSG_VOICE.equals(message.getMsgType())) { | |||
| JsonObject voice = new JsonObject(); | |||
| voice.addProperty("media_id", message.getMedia_id()); | |||
| voice.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add("voice", voice); | |||
| } | |||
| if (WxConsts.CUSTOM_MSG_VIDEO.equals(message.getMsgtype())) { | |||
| if (WxConsts.CUSTOM_MSG_VIDEO.equals(message.getMsgType())) { | |||
| JsonObject video = new JsonObject(); | |||
| video.addProperty("media_id", message.getMedia_id()); | |||
| video.addProperty("thumb_media_id", message.getThumb_media_id()); | |||
| video.addProperty("media_id", message.getMediaId()); | |||
| video.addProperty("thumb_media_id", message.getThumbMediaId()); | |||
| video.addProperty("title", message.getTitle()); | |||
| video.addProperty("description", message.getDescription()); | |||
| messageJson.add("video", video); | |||
| } | |||
| if (WxConsts.CUSTOM_MSG_MUSIC.equals(message.getMsgtype())) { | |||
| if (WxConsts.CUSTOM_MSG_MUSIC.equals(message.getMsgType())) { | |||
| JsonObject music = new JsonObject(); | |||
| music.addProperty("title", message.getTitle()); | |||
| music.addProperty("description", message.getDescription()); | |||
| music.addProperty("thumb_media_id", message.getThumb_media_id()); | |||
| music.addProperty("musicurl", message.getMusicurl()); | |||
| music.addProperty("hqmusicurl", message.getHqmusicurl()); | |||
| music.addProperty("thumb_media_id", message.getThumbMediaId()); | |||
| music.addProperty("musicurl", message.getMusicUrl()); | |||
| music.addProperty("hqmusicurl", message.getHqMusicUrl()); | |||
| messageJson.add("music", music); | |||
| } | |||
| if (WxConsts.CUSTOM_MSG_NEWS.equals(message.getMsgtype())) { | |||
| if (WxConsts.CUSTOM_MSG_NEWS.equals(message.getMsgType())) { | |||
| JsonArray articleJsonArray = new JsonArray(); | |||
| for (WxCustomMessage.WxArticle article : message.getArticles()) { | |||
| JsonObject articleJson = new JsonObject(); | |||
| articleJson.addProperty("title", article.getTitle()); | |||
| articleJson.addProperty("description", article.getDescription()); | |||
| articleJson.addProperty("url", article.getUrl()); | |||
| articleJson.addProperty("picurl", article.getPicurl()); | |||
| articleJson.addProperty("picurl", article.getPicUrl()); | |||
| articleJsonArray.add(articleJson); | |||
| } | |||
| messageJson.add("articles", articleJsonArray); | |||
| @@ -0,0 +1,37 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.WxAccessToken; | |||
| import me.chanjar.weixin.bean.result.WxError; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxErrorAdapter implements JsonDeserializer<WxError> { | |||
| public WxError deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||
| WxError wxError = new WxError(); | |||
| JsonObject wxErrorJsonObject = json.getAsJsonObject(); | |||
| if (wxErrorJsonObject.get("errcode") != null && !wxErrorJsonObject.get("errcode").isJsonNull()) { | |||
| wxError.setErrorCode(GsonHelper.getAsPrimitiveInt(wxErrorJsonObject.get("errcode"))); | |||
| } | |||
| if (wxErrorJsonObject.get("errmsg") != null && !wxErrorJsonObject.get("errmsg").isJsonNull()) { | |||
| wxError.setErrorMsg(GsonHelper.getAsString(wxErrorJsonObject.get("errmsg"))); | |||
| } | |||
| return wxError; | |||
| } | |||
| } | |||
| @@ -1,13 +1,7 @@ | |||
| package me.chanjar.weixin.util.json; | |||
| import me.chanjar.weixin.bean.WxCustomMessage; | |||
| import me.chanjar.weixin.bean.WxGroup; | |||
| import me.chanjar.weixin.bean.WxMassGroupMessage; | |||
| import me.chanjar.weixin.bean.WxMassNews; | |||
| import me.chanjar.weixin.bean.WxMassOpenIdsMessage; | |||
| import me.chanjar.weixin.bean.WxMenu; | |||
| import me.chanjar.weixin.bean.result.WxUser; | |||
| import me.chanjar.weixin.bean.result.WxUserList; | |||
| import me.chanjar.weixin.bean.*; | |||
| import me.chanjar.weixin.bean.result.*; | |||
| import com.google.gson.Gson; | |||
| import com.google.gson.GsonBuilder; | |||
| @@ -26,6 +20,13 @@ public class WxGsonBuilder { | |||
| INSTANCE.registerTypeAdapter(WxGroup.class, new WxGroupGsonAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxUser.class, new WxUserGsonAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxUserList.class, new WxUserListGsonAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxAccessToken.class, new WxAccessTokenAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxError.class, new WxErrorAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxMassVideo.class, new WxMassVideoAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxMediaUploadResult.class, new WxMediaUploadResultAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxMassSendResult.class, new WxMassSendResultAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxMassUploadResult.class, new WxMassUploadResultAdapter()); | |||
| INSTANCE.registerTypeAdapter(WxQrCodeTicket.class, new WxQrCodeTicketAdapter()); | |||
| } | |||
| public static Gson create() { | |||
| @@ -29,12 +29,12 @@ public class WxMassMessageGsonAdapter implements JsonSerializer<WxMassGroupMessa | |||
| JsonObject messageJson = new JsonObject(); | |||
| JsonObject filter = new JsonObject(); | |||
| filter.addProperty("group_id", message.getGroup_id()); | |||
| filter.addProperty("group_id", message.getGroupId()); | |||
| messageJson.add("filter", filter); | |||
| if (WxConsts.MASS_MSG_NEWS.equals(message.getMsgtype())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_NEWS, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_TEXT.equals(message.getMsgtype())) { | |||
| @@ -44,17 +44,17 @@ public class WxMassMessageGsonAdapter implements JsonSerializer<WxMassGroupMessa | |||
| } | |||
| if (WxConsts.MASS_MSG_VOICE.equals(message.getMsgtype())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_VOICE, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_IMAGE.equals(message.getMsgtype())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_IMAGE, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_VIDEO.equals(message.getMsgtype())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_VIDEO, sub); | |||
| } | |||
| messageJson.addProperty("msgtype", message.getMsgtype()); | |||
| @@ -31,20 +31,20 @@ public class WxMassNewsGsonAdapter implements JsonSerializer<WxMassNews> { | |||
| JsonArray articleJsonArray = new JsonArray(); | |||
| for (WxMassNews.WxMassNewsArticle article : message.getArticles()) { | |||
| JsonObject articleJson = new JsonObject(); | |||
| articleJson.addProperty("thumb_media_id", article.getThumb_media_id()); | |||
| articleJson.addProperty("thumb_media_id", article.getThumbMediaId()); | |||
| articleJson.addProperty("title", article.getTitle()); | |||
| articleJson.addProperty("content", article.getContent()); | |||
| if (null != article.getAuthor()) { | |||
| articleJson.addProperty("author", article.getAuthor()); | |||
| } | |||
| if (null != article.getContent_source_url()) { | |||
| articleJson.addProperty("content_source_url", article.getContent_source_url()); | |||
| if (null != article.getContentSourceUrl()) { | |||
| articleJson.addProperty("content_source_url", article.getContentSourceUrl()); | |||
| } | |||
| if (null != article.getDigest()) { | |||
| articleJson.addProperty("digest", article.getDigest()); | |||
| } | |||
| articleJson.addProperty("show_cover_pic", article.isShow_cover_pic() ? "1" : "0"); | |||
| articleJson.addProperty("show_cover_pic", article.isShowCoverPic() ? "1" : "0"); | |||
| articleJsonArray.add(articleJson); | |||
| } | |||
| newsJson.add("articles", articleJsonArray); | |||
| @@ -30,38 +30,38 @@ public class WxMassOpenIdsMessageGsonAdapter implements JsonSerializer<WxMassOpe | |||
| public JsonElement serialize(WxMassOpenIdsMessage message, Type typeOfSrc, JsonSerializationContext context) { | |||
| JsonObject messageJson = new JsonObject(); | |||
| JsonArray touser = new JsonArray(); | |||
| for (String openId : message.getTouser()) { | |||
| touser.add(new JsonPrimitive(openId)); | |||
| JsonArray toUsers = new JsonArray(); | |||
| for (String openId : message.getToUsers()) { | |||
| toUsers.add(new JsonPrimitive(openId)); | |||
| } | |||
| messageJson.add("touser", touser); | |||
| messageJson.add("touser", toUsers); | |||
| if (WxConsts.MASS_MSG_NEWS.equals(message.getMsgtype())) { | |||
| if (WxConsts.MASS_MSG_NEWS.equals(message.getMsgType())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_NEWS, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_TEXT.equals(message.getMsgtype())) { | |||
| if (WxConsts.MASS_MSG_TEXT.equals(message.getMsgType())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("content", message.getContent()); | |||
| messageJson.add(WxConsts.MASS_MSG_TEXT, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_VOICE.equals(message.getMsgtype())) { | |||
| if (WxConsts.MASS_MSG_VOICE.equals(message.getMsgType())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_VOICE, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_IMAGE.equals(message.getMsgtype())) { | |||
| if (WxConsts.MASS_MSG_IMAGE.equals(message.getMsgType())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_IMAGE, sub); | |||
| } | |||
| if (WxConsts.MASS_MSG_VIDEO.equals(message.getMsgtype())) { | |||
| if (WxConsts.MASS_MSG_VIDEO.equals(message.getMsgType())) { | |||
| JsonObject sub = new JsonObject(); | |||
| sub.addProperty("media_id", message.getMedia_id()); | |||
| sub.addProperty("media_id", message.getMediaId()); | |||
| messageJson.add(WxConsts.MASS_MSG_VIDEO, sub); | |||
| } | |||
| messageJson.addProperty("msgtype", message.getMsgtype()); | |||
| messageJson.addProperty("msgtype", message.getMsgType()); | |||
| return messageJson; | |||
| } | |||
| @@ -0,0 +1,39 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.result.WxMassSendResult; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxMassSendResultAdapter implements JsonDeserializer<WxMassSendResult> { | |||
| public WxMassSendResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||
| WxMassSendResult sendResult = new WxMassSendResult(); | |||
| JsonObject sendResultJsonObject = json.getAsJsonObject(); | |||
| if (sendResultJsonObject.get("errcode") != null && !sendResultJsonObject.get("errcode").isJsonNull()) { | |||
| sendResult.setErrorCode(GsonHelper.getAsString(sendResultJsonObject.get("errcode"))); | |||
| } | |||
| if (sendResultJsonObject.get("errmsg") != null && !sendResultJsonObject.get("errmsg").isJsonNull()) { | |||
| sendResult.setErrorMsg(GsonHelper.getAsString(sendResultJsonObject.get("errmsg"))); | |||
| } | |||
| if (sendResultJsonObject.get("msg_id") != null && !sendResultJsonObject.get("msg_id").isJsonNull()) { | |||
| sendResult.setMsgId(GsonHelper.getAsString(sendResultJsonObject.get("msg_id"))); | |||
| } | |||
| return sendResult; | |||
| } | |||
| } | |||
| @@ -0,0 +1,39 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.result.WxMassUploadResult; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxMassUploadResultAdapter implements JsonDeserializer<WxMassUploadResult> { | |||
| public WxMassUploadResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||
| WxMassUploadResult uploadResult = new WxMassUploadResult(); | |||
| JsonObject uploadResultJsonObject = json.getAsJsonObject(); | |||
| if (uploadResultJsonObject.get("type") != null && !uploadResultJsonObject.get("type").isJsonNull()) { | |||
| uploadResult.setType(GsonHelper.getAsString(uploadResultJsonObject.get("type"))); | |||
| } | |||
| if (uploadResultJsonObject.get("media_id") != null && !uploadResultJsonObject.get("media_id").isJsonNull()) { | |||
| uploadResult.setMediaId(GsonHelper.getAsString(uploadResultJsonObject.get("media_id"))); | |||
| } | |||
| if (uploadResultJsonObject.get("created_at") != null && !uploadResultJsonObject.get("created_at").isJsonNull()) { | |||
| uploadResult.setCreatedAt(GsonHelper.getAsPrimitiveLong(uploadResultJsonObject.get("created_at"))); | |||
| } | |||
| return uploadResult; | |||
| } | |||
| } | |||
| @@ -0,0 +1,31 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.WxMassVideo; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxMassVideoAdapter implements JsonSerializer<WxMassVideo> { | |||
| public JsonElement serialize(WxMassVideo message, Type typeOfSrc, JsonSerializationContext context) { | |||
| JsonObject messageJson = new JsonObject(); | |||
| messageJson.addProperty("media_id", message.getMediaId()); | |||
| messageJson.addProperty("description", message.getDescription()); | |||
| messageJson.addProperty("title", message.getTitle()); | |||
| return messageJson; | |||
| } | |||
| } | |||
| @@ -0,0 +1,42 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.result.WxMediaUploadResult; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxMediaUploadResultAdapter implements JsonDeserializer<WxMediaUploadResult> { | |||
| public WxMediaUploadResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||
| WxMediaUploadResult uploadResult = new WxMediaUploadResult(); | |||
| JsonObject uploadResultJsonObject = json.getAsJsonObject(); | |||
| if (uploadResultJsonObject.get("type") != null && !uploadResultJsonObject.get("type").isJsonNull()) { | |||
| uploadResult.setType(GsonHelper.getAsString(uploadResultJsonObject.get("type"))); | |||
| } | |||
| if (uploadResultJsonObject.get("media_id") != null && !uploadResultJsonObject.get("media_id").isJsonNull()) { | |||
| uploadResult.setMediaId(GsonHelper.getAsString(uploadResultJsonObject.get("media_id"))); | |||
| } | |||
| if (uploadResultJsonObject.get("thumb_media_id") != null && !uploadResultJsonObject.get("thumb_media_id").isJsonNull()) { | |||
| uploadResult.setThumbMediaId(GsonHelper.getAsString(uploadResultJsonObject.get("thumb_media_id"))); | |||
| } | |||
| if (uploadResultJsonObject.get("created_at") != null && !uploadResultJsonObject.get("created_at").isJsonNull()) { | |||
| uploadResult.setCreatedAt(GsonHelper.getAsPrimitiveLong(uploadResultJsonObject.get("created_at"))); | |||
| } | |||
| return uploadResult; | |||
| } | |||
| } | |||
| @@ -32,7 +32,7 @@ public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializ | |||
| JsonObject json = new JsonObject(); | |||
| JsonArray buttonArray = new JsonArray(); | |||
| for (WxMenu.WxMenuButton button : menu.getButton()) { | |||
| for (WxMenu.WxMenuButton button : menu.getButtons()) { | |||
| JsonObject buttonJson = convertToJson(button); | |||
| buttonArray.add(buttonJson); | |||
| } | |||
| @@ -47,9 +47,9 @@ public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializ | |||
| buttonJson.addProperty("name", button.getName()); | |||
| buttonJson.addProperty("key", button.getKey()); | |||
| buttonJson.addProperty("url", button.getUrl()); | |||
| if (button.getSub_button() != null && button.getSub_button().size() > 0) { | |||
| if (button.getSubButtons() != null && button.getSubButtons().size() > 0) { | |||
| JsonArray buttonArray = new JsonArray(); | |||
| for (WxMenu.WxMenuButton sub_button : button.getSub_button()) { | |||
| for (WxMenu.WxMenuButton sub_button : button.getSubButtons()) { | |||
| buttonArray.add(convertToJson(sub_button)); | |||
| } | |||
| buttonJson.add("sub_button", buttonArray); | |||
| @@ -69,14 +69,14 @@ public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializ | |||
| for (int i = 0; i < buttonsJson.size(); i++) { | |||
| JsonObject buttonJson = buttonsJson.get(i).getAsJsonObject(); | |||
| WxMenu.WxMenuButton button = convertFromJson(buttonJson); | |||
| menu.getButton().add(button); | |||
| menu.getButtons().add(button); | |||
| if (buttonJson.get("sub_button") == null || buttonJson.get("sub_button").isJsonNull()) { | |||
| continue; | |||
| } | |||
| JsonArray sub_buttonsJson = buttonJson.get("sub_button").getAsJsonArray(); | |||
| for (int j = 0; j < sub_buttonsJson.size(); j++) { | |||
| JsonObject sub_buttonJson = sub_buttonsJson.get(j).getAsJsonObject(); | |||
| button.getSub_button().add(convertFromJson(sub_buttonJson)); | |||
| button.getSubButtons().add(convertFromJson(sub_buttonJson)); | |||
| } | |||
| } | |||
| return menu; | |||
| @@ -0,0 +1,40 @@ | |||
| /* | |||
| * KINGSTAR MEDIA SOLUTIONS Co.,LTD. Copyright c 2005-2013. All rights reserved. | |||
| * | |||
| * This source code is the property of KINGSTAR MEDIA SOLUTIONS LTD. It is intended | |||
| * only for the use of KINGSTAR MEDIA application development. Reengineering, reproduction | |||
| * arose from modification of the original source, or other redistribution of this source | |||
| * is not permitted without written permission of the KINGSTAR MEDIA SOLUTIONS LTD. | |||
| */ | |||
| package me.chanjar.weixin.util.json; | |||
| import com.google.gson.*; | |||
| import me.chanjar.weixin.bean.result.WxMassUploadResult; | |||
| import me.chanjar.weixin.bean.result.WxQrCodeTicket; | |||
| import java.lang.reflect.Type; | |||
| /** | |||
| * | |||
| * @author Daniel Qian | |||
| * | |||
| */ | |||
| public class WxQrCodeTicketAdapter implements JsonDeserializer<WxQrCodeTicket> { | |||
| public WxQrCodeTicket deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||
| WxQrCodeTicket ticket = new WxQrCodeTicket(); | |||
| JsonObject ticketJsonObject = json.getAsJsonObject(); | |||
| if (ticketJsonObject.get("ticket") != null && !ticketJsonObject.get("ticket").isJsonNull()) { | |||
| ticket.setTicket(GsonHelper.getAsString(ticketJsonObject.get("ticket"))); | |||
| } | |||
| if (ticketJsonObject.get("expire_seconds") != null && !ticketJsonObject.get("expire_seconds").isJsonNull()) { | |||
| ticket.setExpire_seconds(GsonHelper.getAsPrimitiveInt(ticketJsonObject.get("expire_seconds"))); | |||
| } | |||
| if (ticketJsonObject.get("url") != null && !ticketJsonObject.get("url").isJsonNull()) { | |||
| ticket.setUrl(GsonHelper.getAsString(ticketJsonObject.get("url"))); | |||
| } | |||
| return ticket; | |||
| } | |||
| } | |||
| @@ -31,13 +31,13 @@ public class WxUserGsonAdapter implements JsonDeserializer<WxUser> { | |||
| wxUser.setSubscribe(new Integer(0).equals(GsonHelper.getInteger(o, "subscribe")) ? false : true); | |||
| wxUser.setCity(GsonHelper.getString(o, "city")); | |||
| wxUser.setCountry(GsonHelper.getString(o, "country")); | |||
| wxUser.setHeadimgurl(GsonHelper.getString(o, "headimgurl")); | |||
| wxUser.setHeadImgUrl(GsonHelper.getString(o, "headimgurl")); | |||
| wxUser.setLanguage(GsonHelper.getString(o, "language")); | |||
| wxUser.setNickname(GsonHelper.getString(o, "nickname")); | |||
| wxUser.setOpenid(GsonHelper.getString(o, "openid")); | |||
| wxUser.setOpenId(GsonHelper.getString(o, "openid")); | |||
| wxUser.setProvince(GsonHelper.getString(o, "province")); | |||
| wxUser.setSubscribe_time(GsonHelper.getLong(o, "subscribe_time")); | |||
| wxUser.setUnionid(GsonHelper.getString(o, "unionid")); | |||
| wxUser.setSubscribeTime(GsonHelper.getLong(o, "subscribe_time")); | |||
| wxUser.setUnionId(GsonHelper.getString(o, "unionid")); | |||
| Integer sex = GsonHelper.getInteger(o, "sex"); | |||
| if(new Integer(1).equals(sex)) { | |||
| wxUser.setSex("男"); | |||
| @@ -31,10 +31,10 @@ public class WxUserListGsonAdapter implements JsonDeserializer<WxUserList> { | |||
| WxUserList wxUserList = new WxUserList(); | |||
| wxUserList.setTotal(GsonHelper.getInteger(o, "total")); | |||
| wxUserList.setCount(GsonHelper.getInteger(o, "count")); | |||
| wxUserList.setNext_openid(GsonHelper.getString(o, "next_openid")); | |||
| wxUserList.setNextOpenId(GsonHelper.getString(o, "next_openid")); | |||
| JsonArray data = o.get("data").getAsJsonObject().get("openid").getAsJsonArray(); | |||
| for (int i = 0; i < data.size(); i++) { | |||
| wxUserList.getOpenids().add(GsonHelper.getAsString(data.get(i))); | |||
| wxUserList.getOpenIds().add(GsonHelper.getAsString(data.get(i))); | |||
| } | |||
| return wxUserList; | |||
| } | |||
| @@ -23,8 +23,8 @@ public class WxCustomMessageAPITest { | |||
| public void testSendCustomMessage() throws WxErrorException { | |||
| ApiTestModule.WxXmlConfigStorage configStorage = (ApiTestModule.WxXmlConfigStorage) wxService.wxConfigStorage; | |||
| WxCustomMessage message = new WxCustomMessage(); | |||
| message.setMsgtype(WxConsts.CUSTOM_MSG_TEXT); | |||
| message.setTouser(configStorage.getOpenId()); | |||
| message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | |||
| message.setToUser(configStorage.getOpenId()); | |||
| message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||
| wxService.customMessageSend(message); | |||
| @@ -38,13 +38,13 @@ public class WxMassMessageAPITest { | |||
| // 发送群发消息 | |||
| WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigStorage; | |||
| WxMassOpenIdsMessage massMessage = new WxMassOpenIdsMessage(); | |||
| massMessage.setMsgtype(WxConsts.MASS_MSG_TEXT); | |||
| massMessage.setMsgType(WxConsts.MASS_MSG_TEXT); | |||
| massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||
| massMessage.getTouser().add(configProvider.getOpenId()); | |||
| massMessage.getToUsers().add(configProvider.getOpenId()); | |||
| WxMassSendResult massResult = wxService.massOpenIdsMessageSend(massMessage); | |||
| Assert.assertNotNull(massResult); | |||
| Assert.assertNotNull(massResult.getMsg_id()); | |||
| Assert.assertNotNull(massResult.getMsgId()); | |||
| } | |||
| @Test(dataProvider="massMessages") | |||
| @@ -52,13 +52,13 @@ public class WxMassMessageAPITest { | |||
| // 发送群发消息 | |||
| WxXmlConfigStorage configProvider = (WxXmlConfigStorage) wxService.wxConfigStorage; | |||
| WxMassOpenIdsMessage massMessage = new WxMassOpenIdsMessage(); | |||
| massMessage.setMsgtype(massMsgType); | |||
| massMessage.setMedia_id(mediaId); | |||
| massMessage.getTouser().add(configProvider.getOpenId()); | |||
| massMessage.setMsgType(massMsgType); | |||
| massMessage.setMediaId(mediaId); | |||
| massMessage.getToUsers().add(configProvider.getOpenId()); | |||
| WxMassSendResult massResult = wxService.massOpenIdsMessageSend(massMessage); | |||
| Assert.assertNotNull(massResult); | |||
| Assert.assertNotNull(massResult.getMsg_id()); | |||
| Assert.assertNotNull(massResult.getMsgId()); | |||
| } | |||
| @Test | |||
| @@ -66,23 +66,23 @@ public class WxMassMessageAPITest { | |||
| WxMassGroupMessage massMessage = new WxMassGroupMessage(); | |||
| massMessage.setMsgtype(WxConsts.MASS_MSG_TEXT); | |||
| massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||
| massMessage.setGroup_id(wxService.groupGet().get(0).getId()); | |||
| massMessage.setGroupId(wxService.groupGet().get(0).getId()); | |||
| WxMassSendResult massResult = wxService.massGroupMessageSend(massMessage); | |||
| Assert.assertNotNull(massResult); | |||
| Assert.assertNotNull(massResult.getMsg_id()); | |||
| Assert.assertNotNull(massResult.getMsgId()); | |||
| } | |||
| @Test(dataProvider="massMessages") | |||
| public void testMediaMassGroupMessageSend(String massMsgType, String mediaId) throws WxErrorException, IOException { | |||
| WxMassGroupMessage massMessage = new WxMassGroupMessage(); | |||
| massMessage.setMsgtype(massMsgType); | |||
| massMessage.setMedia_id(mediaId); | |||
| massMessage.setGroup_id(wxService.groupGet().get(0).getId()); | |||
| massMessage.setMediaId(mediaId); | |||
| massMessage.setGroupId(wxService.groupGet().get(0).getId()); | |||
| WxMassSendResult massResult = wxService.massGroupMessageSend(massMessage); | |||
| Assert.assertNotNull(massResult); | |||
| Assert.assertNotNull(massResult.getMsg_id()); | |||
| Assert.assertNotNull(massResult.getMsgId()); | |||
| } | |||
| @DataProvider | |||
| @@ -96,17 +96,17 @@ public class WxMassMessageAPITest { | |||
| InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.mp4"); | |||
| WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_VIDEO, WxConsts.FILE_MP4, inputStream); | |||
| Assert.assertNotNull(uploadMediaRes); | |||
| Assert.assertNotNull(uploadMediaRes.getMedia_id()); | |||
| Assert.assertNotNull(uploadMediaRes.getMediaId()); | |||
| // 把视频变成可被群发的媒体 | |||
| WxMassVideo video = new WxMassVideo(); | |||
| video.setTitle("测试标题"); | |||
| video.setDescription("测试描述"); | |||
| video.setMedia_id(uploadMediaRes.getMedia_id()); | |||
| video.setMediaId(uploadMediaRes.getMediaId()); | |||
| WxMassUploadResult uploadResult = wxService.massVideoUpload(video); | |||
| Assert.assertNotNull(uploadResult); | |||
| Assert.assertNotNull(uploadResult.getMedia_id()); | |||
| messages[0] = new Object[] { WxConsts.MASS_MSG_VIDEO, uploadResult.getMedia_id() }; | |||
| Assert.assertNotNull(uploadResult.getMediaId()); | |||
| messages[0] = new Object[] { WxConsts.MASS_MSG_VIDEO, uploadResult.getMediaId() }; | |||
| } | |||
| /** | |||
| * 图片素材 | |||
| @@ -115,8 +115,8 @@ public class WxMassMessageAPITest { | |||
| InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); | |||
| WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream); | |||
| Assert.assertNotNull(uploadMediaRes); | |||
| Assert.assertNotNull(uploadMediaRes.getMedia_id()); | |||
| messages[1] = new Object[] { WxConsts.MASS_MSG_IMAGE, uploadMediaRes.getMedia_id() }; | |||
| Assert.assertNotNull(uploadMediaRes.getMediaId()); | |||
| messages[1] = new Object[] { WxConsts.MASS_MSG_IMAGE, uploadMediaRes.getMediaId() }; | |||
| } | |||
| /** | |||
| * 语音素材 | |||
| @@ -125,8 +125,8 @@ public class WxMassMessageAPITest { | |||
| InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.mp3"); | |||
| WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_VOICE, WxConsts.FILE_MP3, inputStream); | |||
| Assert.assertNotNull(uploadMediaRes); | |||
| Assert.assertNotNull(uploadMediaRes.getMedia_id()); | |||
| messages[2] = new Object[] { WxConsts.MASS_MSG_VOICE, uploadMediaRes.getMedia_id() }; | |||
| Assert.assertNotNull(uploadMediaRes.getMediaId()); | |||
| messages[2] = new Object[] { WxConsts.MASS_MSG_VOICE, uploadMediaRes.getMediaId() }; | |||
| } | |||
| /** | |||
| * 图文素材 | |||
| @@ -136,30 +136,30 @@ public class WxMassMessageAPITest { | |||
| InputStream inputStream = ClassLoader.getSystemResourceAsStream("mm.jpeg"); | |||
| WxMediaUploadResult uploadMediaRes = wxService.mediaUpload(WxConsts.MEDIA_IMAGE, WxConsts.FILE_JPG, inputStream); | |||
| Assert.assertNotNull(uploadMediaRes); | |||
| Assert.assertNotNull(uploadMediaRes.getMedia_id()); | |||
| Assert.assertNotNull(uploadMediaRes.getMediaId()); | |||
| // 上传图文消息 | |||
| WxMassNews news = new WxMassNews(); | |||
| WxMassNewsArticle article1 = new WxMassNewsArticle(); | |||
| article1.setTitle("标题1"); | |||
| article1.setContent("内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1内容1"); | |||
| article1.setThumb_media_id(uploadMediaRes.getMedia_id()); | |||
| article1.setThumbMediaId(uploadMediaRes.getMediaId()); | |||
| news.addArticle(article1); | |||
| WxMassNewsArticle article2 = new WxMassNewsArticle(); | |||
| article2.setTitle("标题2"); | |||
| article2.setContent("内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2内容2"); | |||
| article2.setThumb_media_id(uploadMediaRes.getMedia_id()); | |||
| article2.setShow_cover_pic(true); | |||
| article2.setThumbMediaId(uploadMediaRes.getMediaId()); | |||
| article2.setShowCoverPic(true); | |||
| article2.setAuthor("作者2"); | |||
| article2.setContent_source_url("www.baidu.com"); | |||
| article2.setContentSourceUrl("www.baidu.com"); | |||
| article2.setDigest("摘要2"); | |||
| news.addArticle(article2); | |||
| WxMassUploadResult massUploadResult = wxService.massNewsUpload(news); | |||
| Assert.assertNotNull(massUploadResult); | |||
| Assert.assertNotNull(uploadMediaRes.getMedia_id()); | |||
| messages[3] = new Object[] { WxConsts.MASS_MSG_NEWS, massUploadResult.getMedia_id() }; | |||
| Assert.assertNotNull(uploadMediaRes.getMediaId()); | |||
| messages[3] = new Object[] { WxConsts.MASS_MSG_NEWS, massUploadResult.getMediaId() }; | |||
| } | |||
| return messages; | |||
| } | |||
| @@ -34,14 +34,14 @@ public class WxMediaAPITest { | |||
| InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName); | |||
| WxMediaUploadResult res = wxService.mediaUpload(mediaType, fileType, inputStream); | |||
| Assert.assertNotNull(res.getType()); | |||
| Assert.assertNotNull(res.getCreated_at()); | |||
| Assert.assertTrue(res.getMedia_id() != null || res.getThumb_media_id() != null); | |||
| Assert.assertNotNull(res.getCreatedAt()); | |||
| Assert.assertTrue(res.getMediaId() != null || res.getThumbMediaId() != null); | |||
| if (res.getMedia_id() != null) { | |||
| media_ids.add(res.getMedia_id()); | |||
| if (res.getMediaId() != null) { | |||
| media_ids.add(res.getMediaId()); | |||
| } | |||
| if (res.getThumb_media_id() != null) { | |||
| media_ids.add(res.getThumb_media_id()); | |||
| if (res.getThumbMediaId() != null) { | |||
| media_ids.add(res.getThumbMediaId()); | |||
| } | |||
| } | |||
| @@ -56,9 +56,9 @@ public class WxMenuAPITest { | |||
| WxMenuButton button3 = new WxMenuButton(); | |||
| button3.setName("菜单"); | |||
| menu.getButton().add(button1); | |||
| menu.getButton().add(button2); | |||
| menu.getButton().add(button3); | |||
| menu.getButtons().add(button1); | |||
| menu.getButtons().add(button2); | |||
| menu.getButtons().add(button3); | |||
| WxMenuButton button31 = new WxMenuButton(); | |||
| button31.setType(WxConsts.BUTTON_VIEW); | |||
| @@ -75,9 +75,9 @@ public class WxMenuAPITest { | |||
| button33.setName("赞一下我们"); | |||
| button33.setKey("V1001_GOOD"); | |||
| button3.getSub_button().add(button31); | |||
| button3.getSub_button().add(button32); | |||
| button3.getSub_button().add(button33); | |||
| button3.getSubButtons().add(button31); | |||
| button3.getSubButtons().add(button32); | |||
| button3.getSubButtons().add(button33); | |||
| return new Object[][] { | |||
| new Object[] { | |||
| @@ -71,7 +71,6 @@ public class WxMessageRouterTest { | |||
| router.rule().handler(new WxMessageHandler() { | |||
| @Override | |||
| public WxXmlOutMessage handle(WxXmlMessage wxMessage, Map<String, Object> context) { | |||
| System.out.println(wxMessage.toString()); | |||
| return null; | |||
| } | |||
| }).end(); | |||
| @@ -39,7 +39,7 @@ public class WxUserAPITest { | |||
| Assert.assertNotNull(wxUserList); | |||
| Assert.assertFalse(wxUserList.getCount() == -1); | |||
| Assert.assertFalse(wxUserList.getTotal() == -1); | |||
| Assert.assertFalse(wxUserList.getOpenids().size() == -1); | |||
| Assert.assertFalse(wxUserList.getOpenIds().size() == -1); | |||
| } | |||
| public void testGroupQueryUserGroup() throws WxErrorException { | |||
| @@ -1,6 +1,5 @@ | |||
| package me.chanjar.weixin.bean; | |||
| import me.chanjar.weixin.bean.WxAccessToken; | |||
| import org.testng.Assert; | |||
| import org.testng.annotations.Test; | |||
| @@ -11,8 +10,8 @@ public class WxAccessTokenTest { | |||
| String json = "{\"access_token\":\"ACCESS_TOKEN\",\"expires_in\":7200}"; | |||
| WxAccessToken wxError = WxAccessToken.fromJson(json); | |||
| Assert.assertEquals(wxError.getAccess_token(), "ACCESS_TOKEN"); | |||
| Assert.assertTrue(wxError.getExpires_in() == 7200); | |||
| Assert.assertEquals(wxError.getAccessToken(), "ACCESS_TOKEN"); | |||
| Assert.assertTrue(wxError.getExpiresIn() == 7200); | |||
| } | |||
| @@ -1,6 +1,5 @@ | |||
| package me.chanjar.weixin.bean; | |||
| import me.chanjar.weixin.bean.WxCustomMessage; | |||
| import org.testng.Assert; | |||
| import org.testng.annotations.Test; | |||
| @@ -12,8 +11,8 @@ public class WxCustomMessageTest { | |||
| public void testTextReply() { | |||
| WxCustomMessage reply = new WxCustomMessage(); | |||
| reply.setTouser("OPENID"); | |||
| reply.setMsgtype(WxConsts.CUSTOM_MSG_TEXT); | |||
| reply.setToUser("OPENID"); | |||
| reply.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | |||
| reply.setContent("sfsfdsdf"); | |||
| Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}"); | |||
| } | |||
| @@ -25,9 +24,9 @@ public class WxCustomMessageTest { | |||
| public void testImageReply() { | |||
| WxCustomMessage reply = new WxCustomMessage(); | |||
| reply.setTouser("OPENID"); | |||
| reply.setMsgtype(WxConsts.CUSTOM_MSG_IMAGE); | |||
| reply.setMedia_id("MEDIA_ID"); | |||
| reply.setToUser("OPENID"); | |||
| reply.setMsgType(WxConsts.CUSTOM_MSG_IMAGE); | |||
| reply.setMediaId("MEDIA_ID"); | |||
| Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}"); | |||
| } | |||
| @@ -38,9 +37,9 @@ public class WxCustomMessageTest { | |||
| public void testVoiceReply() { | |||
| WxCustomMessage reply = new WxCustomMessage(); | |||
| reply.setTouser("OPENID"); | |||
| reply.setMsgtype(WxConsts.CUSTOM_MSG_VOICE); | |||
| reply.setMedia_id("MEDIA_ID"); | |||
| reply.setToUser("OPENID"); | |||
| reply.setMsgType(WxConsts.CUSTOM_MSG_VOICE); | |||
| reply.setMediaId("MEDIA_ID"); | |||
| Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}"); | |||
| } | |||
| @@ -51,10 +50,10 @@ public class WxCustomMessageTest { | |||
| public void testVideoReply() { | |||
| WxCustomMessage reply = new WxCustomMessage(); | |||
| reply.setTouser("OPENID"); | |||
| reply.setMsgtype(WxConsts.CUSTOM_MSG_VIDEO); | |||
| reply.setMedia_id("MEDIA_ID"); | |||
| reply.setThumb_media_id("MEDIA_ID"); | |||
| reply.setToUser("OPENID"); | |||
| reply.setMsgType(WxConsts.CUSTOM_MSG_VIDEO); | |||
| reply.setMediaId("MEDIA_ID"); | |||
| reply.setThumbMediaId("MEDIA_ID"); | |||
| reply.setTitle("TITLE"); | |||
| reply.setDescription("DESCRIPTION"); | |||
| Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}"); | |||
| @@ -67,13 +66,13 @@ public class WxCustomMessageTest { | |||
| public void testMusicReply() { | |||
| WxCustomMessage reply = new WxCustomMessage(); | |||
| reply.setTouser("OPENID"); | |||
| reply.setMsgtype(WxConsts.CUSTOM_MSG_MUSIC); | |||
| reply.setThumb_media_id("MEDIA_ID"); | |||
| reply.setToUser("OPENID"); | |||
| reply.setMsgType(WxConsts.CUSTOM_MSG_MUSIC); | |||
| reply.setThumbMediaId("MEDIA_ID"); | |||
| reply.setDescription("DESCRIPTION"); | |||
| reply.setTitle("TITLE"); | |||
| reply.setMusicurl("MUSIC_URL"); | |||
| reply.setHqmusicurl("HQ_MUSIC_URL"); | |||
| reply.setMusicUrl("MUSIC_URL"); | |||
| reply.setHqMusicUrl("HQ_MUSIC_URL"); | |||
| Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"music\",\"music\":{\"title\":\"TITLE\",\"description\":\"DESCRIPTION\",\"thumb_media_id\":\"MEDIA_ID\",\"musicurl\":\"MUSIC_URL\",\"hqmusicurl\":\"HQ_MUSIC_URL\"}}"); | |||
| } | |||
| @@ -84,26 +83,26 @@ public class WxCustomMessageTest { | |||
| .thumbMediaId("MEDIA_ID") | |||
| .description("DESCRIPTION") | |||
| .musicUrl("MUSIC_URL") | |||
| .hqmusicUrl("HQ_MUSIC_URL") | |||
| .hqMusicUrl("HQ_MUSIC_URL") | |||
| .build(); | |||
| Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"music\",\"music\":{\"title\":\"TITLE\",\"description\":\"DESCRIPTION\",\"thumb_media_id\":\"MEDIA_ID\",\"musicurl\":\"MUSIC_URL\",\"hqmusicurl\":\"HQ_MUSIC_URL\"}}"); | |||
| } | |||
| public void testNewsReply() { | |||
| WxCustomMessage reply = new WxCustomMessage(); | |||
| reply.setTouser("OPENID"); | |||
| reply.setMsgtype(WxConsts.CUSTOM_MSG_NEWS); | |||
| reply.setToUser("OPENID"); | |||
| reply.setMsgType(WxConsts.CUSTOM_MSG_NEWS); | |||
| WxArticle article1 = new WxArticle(); | |||
| article1.setUrl("URL"); | |||
| article1.setPicurl("PIC_URL"); | |||
| article1.setPicUrl("PIC_URL"); | |||
| article1.setDescription("Is Really A Happy Day"); | |||
| article1.setTitle("Happy Day"); | |||
| reply.getArticles().add(article1); | |||
| WxArticle article2 = new WxArticle(); | |||
| article2.setUrl("URL"); | |||
| article2.setPicurl("PIC_URL"); | |||
| article2.setPicUrl("PIC_URL"); | |||
| article2.setDescription("Is Really A Happy Day"); | |||
| article2.setTitle("Happy Day"); | |||
| reply.getArticles().add(article2); | |||
| @@ -115,13 +114,13 @@ public class WxCustomMessageTest { | |||
| public void testNewsBuild() { | |||
| WxArticle article1 = new WxArticle(); | |||
| article1.setUrl("URL"); | |||
| article1.setPicurl("PIC_URL"); | |||
| article1.setPicUrl("PIC_URL"); | |||
| article1.setDescription("Is Really A Happy Day"); | |||
| article1.setTitle("Happy Day"); | |||
| WxArticle article2 = new WxArticle(); | |||
| article2.setUrl("URL"); | |||
| article2.setPicurl("PIC_URL"); | |||
| article2.setPicUrl("PIC_URL"); | |||
| article2.setDescription("Is Really A Happy Day"); | |||
| article2.setTitle("Happy Day"); | |||
| @@ -12,8 +12,8 @@ public class WxErrorTest { | |||
| String json = "{ \"errcode\": 40003, \"errmsg\": \"invalid openid\" }"; | |||
| WxError wxError = WxError.fromJson(json); | |||
| Assert.assertTrue(wxError.getErrcode() == 40003); | |||
| Assert.assertEquals(wxError.getErrmsg(), "invalid openid"); | |||
| Assert.assertTrue(wxError.getErrorCode() == 40003); | |||
| Assert.assertEquals(wxError.getErrorMsg(), "invalid openid"); | |||
| } | |||
| @@ -21,8 +21,8 @@ public class WxErrorTest { | |||
| String json = "{ \"errcode\": 40003, \"errmsg\": \"invalid openid\", \"media_id\": \"12323423dsfafsf232f\" }"; | |||
| WxError wxError = WxError.fromJson(json); | |||
| Assert.assertTrue(wxError.getErrcode() == 40003); | |||
| Assert.assertEquals(wxError.getErrmsg(), "invalid openid"); | |||
| Assert.assertTrue(wxError.getErrorCode() == 40003); | |||
| Assert.assertEquals(wxError.getErrorMsg(), "invalid openid"); | |||
| } | |||
| @@ -30,8 +30,8 @@ public class WxErrorTest { | |||
| String json = "{\"access_token\":\"ACCESS_TOKEN\",\"expires_in\":7200}"; | |||
| WxError wxError = WxError.fromJson(json); | |||
| Assert.assertTrue(wxError.getErrcode() == 0); | |||
| Assert.assertEquals(wxError.getErrmsg(), null); | |||
| Assert.assertTrue(wxError.getErrorCode() == 0); | |||
| Assert.assertEquals(wxError.getErrorMsg(), null); | |||
| } | |||
| @@ -1,6 +1,5 @@ | |||
| package me.chanjar.weixin.bean; | |||
| import me.chanjar.weixin.bean.WxMenu; | |||
| import org.testng.Assert; | |||
| import org.testng.annotations.DataProvider; | |||
| import org.testng.annotations.Test; | |||
| @@ -13,7 +12,7 @@ public class WxMenuTest { | |||
| @Test(dataProvider="wxReturnMenu") | |||
| public void testFromJson(String json) { | |||
| WxMenu menu = WxMenu.fromJson(json); | |||
| Assert.assertEquals(menu.getButton().size(), 3); | |||
| Assert.assertEquals(menu.getButtons().size(), 3); | |||
| } | |||
| @Test(dataProvider="wxPushMenu") | |||
| @@ -32,9 +31,9 @@ public class WxMenuTest { | |||
| WxMenuButton button3 = new WxMenuButton(); | |||
| button3.setName("菜单"); | |||
| menu.getButton().add(button1); | |||
| menu.getButton().add(button2); | |||
| menu.getButton().add(button3); | |||
| menu.getButtons().add(button1); | |||
| menu.getButtons().add(button2); | |||
| menu.getButtons().add(button3); | |||
| WxMenuButton button31 = new WxMenuButton(); | |||
| button31.setType("view"); | |||
| @@ -51,9 +50,9 @@ public class WxMenuTest { | |||
| button33.setName("赞一下我们"); | |||
| button33.setKey("V1001_GOOD"); | |||
| button3.getSub_button().add(button31); | |||
| button3.getSub_button().add(button32); | |||
| button3.getSub_button().add(button33); | |||
| button3.getSubButtons().add(button31); | |||
| button3.getSubButtons().add(button32); | |||
| button3.getSubButtons().add(button33); | |||
| Assert.assertEquals(menu.toJson(), json); | |||
| } | |||
| @@ -64,8 +64,8 @@ public class WxXmlMessageTest { | |||
| Assert.assertEquals(wxMessage.getMediaId(), "media_id"); | |||
| Assert.assertEquals(wxMessage.getFormat(), "Format"); | |||
| Assert.assertEquals(wxMessage.getThumbMediaId(), "thumb_media_id"); | |||
| Assert.assertEquals(wxMessage.getLocation_X(), new Double(23.134521d)); | |||
| Assert.assertEquals(wxMessage.getLocation_Y(), new Double(113.358803d)); | |||
| Assert.assertEquals(wxMessage.getLocationX(), new Double(23.134521d)); | |||
| Assert.assertEquals(wxMessage.getLocationY(), new Double(113.358803d)); | |||
| Assert.assertEquals(wxMessage.getScale(), new Double(20)); | |||
| Assert.assertEquals(wxMessage.getLabel(), "位置信息"); | |||
| Assert.assertEquals(wxMessage.getDescription(), "公众平台官网链接"); | |||
| @@ -81,8 +81,8 @@ public class WxXmlMessageTest { | |||
| 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().getLocationX(), "23"); | |||
| Assert.assertEquals(wxMessage.getSendLocationInfo().getLocationY(), "113"); | |||
| Assert.assertEquals(wxMessage.getSendLocationInfo().getScale(), "15"); | |||
| Assert.assertEquals(wxMessage.getSendLocationInfo().getLabel(), " 广州市海珠区客村艺苑路 106号"); | |||
| Assert.assertEquals(wxMessage.getSendLocationInfo().getPoiname(), "wo de poi"); | |||
| @@ -1,7 +1,5 @@ | |||
| package me.chanjar.weixin.bean; | |||
| import me.chanjar.weixin.bean.WxXmlOutMessage; | |||
| import me.chanjar.weixin.bean.WxXmlOutMusicMessage; | |||
| import org.testng.Assert; | |||
| import org.testng.annotations.Test; | |||
| @@ -12,7 +10,7 @@ public class WxXmlOutIMusicMessageTest { | |||
| WxXmlOutMusicMessage m = new WxXmlOutMusicMessage(); | |||
| m.setTitle("title"); | |||
| m.setDescription("ddfff"); | |||
| m.setHQMusicUrl("hQMusicUrl"); | |||
| m.setHqMusicUrl("hQMusicUrl"); | |||
| m.setMusicUrl("musicUrl"); | |||
| m.setThumbMediaId("thumbMediaId"); | |||
| m.setCreateTime(1122l); | |||
| @@ -43,7 +41,7 @@ public class WxXmlOutIMusicMessageTest { | |||
| .touser("toUser") | |||
| .title("title") | |||
| .description("ddfff") | |||
| .hqmusicUrl("hQMusicUrl") | |||
| .hqMusicUrl("hQMusicUrl") | |||
| .musicUrl("musicUrl") | |||
| .thumbMediaId("thumbMediaId") | |||
| .build(); | |||