소스 검색

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

master
Binary Wang 8 년 전
부모
커밋
490ba068c5
3개의 변경된 파일109개의 추가작업 그리고 0개의 파일을 삭제
  1. +71
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java
  2. +7
    -0
      weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpTemplateMessageGsonAdapter.java
  3. +31
    -0
      weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java

+ 71
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessage.java 파일 보기

@@ -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;
}
}


+ 7
- 0
weixin-java-mp/src/main/java/me/chanjar/weixin/mp/util/json/WxMpTemplateMessageGsonAdapter.java 파일 보기

@@ -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);



+ 31
- 0
weixin-java-mp/src/test/java/me/chanjar/weixin/mp/bean/template/WxMpTemplateMessageTest.java 파일 보기

@@ -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\"}}}");
}

}

불러오는 중...
취소
저장