Skip to content

Commit 490ba06

Browse files
committed
模板消息加入对小程序的支持 #172
1 parent aa49f96 commit 490ba06

File tree

3 files changed

+109
-0
lines changed

3 files changed

+109
-0
lines changed

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,38 @@
1212
public class WxMpTemplateMessage implements Serializable {
1313
private static final long serialVersionUID = 5063374783759519418L;
1414

15+
/**
16+
* 接收者openid
17+
*/
1518
private String toUser;
19+
20+
/**
21+
* 模板ID
22+
*/
1623
private String templateId;
24+
25+
/**
26+
* <pre>
27+
* 跳小程序所需数据,不需跳小程序可不用传该数据
28+
* url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。
29+
* 开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
30+
* </pre>
31+
*/
1732
private String url;
33+
/**
34+
* 模板跳转链接
35+
* @see #url
36+
*/
37+
private MiniProgram miniProgram;
38+
39+
/**
40+
* 模板数据
41+
*/
1842
private List<WxMpTemplateData> data = new ArrayList<>();
1943

44+
public WxMpTemplateMessage() {
45+
}
46+
2047
public String getToUser() {
2148
return this.toUser;
2249
}
@@ -53,6 +80,14 @@ public void addWxMpTemplateData(WxMpTemplateData datum) {
5380
this.data.add(datum);
5481
}
5582

83+
public MiniProgram getMiniProgram() {
84+
return this.miniProgram;
85+
}
86+
87+
public void setMiniProgram(MiniProgram miniProgram) {
88+
this.miniProgram = miniProgram;
89+
}
90+
5691
public String toJson() {
5792
return WxMpGsonBuilder.INSTANCE.create().toJson(this);
5893
}
@@ -61,11 +96,41 @@ public static WxMpTemplateMessageBuilder builder() {
6196
return new WxMpTemplateMessageBuilder();
6297
}
6398

99+
public static class MiniProgram {
100+
private String appid;
101+
private String pagePath;
102+
103+
public MiniProgram() {
104+
}
105+
106+
public MiniProgram(String appid, String pagePath) {
107+
this.appid = appid;
108+
this.pagePath = pagePath;
109+
}
110+
111+
public String getAppid() {
112+
return this.appid;
113+
}
114+
115+
public void setAppid(String appid) {
116+
this.appid = appid;
117+
}
118+
119+
public String getPagePath() {
120+
return this.pagePath;
121+
}
122+
123+
public void setPagePath(String pagePath) {
124+
this.pagePath = pagePath;
125+
}
126+
}
127+
64128
public static class WxMpTemplateMessageBuilder {
65129
private String toUser;
66130
private String templateId;
67131
private String url;
68132
private List<WxMpTemplateData> data = new ArrayList<>();
133+
private MiniProgram miniProgram;
69134

70135
public WxMpTemplateMessageBuilder toUser(String toUser) {
71136
this.toUser = toUser;
@@ -95,12 +160,18 @@ public WxMpTemplateMessageBuilder from(WxMpTemplateMessage origin) {
95160
return this;
96161
}
97162

163+
public WxMpTemplateMessageBuilder miniProgram(MiniProgram miniProgram) {
164+
this.miniProgram = miniProgram;
165+
return this;
166+
}
167+
98168
public WxMpTemplateMessage build() {
99169
WxMpTemplateMessage m = new WxMpTemplateMessage();
100170
m.toUser = this.toUser;
101171
m.templateId = this.templateId;
102172
m.url = this.url;
103173
m.data = this.data;
174+
m.miniProgram = this.miniProgram;
104175
return m;
105176
}
106177
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpTemplateMessageGsonAdapter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ public JsonElement serialize(WxMpTemplateMessage message, Type typeOfSrc, JsonSe
2828
messageJson.addProperty("url", message.getUrl());
2929
}
3030

31+
if(message.getMiniProgram() !=null){
32+
JsonObject miniProgramJson = new JsonObject();
33+
miniProgramJson.addProperty("appid", message.getMiniProgram().getAppid());
34+
miniProgramJson.addProperty("pagepath", message.getMiniProgram().getPagePath());
35+
messageJson.add("miniprogram", miniProgramJson);
36+
}
37+
3138
JsonObject data = new JsonObject();
3239
messageJson.add("data", data);
3340

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package me.chanjar.weixin.mp.bean.template;
2+
3+
import org.testng.annotations.*;
4+
5+
import static org.testng.AssertJUnit.*;
6+
7+
/**
8+
* <pre>
9+
* Created by Binary Wang on 2017-3-30.
10+
* @author <a href="https://github.com/binarywang">binarywang(Binary Wang)</a>
11+
* </pre>
12+
*/
13+
public class WxMpTemplateMessageTest {
14+
@Test
15+
public void testToJson() throws Exception {
16+
WxMpTemplateMessage tm = WxMpTemplateMessage.builder()
17+
.toUser("OPENID")
18+
.templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY")
19+
.miniProgram(new WxMpTemplateMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar"))
20+
.url("http://weixin.qq.com/download")
21+
.build();
22+
23+
tm.addWxMpTemplateData(
24+
new WxMpTemplateData("first", "haahah", "#FF00FF"));
25+
tm.addWxMpTemplateData(
26+
new WxMpTemplateData("remark", "heihei", "#FF00FF"));
27+
28+
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\"}}}");
29+
}
30+
31+
}

0 commit comments

Comments
 (0)