@@ -17,7 +17,6 @@ public class WxConsts { | |||||
public static final String XML_MSG_LOCATION = "location"; | public static final String XML_MSG_LOCATION = "location"; | ||||
public static final String XML_MSG_LINK = "link"; | public static final String XML_MSG_LINK = "link"; | ||||
public static final String XML_MSG_EVENT = "event"; | public static final String XML_MSG_EVENT = "event"; | ||||
public static final String XML_TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service"; | |||||
/////////////////////// | /////////////////////// | ||||
// 客服消息的消息类型 | // 客服消息的消息类型 | ||||
@@ -28,49 +27,8 @@ public class WxConsts { | |||||
public static final String CUSTOM_MSG_VIDEO = "video"; | public static final String CUSTOM_MSG_VIDEO = "video"; | ||||
public static final String CUSTOM_MSG_MUSIC = "music"; | public static final String CUSTOM_MSG_MUSIC = "music"; | ||||
public static final String CUSTOM_MSG_NEWS = "news"; | public static final String CUSTOM_MSG_NEWS = "news"; | ||||
/////////////////////// | |||||
// 群发消息的消息类型 | |||||
/////////////////////// | |||||
public static final String MASS_MSG_NEWS = "mpnews"; | |||||
public static final String MASS_MSG_TEXT = "text"; | |||||
public static final String MASS_MSG_VOICE = "voice"; | |||||
public static final String MASS_MSG_IMAGE = "image"; | |||||
public static final String MASS_MSG_VIDEO = "mpvideo"; | |||||
/////////////////////// | |||||
// 群发消息后微信端推送给服务器的反馈消息 | |||||
/////////////////////// | |||||
public static final String MASS_ST_SUCCESS = "send success"; | |||||
public static final String MASS_ST_FAIL = "send fail"; | |||||
public static final String MASS_ST_涉嫌广告 = "err(10001)"; | |||||
public static final String MASS_ST_涉嫌政治 = "err(20001)"; | |||||
public static final String MASS_ST_涉嫌社会 = "err(20004)"; | |||||
public static final String MASS_ST_涉嫌色情 = "err(20002)"; | |||||
public static final String MASS_ST_涉嫌违法犯罪 = "err(20006)"; | |||||
public static final String MASS_ST_涉嫌欺诈 = "err(20008)"; | |||||
public static final String MASS_ST_涉嫌版权 = "err(20013)"; | |||||
public static final String MASS_ST_涉嫌互推_互相宣传 = "err(22000)"; | |||||
public static final String MASS_ST_涉嫌其他 = "err(21000)"; | |||||
/** | |||||
* 群发反馈消息代码所对应的文字描述 | |||||
*/ | |||||
public static final Map<String, String> MASS_ST_2_DESC = new HashMap<String, String>(); | |||||
static { | |||||
MASS_ST_2_DESC.put(MASS_ST_SUCCESS, "发送成功"); | |||||
MASS_ST_2_DESC.put(MASS_ST_FAIL, "发送失败"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌广告, "涉嫌广告"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌政治, "涉嫌政治"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌社会, "涉嫌社会"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌色情, "涉嫌色情"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌违法犯罪, "涉嫌违法犯罪"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌欺诈, "涉嫌欺诈"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌版权, "涉嫌版权"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌互推_互相宣传, "涉嫌互推_互相宣传"); | |||||
MASS_ST_2_DESC.put(MASS_ST_涉嫌其他, "涉嫌其他"); | |||||
} | |||||
public static final String CUSTOM_MSG_FILE = "file"; | |||||
/////////////////////// | /////////////////////// | ||||
// 微信端推送过来的事件类型 | // 微信端推送过来的事件类型 | ||||
/////////////////////// | /////////////////////// | ||||
@@ -6,7 +6,7 @@ import java.io.InputStream; | |||||
import java.util.List; | import java.util.List; | ||||
import me.chanjar.weixin.enterprise.bean.*; | import me.chanjar.weixin.enterprise.bean.*; | ||||
import me.chanjar.weixin.enterprise.bean.WxDepartment; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpDepartment; | |||||
import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult; | import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult; | ||||
import me.chanjar.weixin.enterprise.bean.result.WxUser; | import me.chanjar.weixin.enterprise.bean.result.WxUser; | ||||
import me.chanjar.weixin.enterprise.exception.WxErrorException; | import me.chanjar.weixin.enterprise.exception.WxErrorException; | ||||
@@ -91,7 +91,7 @@ public interface WxCpService { | |||||
* @param message | * @param message | ||||
* @throws WxErrorException | * @throws WxErrorException | ||||
*/ | */ | ||||
public void messageSend(WxCustomMessage message) throws WxErrorException; | |||||
public void messageSend(WxCpMessage message) throws WxErrorException; | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
@@ -131,7 +131,7 @@ public interface WxCpService { | |||||
* @param name 分组名字(30个字符以内) | * @param name 分组名字(30个字符以内) | ||||
* @throws WxErrorException | * @throws WxErrorException | ||||
*/ | */ | ||||
public WxDepartment departmentCreate(String name) throws WxErrorException; | |||||
public WxCpDepartment departmentCreate(String name) throws WxErrorException; | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
@@ -141,7 +141,7 @@ public interface WxCpService { | |||||
* @return | * @return | ||||
* @throws WxErrorException | * @throws WxErrorException | ||||
*/ | */ | ||||
public List<WxDepartment> departmentGet() throws WxErrorException; | |||||
public List<WxCpDepartment> departmentGet() throws WxErrorException; | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
@@ -153,7 +153,7 @@ public interface WxCpService { | |||||
* @param group 要更新的group,group的id,name必须设置 | * @param group 要更新的group,group的id,name必须设置 | ||||
* @throws WxErrorException | * @throws WxErrorException | ||||
*/ | */ | ||||
public void departmentUpdate(WxDepartment group) throws WxErrorException; | |||||
public void departmentUpdate(WxCpDepartment group) throws WxErrorException; | |||||
/** | /** | ||||
* <pre> | * <pre> | ||||
@@ -163,7 +163,7 @@ public interface WxCpService { | |||||
* @param department | * @param department | ||||
* @throws WxErrorException | * @throws WxErrorException | ||||
*/ | */ | ||||
public void departmentDelete(WxDepartment department) throws WxErrorException; | |||||
public void departmentDelete(WxCpDepartment department) throws WxErrorException; | |||||
public void userCreate(WxUser user) throws WxErrorException; | public void userCreate(WxUser user) throws WxErrorException; | ||||
@@ -9,7 +9,6 @@ import java.util.UUID; | |||||
import java.util.concurrent.atomic.AtomicBoolean; | import java.util.concurrent.atomic.AtomicBoolean; | ||||
import me.chanjar.weixin.enterprise.bean.*; | import me.chanjar.weixin.enterprise.bean.*; | ||||
import me.chanjar.weixin.enterprise.util.crypto.WxCryptUtil; | |||||
import me.chanjar.weixin.enterprise.util.http.SimpleGetRequestExecutor; | import me.chanjar.weixin.enterprise.util.http.SimpleGetRequestExecutor; | ||||
import me.chanjar.weixin.enterprise.util.crypto.SHA1; | import me.chanjar.weixin.enterprise.util.crypto.SHA1; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -20,7 +19,7 @@ import org.apache.http.impl.client.BasicResponseHandler; | |||||
import org.apache.http.impl.client.CloseableHttpClient; | import org.apache.http.impl.client.CloseableHttpClient; | ||||
import org.apache.http.impl.client.HttpClients; | import org.apache.http.impl.client.HttpClients; | ||||
import me.chanjar.weixin.enterprise.bean.WxDepartment; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpDepartment; | |||||
import me.chanjar.weixin.enterprise.bean.result.WxError; | import me.chanjar.weixin.enterprise.bean.result.WxError; | ||||
import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult; | import me.chanjar.weixin.enterprise.bean.result.WxMediaUploadResult; | ||||
import me.chanjar.weixin.enterprise.bean.result.WxUser; | import me.chanjar.weixin.enterprise.bean.result.WxUser; | ||||
@@ -98,8 +97,8 @@ public class WxCpServiceImpl implements WxCpService { | |||||
} | } | ||||
} | } | ||||
public void messageSend(WxCustomMessage message) throws WxErrorException { | |||||
String url = "https://api.weixin.qq.com/cgi-bin/message/custom/send"; | |||||
public void messageSend(WxCpMessage message) throws WxErrorException { | |||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send"; | |||||
execute(new SimplePostRequestExecutor(), url, message.toJson()); | execute(new SimplePostRequestExecutor(), url, message.toJson()); | ||||
} | } | ||||
@@ -143,7 +142,7 @@ public class WxCpServiceImpl implements WxCpService { | |||||
} | } | ||||
public WxDepartment departmentCreate(String name) throws WxErrorException { | |||||
public WxCpDepartment departmentCreate(String name) throws WxErrorException { | |||||
// TODO | // TODO | ||||
String url = "https://api.weixin.qq.com/cgi-bin/groups/create"; | String url = "https://api.weixin.qq.com/cgi-bin/groups/create"; | ||||
JsonObject json = new JsonObject(); | JsonObject json = new JsonObject(); | ||||
@@ -155,16 +154,16 @@ public class WxCpServiceImpl implements WxCpService { | |||||
new SimplePostRequestExecutor(), | new SimplePostRequestExecutor(), | ||||
url, | url, | ||||
json.toString()); | json.toString()); | ||||
return WxDepartment.fromJson(responseContent); | |||||
return WxCpDepartment.fromJson(responseContent); | |||||
} | } | ||||
public void departmentUpdate(WxDepartment group) throws WxErrorException { | |||||
public void departmentUpdate(WxCpDepartment group) throws WxErrorException { | |||||
// TODO | // TODO | ||||
String url = "https://api.weixin.qq.com/cgi-bin/groups/update"; | String url = "https://api.weixin.qq.com/cgi-bin/groups/update"; | ||||
execute(new SimplePostRequestExecutor(), url, group.toJson()); | execute(new SimplePostRequestExecutor(), url, group.toJson()); | ||||
} | } | ||||
public List<WxDepartment> departmentGet() throws WxErrorException { | |||||
public List<WxCpDepartment> departmentGet() throws WxErrorException { | |||||
// TODO | // TODO | ||||
String url = "https://api.weixin.qq.com/cgi-bin/groups/get"; | String url = "https://api.weixin.qq.com/cgi-bin/groups/get"; | ||||
String responseContent = execute(new SimpleGetRequestExecutor(), url, null); | String responseContent = execute(new SimpleGetRequestExecutor(), url, null); | ||||
@@ -174,11 +173,11 @@ public class WxCpServiceImpl implements WxCpService { | |||||
*/ | */ | ||||
JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); | JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); | ||||
return WxGsonBuilder.INSTANCE.create() | return WxGsonBuilder.INSTANCE.create() | ||||
.fromJson(tmpJsonElement.getAsJsonObject().get("groups"), new TypeToken<List<WxDepartment>>() { | |||||
.fromJson(tmpJsonElement.getAsJsonObject().get("groups"), new TypeToken<List<WxCpDepartment>>() { | |||||
}.getType()); | }.getType()); | ||||
} | } | ||||
public void departmentDelete(WxDepartment department) throws WxErrorException { | |||||
public void departmentDelete(WxCpDepartment department) throws WxErrorException { | |||||
// TODO | // TODO | ||||
} | } | ||||
@@ -82,4 +82,17 @@ public class WxInMemoryCpConfigStorage implements WxCpConfigStorage { | |||||
public void setAgentId(String agentId) { | public void setAgentId(String agentId) { | ||||
this.agentId = agentId; | this.agentId = agentId; | ||||
} | } | ||||
@Override | |||||
public String toString() { | |||||
return "WxInMemoryCpConfigStorage{" + | |||||
"corpId='" + corpId + '\'' + | |||||
", corpSecret='" + corpSecret + '\'' + | |||||
", token='" + token + '\'' + | |||||
", accessToken='" + accessToken + '\'' + | |||||
", aesKey='" + aesKey + '\'' + | |||||
", agentId='" + agentId + '\'' + | |||||
", expiresIn=" + expiresIn + | |||||
'}'; | |||||
} | |||||
} | } |
@@ -7,7 +7,7 @@ import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder; | |||||
* @author Daniel Qian | * @author Daniel Qian | ||||
* | * | ||||
*/ | */ | ||||
public class WxDepartment { | |||||
public class WxCpDepartment { | |||||
private long id = -1; | private long id = -1; | ||||
private String name; | private String name; | ||||
@@ -31,8 +31,8 @@ public class WxDepartment { | |||||
this.count = count; | this.count = count; | ||||
} | } | ||||
public static WxDepartment fromJson(String json) { | |||||
return WxGsonBuilder.create().fromJson(json, WxDepartment.class); | |||||
public static WxCpDepartment fromJson(String json) { | |||||
return WxGsonBuilder.create().fromJson(json, WxCpDepartment.class); | |||||
} | } | ||||
public String toJson() { | public String toJson() { |
@@ -4,12 +4,7 @@ import java.util.ArrayList; | |||||
import java.util.List; | import java.util.List; | ||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.custombuilder.ImageBuilder; | |||||
import me.chanjar.weixin.enterprise.bean.custombuilder.MusicBuilder; | |||||
import me.chanjar.weixin.enterprise.bean.custombuilder.NewsBuilder; | |||||
import me.chanjar.weixin.enterprise.bean.custombuilder.TextBuilder; | |||||
import me.chanjar.weixin.enterprise.bean.custombuilder.VideoBuilder; | |||||
import me.chanjar.weixin.enterprise.bean.custombuilder.VoiceBuilder; | |||||
import me.chanjar.weixin.enterprise.bean.messagebuilder.*; | |||||
import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder; | import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder; | ||||
/** | /** | ||||
@@ -17,9 +12,12 @@ import me.chanjar.weixin.enterprise.util.json.WxGsonBuilder; | |||||
* @author Daniel Qian | * @author Daniel Qian | ||||
* | * | ||||
*/ | */ | ||||
public class WxCustomMessage { | |||||
public class WxCpMessage { | |||||
private String toUser; | private String toUser; | ||||
private String toParty; | |||||
private String toTag; | |||||
private String agentId; | |||||
private String msgType; | private String msgType; | ||||
private String content; | private String content; | ||||
private String mediaId; | private String mediaId; | ||||
@@ -36,6 +34,31 @@ public class WxCustomMessage { | |||||
public void setToUser(String toUser) { | public void setToUser(String toUser) { | ||||
this.toUser = toUser; | this.toUser = toUser; | ||||
} | } | ||||
public String getToParty() { | |||||
return toParty; | |||||
} | |||||
public void setToParty(String toParty) { | |||||
this.toParty = toParty; | |||||
} | |||||
public String getToTag() { | |||||
return toTag; | |||||
} | |||||
public void setToTag(String toTag) { | |||||
this.toTag = toTag; | |||||
} | |||||
public String getAgentId() { | |||||
return agentId; | |||||
} | |||||
public void setAgentId(String agentId) { | |||||
this.agentId = agentId; | |||||
} | |||||
public String getMsgType() { | public String getMsgType() { | ||||
return msgType; | return msgType; | ||||
} | } | ||||
@@ -189,5 +212,13 @@ public class WxCustomMessage { | |||||
public static NewsBuilder NEWS() { | public static NewsBuilder NEWS() { | ||||
return new NewsBuilder(); | return new NewsBuilder(); | ||||
} | } | ||||
/** | |||||
* 获得文件消息builder | |||||
* @return | |||||
*/ | |||||
public static FileBuilder FILE() { | |||||
return new FileBuilder(); | |||||
} | |||||
} | } |
@@ -1,20 +0,0 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
public class BaseBuilder<T> { | |||||
protected String msgType; | |||||
protected String toUser; | |||||
public T toUser(String toUser) { | |||||
this.toUser = toUser; | |||||
return (T) this; | |||||
} | |||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = new WxCustomMessage(); | |||||
m.setMsgType(this.msgType); | |||||
m.setToUser(this.toUser); | |||||
return m; | |||||
} | |||||
} |
@@ -0,0 +1,42 @@ | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
public class BaseBuilder<T> { | |||||
protected String msgType; | |||||
protected String agentId; | |||||
protected String toUser; | |||||
protected String toParty; | |||||
protected String toTag; | |||||
public T agentId(String agentId) { | |||||
this.agentId = agentId; | |||||
return (T) this; | |||||
} | |||||
public T toUser(String toUser) { | |||||
this.toUser = toUser; | |||||
return (T) this; | |||||
} | |||||
public T toParty(String toParty) { | |||||
this.toParty = toParty; | |||||
return (T) this; | |||||
} | |||||
public T toTag(String toTag) { | |||||
this.toTag = toTag; | |||||
return (T) this; | |||||
} | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = new WxCpMessage(); | |||||
m.setAgentId(this.agentId); | |||||
m.setMsgType(this.msgType); | |||||
m.setToUser(this.toUser); | |||||
m.setToParty(this.toParty); | |||||
m.setToTag(this.toTag); | |||||
return m; | |||||
} | |||||
} |
@@ -0,0 +1,31 @@ | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.api.WxConsts; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | |||||
* 获得消息builder | |||||
* <pre> | |||||
* 用法: WxCustomMessage m = WxCustomMessage.FILE().mediaId(...).toUser(...).build(); | |||||
* </pre> | |||||
* @author Daniel Qian | |||||
* | |||||
*/ | |||||
public final class FileBuilder extends BaseBuilder<FileBuilder> { | |||||
private String mediaId; | |||||
public FileBuilder() { | |||||
this.msgType = WxConsts.CUSTOM_MSG_FILE; | |||||
} | |||||
public FileBuilder mediaId(String media_id) { | |||||
this.mediaId = media_id; | |||||
return this; | |||||
} | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setMediaId(this.mediaId); | |||||
return m; | |||||
} | |||||
} |
@@ -1,7 +1,7 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | /** | ||||
* 获得消息builder | * 获得消息builder | ||||
@@ -23,8 +23,8 @@ public final class ImageBuilder extends BaseBuilder<ImageBuilder> { | |||||
return this; | return this; | ||||
} | } | ||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = super.build(); | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setMediaId(this.mediaId); | m.setMediaId(this.mediaId); | ||||
return m; | return m; | ||||
} | } |
@@ -1,7 +1,7 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | /** | ||||
* 音乐消息builder | * 音乐消息builder | ||||
@@ -52,8 +52,8 @@ public final class MusicBuilder extends BaseBuilder<MusicBuilder> { | |||||
return this; | return this; | ||||
} | } | ||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = super.build(); | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setMusicUrl(this.musicUrl); | m.setMusicUrl(this.musicUrl); | ||||
m.setHqMusicUrl(this.hqMusicUrl); | m.setHqMusicUrl(this.hqMusicUrl); | ||||
m.setTitle(title); | m.setTitle(title); |
@@ -1,10 +1,10 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | import java.util.List; | ||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | /** | ||||
* 图文消息builder | * 图文消息builder | ||||
@@ -17,19 +17,19 @@ import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
*/ | */ | ||||
public final class NewsBuilder extends BaseBuilder<NewsBuilder> { | public final class NewsBuilder extends BaseBuilder<NewsBuilder> { | ||||
private List<WxCustomMessage.WxArticle> articles = new ArrayList<WxCustomMessage.WxArticle>(); | |||||
private List<WxCpMessage.WxArticle> articles = new ArrayList<WxCpMessage.WxArticle>(); | |||||
public NewsBuilder() { | public NewsBuilder() { | ||||
this.msgType = WxConsts.CUSTOM_MSG_NEWS; | this.msgType = WxConsts.CUSTOM_MSG_NEWS; | ||||
} | } | ||||
public NewsBuilder addArticle(WxCustomMessage.WxArticle article) { | |||||
public NewsBuilder addArticle(WxCpMessage.WxArticle article) { | |||||
this.articles.add(article); | this.articles.add(article); | ||||
return this; | return this; | ||||
} | } | ||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = super.build(); | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setArticles(this.articles); | m.setArticles(this.articles); | ||||
return m; | return m; | ||||
} | } |
@@ -1,7 +1,7 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | /** | ||||
* 文本消息builder | * 文本消息builder | ||||
@@ -23,8 +23,8 @@ public final class TextBuilder extends BaseBuilder<TextBuilder> { | |||||
return this; | return this; | ||||
} | } | ||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = super.build(); | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setContent(this.content); | m.setContent(this.content); | ||||
return m; | return m; | ||||
} | } |
@@ -1,7 +1,7 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | /** | ||||
* 视频消息builder | * 视频消息builder | ||||
@@ -47,8 +47,8 @@ public final class VideoBuilder extends BaseBuilder<VideoBuilder> { | |||||
return this; | return this; | ||||
} | } | ||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = super.build(); | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setMediaId(this.mediaId); | m.setMediaId(this.mediaId); | ||||
m.setTitle(title); | m.setTitle(title); | ||||
m.setDescription(description); | m.setDescription(description); |
@@ -1,7 +1,7 @@ | |||||
package me.chanjar.weixin.enterprise.bean.custombuilder; | |||||
package me.chanjar.weixin.enterprise.bean.messagebuilder; | |||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
/** | /** | ||||
* 语音消息builder | * 语音消息builder | ||||
@@ -23,8 +23,8 @@ public final class VoiceBuilder extends BaseBuilder<VoiceBuilder> { | |||||
return this; | return this; | ||||
} | } | ||||
public WxCustomMessage build() { | |||||
WxCustomMessage m = super.build(); | |||||
public WxCpMessage build() { | |||||
WxCpMessage m = super.build(); | |||||
m.setMediaId(this.mediaId); | m.setMediaId(this.mediaId); | ||||
return m; | return m; | ||||
} | } |
@@ -11,26 +11,36 @@ package me.chanjar.weixin.enterprise.util.json; | |||||
import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
import com.google.gson.JsonArray; | import com.google.gson.JsonArray; | ||||
import com.google.gson.JsonElement; | import com.google.gson.JsonElement; | ||||
import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||
import com.google.gson.JsonSerializationContext; | import com.google.gson.JsonSerializationContext; | ||||
import com.google.gson.JsonSerializer; | import com.google.gson.JsonSerializer; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
/** | /** | ||||
* | * | ||||
* @author Daniel Qian | * @author Daniel Qian | ||||
* | * | ||||
*/ | */ | ||||
public class WxCustomMessageGsonAdapter implements JsonSerializer<WxCustomMessage> { | |||||
public class WxCpMessageGsonAdapter implements JsonSerializer<WxCpMessage> { | |||||
public JsonElement serialize(WxCustomMessage message, Type typeOfSrc, JsonSerializationContext context) { | |||||
public JsonElement serialize(WxCpMessage message, Type typeOfSrc, JsonSerializationContext context) { | |||||
JsonObject messageJson = new JsonObject(); | JsonObject messageJson = new JsonObject(); | ||||
messageJson.addProperty("touser", message.getToUser()); | |||||
messageJson.addProperty("agentid", message.getAgentId()); | |||||
messageJson.addProperty("msgtype", message.getMsgType()); | messageJson.addProperty("msgtype", message.getMsgType()); | ||||
if (StringUtils.isNotBlank(message.getToUser())) { | |||||
messageJson.addProperty("touser", message.getToUser()); | |||||
} | |||||
if (StringUtils.isNotBlank(message.getToParty())) { | |||||
messageJson.addProperty("toparty", message.getToUser()); | |||||
} | |||||
if (StringUtils.isNotBlank(message.getToTag())) { | |||||
messageJson.addProperty("totag", message.getToUser()); | |||||
} | |||||
if (WxConsts.CUSTOM_MSG_TEXT.equals(message.getMsgType())) { | if (WxConsts.CUSTOM_MSG_TEXT.equals(message.getMsgType())) { | ||||
JsonObject text = new JsonObject(); | JsonObject text = new JsonObject(); | ||||
text.addProperty("content", message.getContent()); | text.addProperty("content", message.getContent()); | ||||
@@ -43,6 +53,12 @@ public class WxCustomMessageGsonAdapter implements JsonSerializer<WxCustomMessag | |||||
messageJson.add("image", image); | messageJson.add("image", image); | ||||
} | } | ||||
if (WxConsts.CUSTOM_MSG_FILE.equals(message.getMsgType())) { | |||||
JsonObject image = new JsonObject(); | |||||
image.addProperty("media_id", message.getMediaId()); | |||||
messageJson.add("file", image); | |||||
} | |||||
if (WxConsts.CUSTOM_MSG_VOICE.equals(message.getMsgType())) { | if (WxConsts.CUSTOM_MSG_VOICE.equals(message.getMsgType())) { | ||||
JsonObject voice = new JsonObject(); | JsonObject voice = new JsonObject(); | ||||
voice.addProperty("media_id", message.getMediaId()); | voice.addProperty("media_id", message.getMediaId()); | ||||
@@ -70,7 +86,7 @@ public class WxCustomMessageGsonAdapter implements JsonSerializer<WxCustomMessag | |||||
if (WxConsts.CUSTOM_MSG_NEWS.equals(message.getMsgType())) { | if (WxConsts.CUSTOM_MSG_NEWS.equals(message.getMsgType())) { | ||||
JsonArray articleJsonArray = new JsonArray(); | JsonArray articleJsonArray = new JsonArray(); | ||||
for (WxCustomMessage.WxArticle article : message.getArticles()) { | |||||
for (WxCpMessage.WxArticle article : message.getArticles()) { | |||||
JsonObject articleJson = new JsonObject(); | JsonObject articleJson = new JsonObject(); | ||||
articleJson.addProperty("title", article.getTitle()); | articleJson.addProperty("title", article.getTitle()); | ||||
articleJson.addProperty("description", article.getDescription()); | articleJson.addProperty("description", article.getDescription()); |
@@ -10,7 +10,7 @@ package me.chanjar.weixin.enterprise.util.json; | |||||
import java.lang.reflect.Type; | import java.lang.reflect.Type; | ||||
import me.chanjar.weixin.enterprise.bean.WxDepartment; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpDepartment; | |||||
import com.google.gson.JsonDeserializationContext; | import com.google.gson.JsonDeserializationContext; | ||||
import com.google.gson.JsonDeserializer; | import com.google.gson.JsonDeserializer; | ||||
@@ -25,9 +25,9 @@ import com.google.gson.JsonSerializer; | |||||
* @author Daniel Qian | * @author Daniel Qian | ||||
* | * | ||||
*/ | */ | ||||
public class WxGroupGsonAdapter implements JsonSerializer<WxDepartment>, JsonDeserializer<WxDepartment> { | |||||
public class WxGroupGsonAdapter implements JsonSerializer<WxCpDepartment>, JsonDeserializer<WxCpDepartment> { | |||||
public JsonElement serialize(WxDepartment group, Type typeOfSrc, JsonSerializationContext context) { | |||||
public JsonElement serialize(WxCpDepartment group, Type typeOfSrc, JsonSerializationContext context) { | |||||
JsonObject json = new JsonObject(); | JsonObject json = new JsonObject(); | ||||
JsonObject groupJson = new JsonObject(); | JsonObject groupJson = new JsonObject(); | ||||
groupJson.addProperty("name", group.getName()); | groupJson.addProperty("name", group.getName()); | ||||
@@ -37,8 +37,8 @@ public class WxGroupGsonAdapter implements JsonSerializer<WxDepartment>, JsonDes | |||||
return json; | return json; | ||||
} | } | ||||
public WxDepartment deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||||
WxDepartment group = new WxDepartment(); | |||||
public WxCpDepartment deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { | |||||
WxCpDepartment group = new WxCpDepartment(); | |||||
JsonObject groupJson = json.getAsJsonObject(); | JsonObject groupJson = json.getAsJsonObject(); | ||||
if (json.getAsJsonObject().get("group") != null) { | if (json.getAsJsonObject().get("group") != null) { | ||||
groupJson = json.getAsJsonObject().get("group").getAsJsonObject(); | groupJson = json.getAsJsonObject().get("group").getAsJsonObject(); | ||||
@@ -12,12 +12,12 @@ public class WxGsonBuilder { | |||||
static { | static { | ||||
INSTANCE.disableHtmlEscaping(); | INSTANCE.disableHtmlEscaping(); | ||||
INSTANCE.registerTypeAdapter(WxCustomMessage.class, new WxCustomMessageGsonAdapter()); | |||||
INSTANCE.registerTypeAdapter(WxCpMessage.class, new WxCpMessageGsonAdapter()); | |||||
INSTANCE.registerTypeAdapter(WxMenu.class, new WxMenuGsonAdapter()); | INSTANCE.registerTypeAdapter(WxMenu.class, new WxMenuGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(WxMassNews.class, new WxMassNewsGsonAdapter()); | INSTANCE.registerTypeAdapter(WxMassNews.class, new WxMassNewsGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(WxMassGroupMessage.class, new WxMassMessageGsonAdapter()); | INSTANCE.registerTypeAdapter(WxMassGroupMessage.class, new WxMassMessageGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(WxMassOpenIdsMessage.class, new WxMassOpenIdsMessageGsonAdapter()); | INSTANCE.registerTypeAdapter(WxMassOpenIdsMessage.class, new WxMassOpenIdsMessageGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(WxDepartment.class, new WxGroupGsonAdapter()); | |||||
INSTANCE.registerTypeAdapter(WxCpDepartment.class, new WxGroupGsonAdapter()); | |||||
INSTANCE.registerTypeAdapter(WxUser.class, new WxUserGsonAdapter()); | INSTANCE.registerTypeAdapter(WxUser.class, new WxUserGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(WxUserList.class, new WxUserListGsonAdapter()); | INSTANCE.registerTypeAdapter(WxUserList.class, new WxUserListGsonAdapter()); | ||||
INSTANCE.registerTypeAdapter(WxAccessToken.class, new WxAccessTokenAdapter()); | INSTANCE.registerTypeAdapter(WxAccessToken.class, new WxAccessTokenAdapter()); | ||||
@@ -42,20 +42,43 @@ public class ApiTestModule implements Module { | |||||
@XmlAccessorType(XmlAccessType.FIELD) | @XmlAccessorType(XmlAccessType.FIELD) | ||||
public static class WxXmlCpConfigStorage extends WxInMemoryCpConfigStorage { | public static class WxXmlCpConfigStorage extends WxInMemoryCpConfigStorage { | ||||
protected String openId; | |||||
protected String userId; | |||||
public String getOpenId() { | |||||
return openId; | |||||
protected String departmentId; | |||||
protected String tagId; | |||||
public String getUserId() { | |||||
return userId; | |||||
} | |||||
public void setUserId(String userId) { | |||||
this.userId = userId; | |||||
} | } | ||||
public void setOpenId(String openId) { | |||||
this.openId = openId; | |||||
public String getDepartmentId() { | |||||
return departmentId; | |||||
} | |||||
public void setDepartmentId(String departmentId) { | |||||
this.departmentId = departmentId; | |||||
} | } | ||||
public String getTagId() { | |||||
return tagId; | |||||
} | |||||
public void setTagId(String tagId) { | |||||
this.tagId = tagId; | |||||
} | |||||
@Override | @Override | ||||
public String toString() { | public String toString() { | ||||
return "SimpleWxConfigProvider [corpId=" + corpId + ", corpSecret=" + corpSecret + ", accessToken=" + accessToken | |||||
+ ", expiresIn=" + expiresIn + ", token=" + token + ", openId=" + openId + "]"; | |||||
return super.toString() + " > WxXmlCpConfigStorage{" + | |||||
"userId='" + userId + '\'' + | |||||
", departmentId='" + departmentId + '\'' + | |||||
", tagId='" + tagId + '\'' + | |||||
'}'; | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -0,0 +1,42 @@ | |||||
package me.chanjar.weixin.enterprise.api; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage; | |||||
import org.testng.annotations.Guice; | |||||
import org.testng.annotations.Test; | |||||
import me.chanjar.weixin.enterprise.exception.WxErrorException; | |||||
import com.google.inject.Inject; | |||||
/*** | |||||
* 测试发送客服消息 | |||||
* @author Daniel Qian | |||||
* | |||||
*/ | |||||
@Test(groups="customMessageAPI", dependsOnGroups = "baseAPI") | |||||
@Guice(modules = ApiTestModule.class) | |||||
public class WxCpMessageAPITest { | |||||
@Inject | |||||
protected WxCpServiceImpl wxService; | |||||
public void testSendCustomMessage() throws WxErrorException { | |||||
ApiTestModule.WxXmlCpConfigStorage configStorage = (ApiTestModule.WxXmlCpConfigStorage) wxService.wxCpConfigStorage; | |||||
WxCpMessage message1 = new WxCpMessage(); | |||||
message1.setAgentId(configStorage.getAgentId()); | |||||
message1.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | |||||
message1.setToUser(configStorage.getUserId()); | |||||
message1.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||||
wxService.messageSend(message1); | |||||
WxCpMessage message2 = WxCpMessage | |||||
.TEXT() | |||||
.agentId(configStorage.getAgentId()) | |||||
.toUser(configStorage.getUserId()) | |||||
.content("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>") | |||||
.build(); | |||||
wxService.messageSend(message2); | |||||
} | |||||
} |
@@ -1,33 +0,0 @@ | |||||
package me.chanjar.weixin.enterprise.api; | |||||
import org.testng.annotations.Guice; | |||||
import org.testng.annotations.Test; | |||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import me.chanjar.weixin.enterprise.exception.WxErrorException; | |||||
import com.google.inject.Inject; | |||||
/*** | |||||
* 测试发送客服消息 | |||||
* @author Daniel Qian | |||||
* | |||||
*/ | |||||
@Test(groups="customMessageAPI", dependsOnGroups = "baseAPI") | |||||
@Guice(modules = ApiTestModule.class) | |||||
public class WxCustomMessageAPITest { | |||||
@Inject | |||||
protected WxCpServiceImpl wxService; | |||||
public void testSendCustomMessage() throws WxErrorException { | |||||
ApiTestModule.WxXmlCpConfigStorage configStorage = (ApiTestModule.WxXmlCpConfigStorage) wxService.wxCpConfigStorage; | |||||
WxCustomMessage message = new WxCustomMessage(); | |||||
message.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | |||||
message.setToUser(configStorage.getOpenId()); | |||||
message.setContent("欢迎欢迎,热烈欢迎\n换行测试\n超链接:<a href=\"http://www.baidu.com\">Hello World</a>"); | |||||
wxService.messageSend(message); | |||||
} | |||||
} |
@@ -2,7 +2,7 @@ package me.chanjar.weixin.enterprise.api; | |||||
import java.util.List; | import java.util.List; | ||||
import me.chanjar.weixin.enterprise.bean.WxDepartment; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpDepartment; | |||||
import org.testng.Assert; | import org.testng.Assert; | ||||
import org.testng.annotations.Guice; | import org.testng.annotations.Guice; | ||||
import org.testng.annotations.Test; | import org.testng.annotations.Test; | ||||
@@ -23,19 +23,19 @@ public class WxGroupAPITest { | |||||
@Inject | @Inject | ||||
protected WxCpServiceImpl wxService; | protected WxCpServiceImpl wxService; | ||||
protected WxDepartment group; | |||||
protected WxCpDepartment group; | |||||
public void testGroupCreate() throws WxErrorException { | public void testGroupCreate() throws WxErrorException { | ||||
WxDepartment res = wxService.departmentCreate("测试分组1"); | |||||
WxCpDepartment res = wxService.departmentCreate("测试分组1"); | |||||
Assert.assertEquals(res.getName(), "测试分组1"); | Assert.assertEquals(res.getName(), "测试分组1"); | ||||
} | } | ||||
@Test(dependsOnMethods="testGroupCreate") | @Test(dependsOnMethods="testGroupCreate") | ||||
public void testGroupGet() throws WxErrorException { | public void testGroupGet() throws WxErrorException { | ||||
List<WxDepartment> groupList = wxService.departmentGet(); | |||||
List<WxCpDepartment> groupList = wxService.departmentGet(); | |||||
Assert.assertNotNull(groupList); | Assert.assertNotNull(groupList); | ||||
Assert.assertTrue(groupList.size() > 0); | Assert.assertTrue(groupList.size() > 0); | ||||
for (WxDepartment g : groupList) { | |||||
for (WxCpDepartment g : groupList) { | |||||
group = g; | group = g; | ||||
Assert.assertNotNull(g.getName()); | Assert.assertNotNull(g.getName()); | ||||
} | } | ||||
@@ -1,17 +1,16 @@ | |||||
package me.chanjar.weixin.enterprise.bean; | package me.chanjar.weixin.enterprise.bean; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage; | |||||
import org.testng.Assert; | import org.testng.Assert; | ||||
import org.testng.annotations.Test; | import org.testng.annotations.Test; | ||||
import me.chanjar.weixin.enterprise.api.WxConsts; | import me.chanjar.weixin.enterprise.api.WxConsts; | ||||
import me.chanjar.weixin.enterprise.bean.WxCustomMessage.WxArticle; | |||||
import me.chanjar.weixin.enterprise.bean.WxCpMessage.WxArticle; | |||||
@Test | @Test | ||||
public class WxCustomMessageTest { | |||||
public class WxCpMessageTest { | |||||
public void testTextReply() { | public void testTextReply() { | ||||
WxCustomMessage reply = new WxCustomMessage(); | |||||
WxCpMessage reply = new WxCpMessage(); | |||||
reply.setToUser("OPENID"); | reply.setToUser("OPENID"); | ||||
reply.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | reply.setMsgType(WxConsts.CUSTOM_MSG_TEXT); | ||||
reply.setContent("sfsfdsdf"); | reply.setContent("sfsfdsdf"); | ||||
@@ -19,12 +18,12 @@ public class WxCustomMessageTest { | |||||
} | } | ||||
public void testTextBuild() { | public void testTextBuild() { | ||||
WxCustomMessage reply = WxCustomMessage.TEXT().toUser("OPENID").content("sfsfdsdf").build(); | |||||
WxCpMessage reply = WxCpMessage.TEXT().toUser("OPENID").content("sfsfdsdf").build(); | |||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}"); | Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"text\",\"text\":{\"content\":\"sfsfdsdf\"}}"); | ||||
} | } | ||||
public void testImageReply() { | public void testImageReply() { | ||||
WxCustomMessage reply = new WxCustomMessage(); | |||||
WxCpMessage reply = new WxCpMessage(); | |||||
reply.setToUser("OPENID"); | reply.setToUser("OPENID"); | ||||
reply.setMsgType(WxConsts.CUSTOM_MSG_IMAGE); | reply.setMsgType(WxConsts.CUSTOM_MSG_IMAGE); | ||||
reply.setMediaId("MEDIA_ID"); | reply.setMediaId("MEDIA_ID"); | ||||
@@ -32,12 +31,12 @@ public class WxCustomMessageTest { | |||||
} | } | ||||
public void testImageBuild() { | public void testImageBuild() { | ||||
WxCustomMessage reply = WxCustomMessage.IMAGE().toUser("OPENID").mediaId("MEDIA_ID").build(); | |||||
WxCpMessage reply = WxCpMessage.IMAGE().toUser("OPENID").mediaId("MEDIA_ID").build(); | |||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}"); | Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"image\",\"image\":{\"media_id\":\"MEDIA_ID\"}}"); | ||||
} | } | ||||
public void testVoiceReply() { | public void testVoiceReply() { | ||||
WxCustomMessage reply = new WxCustomMessage(); | |||||
WxCpMessage reply = new WxCpMessage(); | |||||
reply.setToUser("OPENID"); | reply.setToUser("OPENID"); | ||||
reply.setMsgType(WxConsts.CUSTOM_MSG_VOICE); | reply.setMsgType(WxConsts.CUSTOM_MSG_VOICE); | ||||
reply.setMediaId("MEDIA_ID"); | reply.setMediaId("MEDIA_ID"); | ||||
@@ -45,12 +44,12 @@ public class WxCustomMessageTest { | |||||
} | } | ||||
public void testVoiceBuild() { | public void testVoiceBuild() { | ||||
WxCustomMessage reply = WxCustomMessage.VOICE().toUser("OPENID").mediaId("MEDIA_ID").build(); | |||||
WxCpMessage reply = WxCpMessage.VOICE().toUser("OPENID").mediaId("MEDIA_ID").build(); | |||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}"); | Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"voice\",\"voice\":{\"media_id\":\"MEDIA_ID\"}}"); | ||||
} | } | ||||
public void testVideoReply() { | public void testVideoReply() { | ||||
WxCustomMessage reply = new WxCustomMessage(); | |||||
WxCpMessage reply = new WxCpMessage(); | |||||
reply.setToUser("OPENID"); | reply.setToUser("OPENID"); | ||||
reply.setMsgType(WxConsts.CUSTOM_MSG_VIDEO); | reply.setMsgType(WxConsts.CUSTOM_MSG_VIDEO); | ||||
reply.setMediaId("MEDIA_ID"); | reply.setMediaId("MEDIA_ID"); | ||||
@@ -61,12 +60,12 @@ public class WxCustomMessageTest { | |||||
} | } | ||||
public void testVideoBuild() { | public void testVideoBuild() { | ||||
WxCustomMessage reply = WxCustomMessage.VIDEO().toUser("OPENID").title("TITLE").mediaId("MEDIA_ID").thumbMediaId("MEDIA_ID").description("DESCRIPTION").build(); | |||||
WxCpMessage reply = WxCpMessage.VIDEO().toUser("OPENID").title("TITLE").mediaId("MEDIA_ID").thumbMediaId("MEDIA_ID").description("DESCRIPTION").build(); | |||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}"); | Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"video\",\"video\":{\"media_id\":\"MEDIA_ID\",\"thumb_media_id\":\"MEDIA_ID\",\"title\":\"TITLE\",\"description\":\"DESCRIPTION\"}}"); | ||||
} | } | ||||
public void testMusicReply() { | public void testMusicReply() { | ||||
WxCustomMessage reply = new WxCustomMessage(); | |||||
WxCpMessage reply = new WxCpMessage(); | |||||
reply.setToUser("OPENID"); | reply.setToUser("OPENID"); | ||||
reply.setMsgType(WxConsts.CUSTOM_MSG_MUSIC); | reply.setMsgType(WxConsts.CUSTOM_MSG_MUSIC); | ||||
reply.setThumbMediaId("MEDIA_ID"); | reply.setThumbMediaId("MEDIA_ID"); | ||||
@@ -78,7 +77,7 @@ public class WxCustomMessageTest { | |||||
} | } | ||||
public void testMusicBuild() { | public void testMusicBuild() { | ||||
WxCustomMessage reply = WxCustomMessage.MUSIC() | |||||
WxCpMessage reply = WxCpMessage.MUSIC() | |||||
.toUser("OPENID") | .toUser("OPENID") | ||||
.title("TITLE") | .title("TITLE") | ||||
.thumbMediaId("MEDIA_ID") | .thumbMediaId("MEDIA_ID") | ||||
@@ -90,7 +89,7 @@ public class WxCustomMessageTest { | |||||
} | } | ||||
public void testNewsReply() { | public void testNewsReply() { | ||||
WxCustomMessage reply = new WxCustomMessage(); | |||||
WxCpMessage reply = new WxCpMessage(); | |||||
reply.setToUser("OPENID"); | reply.setToUser("OPENID"); | ||||
reply.setMsgType(WxConsts.CUSTOM_MSG_NEWS); | reply.setMsgType(WxConsts.CUSTOM_MSG_NEWS); | ||||
@@ -125,7 +124,7 @@ public class WxCustomMessageTest { | |||||
article2.setDescription("Is Really A Happy Day"); | article2.setDescription("Is Really A Happy Day"); | ||||
article2.setTitle("Happy Day"); | article2.setTitle("Happy Day"); | ||||
WxCustomMessage reply = WxCustomMessage.NEWS().toUser("OPENID").addArticle(article1).addArticle(article2).build(); | |||||
WxCpMessage reply = WxCpMessage.NEWS().toUser("OPENID").addArticle(article1).addArticle(article2).build(); | |||||
Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}"); | Assert.assertEquals(reply.toJson(), "{\"touser\":\"OPENID\",\"msgtype\":\"news\",\"articles\":[{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"},{\"title\":\"Happy Day\",\"description\":\"Is Really A Happy Day\",\"url\":\"URL\",\"picurl\":\"PIC_URL\"}]}"); | ||||
} | } |