模板消息加入对小程序的支持 #172

This commit is contained in:
Binary Wang 2017-03-30 17:59:25 +08:00
parent aa49f96bf1
commit 490ba068c5
3 changed files with 109 additions and 0 deletions

View File

@ -12,11 +12,38 @@ import java.util.List;
public class WxMpTemplateMessage implements Serializable {
private static final long serialVersionUID = 5063374783759519418L;
/**
* 接收者openid
*/
private String toUser;
/**
* 模板ID
*/
private String templateId;
/**
* <pre>
* 跳小程序所需数据不需跳小程序可不用传该数据
* url和miniprogram都是非必填字段若都不传则模板无跳转若都传会优先跳转至小程序
* 开发者可根据实际需要选择其中一种跳转方式即可当用户的微信客户端版本不支持跳小程序时将会跳转至url
* </pre>
*/
private String url;
/**
* 模板跳转链接
* @see #url
*/
private MiniProgram miniProgram;
/**
* 模板数据
*/
private List<WxMpTemplateData> data = new ArrayList<>();
public WxMpTemplateMessage() {
}
public String getToUser() {
return this.toUser;
}
@ -53,6 +80,14 @@ public class WxMpTemplateMessage implements Serializable {
this.data.add(datum);
}
public MiniProgram getMiniProgram() {
return this.miniProgram;
}
public void setMiniProgram(MiniProgram miniProgram) {
this.miniProgram = miniProgram;
}
public String toJson() {
return WxMpGsonBuilder.INSTANCE.create().toJson(this);
}
@ -61,11 +96,41 @@ public class WxMpTemplateMessage implements Serializable {
return new WxMpTemplateMessageBuilder();
}
public static class MiniProgram {
private String appid;
private String pagePath;
public MiniProgram() {
}
public MiniProgram(String appid, String pagePath) {
this.appid = appid;
this.pagePath = pagePath;
}
public String getAppid() {
return this.appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public String getPagePath() {
return this.pagePath;
}
public void setPagePath(String pagePath) {
this.pagePath = pagePath;
}
}
public static class WxMpTemplateMessageBuilder {
private String toUser;
private String templateId;
private String url;
private List<WxMpTemplateData> data = new ArrayList<>();
private MiniProgram miniProgram;
public WxMpTemplateMessageBuilder toUser(String toUser) {
this.toUser = toUser;
@ -95,12 +160,18 @@ public class WxMpTemplateMessage implements Serializable {
return this;
}
public WxMpTemplateMessageBuilder miniProgram(MiniProgram miniProgram) {
this.miniProgram = miniProgram;
return this;
}
public WxMpTemplateMessage build() {
WxMpTemplateMessage m = new WxMpTemplateMessage();
m.toUser = this.toUser;
m.templateId = this.templateId;
m.url = this.url;
m.data = this.data;
m.miniProgram = this.miniProgram;
return m;
}
}

View File

@ -28,6 +28,13 @@ public class WxMpTemplateMessageGsonAdapter implements JsonSerializer<WxMpTempla
messageJson.addProperty("url", message.getUrl());
}
if(message.getMiniProgram() !=null){
JsonObject miniProgramJson = new JsonObject();
miniProgramJson.addProperty("appid", message.getMiniProgram().getAppid());
miniProgramJson.addProperty("pagepath", message.getMiniProgram().getPagePath());
messageJson.add("miniprogram", miniProgramJson);
}
JsonObject data = new JsonObject();
messageJson.add("data", data);

View File

@ -0,0 +1,31 @@
package me.chanjar.weixin.mp.bean.template;
import org.testng.annotations.*;
import static org.testng.AssertJUnit.*;
/**
* <pre>
* Created by Binary Wang on 2017-3-30.
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
* </pre>
*/
public class WxMpTemplateMessageTest {
@Test
public void testToJson() throws Exception {
WxMpTemplateMessage tm = WxMpTemplateMessage.builder()
.toUser("OPENID")
.templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY")
.miniProgram(new WxMpTemplateMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar"))
.url("http://weixin.qq.com/download")
.build();
tm.addWxMpTemplateData(
new WxMpTemplateData("first", "haahah", "#FF00FF"));
tm.addWxMpTemplateData(
new WxMpTemplateData("remark", "heihei", "#FF00FF"));
assertEquals(tm.toJson(), "{\"touser\":\"OPENID\",\"template_id\":\"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY\",\"url\":\"http://weixin.qq.com/download\",\"miniprogram\":{\"appid\":\"xiaochengxuappid12345\",\"pagepath\":\"index?foo=bar\"},\"data\":{\"first\":{\"value\":\"haahah\",\"color\":\"#FF00FF\"},\"remark\":{\"value\":\"heihei\",\"color\":\"#FF00FF\"}}}");
}
}