diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java index 084c8ee0..8a843e94 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java @@ -88,6 +88,7 @@ public class WxConsts { public static final String EVT_PIC_PHOTO_OR_ALBUM = "pic_photo_or_album"; public static final String EVT_PIC_WEIXIN = "pic_weixin"; public static final String EVT_LOCATION_SELECT = "location_select"; + public static final String EVT_TEMPLATESENDJOBFINISH = "TEMPLATESENDJOBFINISH"; /////////////////////// // 上传多媒体文件的类型 diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java index 4b3a20fc..3beb5406 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java @@ -306,7 +306,17 @@ public interface WxMpService { * @throws WxErrorException */ public String shortUrl(String long_url) throws WxErrorException; - + + /** + *
+ * 发送模板消息 + * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=模板消息接口 + *+ * @param templateMessage + * @throws WxErrorException + */ + public void templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException; + /** * 注入 {@link WxMpConfigStorage} 的实现 * @param wxConfigProvider diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java index c40af33d..a2834a9a 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java @@ -31,6 +31,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; @@ -272,7 +273,12 @@ public class WxMpServiceImpl implements WxMpService { JsonElement tmpJsonElement = Streams.parse(new JsonReader(new StringReader(responseContent))); return tmpJsonElement.getAsJsonObject().get("short_url").getAsString(); } - + + public void templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException { + String url = "https://api.weixin.qq.com/cgi-bin/message/template/send"; + execute(new SimplePostRequestExecutor(), url, templateMessage.toJson()); + } + /** * 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求 * @param executor diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateData.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateData.java new file mode 100644 index 00000000..e328fe85 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateData.java @@ -0,0 +1,49 @@ +package me.chanjar.weixin.mp.bean; + +/** + * @author Daniel Qian + */ +public class WxMpTemplateData { + + private String name; + private String value; + private String color; + + public WxMpTemplateData() { + } + + public WxMpTemplateData(String name, String value) { + this.name = name; + this.value = value; + } + + public WxMpTemplateData(String name, String value, String color) { + this.name = name; + this.value = value; + this.color = color; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getColor() { + return color; + } + public void setColor(String color) { + this.color = color; + } + +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateMessage.java new file mode 100644 index 00000000..cd6ac5f7 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpTemplateMessage.java @@ -0,0 +1,62 @@ +package me.chanjar.weixin.mp.bean; + +import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by qianjia on 14/11/1. + */ +public class WxMpTemplateMessage { + + private String toUser; + private String templateId; + private String url; + private String topColor; + private List