| @@ -1,14 +1,13 @@ | |||||
| package me.chanjar.weixin.mp.bean.subscribe; | package me.chanjar.weixin.mp.bean.subscribe; | ||||
| import java.io.Serializable; | |||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | import lombok.Builder; | ||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; | |||||
| import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; | ||||
| import java.io.Serializable; | |||||
| /** | /** | ||||
| * @author Mklaus | * @author Mklaus | ||||
| * @date 2018-01-22 下午12:18 | * @date 2018-01-22 下午12:18 | ||||
| @@ -78,5 +77,11 @@ public class WxMpSubscribeMessage { | |||||
| private String appid; | private String appid; | ||||
| private String pagePath; | private String pagePath; | ||||
| /** | |||||
| * 是否使用path,否则使用pagepath. | |||||
| * 加入此字段是基于微信官方接口变化多端的考虑 | |||||
| */ | |||||
| private boolean usePath = false; | |||||
| } | } | ||||
| } | } | ||||
| @@ -77,6 +77,12 @@ public class WxMpTemplateMessage implements Serializable { | |||||
| private String appid; | private String appid; | ||||
| private String pagePath; | private String pagePath; | ||||
| /** | |||||
| * 是否使用path,否则使用pagepath. | |||||
| * 加入此字段是基于微信官方接口变化多端的考虑 | |||||
| */ | |||||
| private boolean usePath = true; | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,13 +1,13 @@ | |||||
| package me.chanjar.weixin.mp.util.json; | package me.chanjar.weixin.mp.util.json; | ||||
| import java.lang.reflect.Type; | |||||
| 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 me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage; | import me.chanjar.weixin.mp.bean.subscribe.WxMpSubscribeMessage; | ||||
| import java.lang.reflect.Type; | |||||
| /** | /** | ||||
| * @author Mklaus | * @author Mklaus | ||||
| * @date 2018-01-22 下午12:31 | * @date 2018-01-22 下午12:31 | ||||
| @@ -24,10 +24,15 @@ public class WxMpSubscribeMessageGsonAdapter implements JsonSerializer<WxMpSubsc | |||||
| messageJson.addProperty("url", message.getUrl()); | messageJson.addProperty("url", message.getUrl()); | ||||
| } | } | ||||
| if (message.getMiniProgram() != null) { | |||||
| final WxMpSubscribeMessage.MiniProgram miniProgram = message.getMiniProgram(); | |||||
| if (miniProgram != null) { | |||||
| JsonObject miniProgramJson = new JsonObject(); | JsonObject miniProgramJson = new JsonObject(); | ||||
| miniProgramJson.addProperty("appid", message.getMiniProgram().getAppid()); | |||||
| miniProgramJson.addProperty("pagepath", message.getMiniProgram().getPagePath()); | |||||
| miniProgramJson.addProperty("appid", miniProgram.getAppid()); | |||||
| if (miniProgram.isUsePath()) { | |||||
| miniProgramJson.addProperty("path", miniProgram.getPagePath()); | |||||
| } else { | |||||
| miniProgramJson.addProperty("pagepath", miniProgram.getPagePath()); | |||||
| } | |||||
| messageJson.add("miniprogram", miniProgramJson); | messageJson.add("miniprogram", miniProgramJson); | ||||
| } | } | ||||
| @@ -9,6 +9,9 @@ import com.google.gson.JsonSerializer; | |||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; | import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; | ||||
| import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; | import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; | ||||
| /** | |||||
| * @author chanjarster | |||||
| */ | |||||
| public class WxMpTemplateMessageGsonAdapter implements JsonSerializer<WxMpTemplateMessage> { | public class WxMpTemplateMessageGsonAdapter implements JsonSerializer<WxMpTemplateMessage> { | ||||
| @Override | @Override | ||||
| @@ -20,10 +23,15 @@ public class WxMpTemplateMessageGsonAdapter implements JsonSerializer<WxMpTempla | |||||
| messageJson.addProperty("url", message.getUrl()); | messageJson.addProperty("url", message.getUrl()); | ||||
| } | } | ||||
| if (message.getMiniProgram() != null) { | |||||
| final WxMpTemplateMessage.MiniProgram miniProgram = message.getMiniProgram(); | |||||
| if (miniProgram != null) { | |||||
| JsonObject miniProgramJson = new JsonObject(); | JsonObject miniProgramJson = new JsonObject(); | ||||
| miniProgramJson.addProperty("appid", message.getMiniProgram().getAppid()); | |||||
| miniProgramJson.addProperty("pagepath", message.getMiniProgram().getPagePath()); | |||||
| miniProgramJson.addProperty("appid", miniProgram.getAppid()); | |||||
| if (miniProgram.isUsePath()) { | |||||
| miniProgramJson.addProperty("path", miniProgram.getPagePath()); | |||||
| } else { | |||||
| miniProgramJson.addProperty("pagepath", miniProgram.getPagePath()); | |||||
| } | |||||
| messageJson.add("miniprogram", miniProgramJson); | messageJson.add("miniprogram", miniProgramJson); | ||||
| } | } | ||||
| @@ -33,7 +33,7 @@ public class WxMpSubscribeMessageTest { | |||||
| .toUser("OPENID") | .toUser("OPENID") | ||||
| .templateId("TEMPLATE_ID") | .templateId("TEMPLATE_ID") | ||||
| .url("URL") | .url("URL") | ||||
| .miniProgram(new WxMpSubscribeMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar")) | |||||
| .miniProgram(new WxMpSubscribeMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar",false)) | |||||
| .scene("SCENE") | .scene("SCENE") | ||||
| .title("TITLE") | .title("TITLE") | ||||
| .contentValue("VALUE") | .contentValue("VALUE") | ||||
| @@ -17,7 +17,7 @@ public class WxMpTemplateMessageTest { | |||||
| WxMpTemplateMessage tm = WxMpTemplateMessage.builder() | WxMpTemplateMessage tm = WxMpTemplateMessage.builder() | ||||
| .toUser("OPENID") | .toUser("OPENID") | ||||
| .templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY") | .templateId("ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY") | ||||
| .miniProgram(new WxMpTemplateMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar")) | |||||
| .miniProgram(new WxMpTemplateMessage.MiniProgram("xiaochengxuappid12345", "index?foo=bar",true)) | |||||
| .url("http://weixin.qq.com/download") | .url("http://weixin.qq.com/download") | ||||
| .build(); | .build(); | ||||