微信公众号发送模板消息
程序员文章站
2023-12-28 14:55:46
...
模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准
关于接口文档,请注意:
1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
2、模板中参数内容必须以".DATA"结尾,否则视为保留字;
3、模板保留符号"{{ }}"。
微信提供了以下模板消息相关的接口:获得模板ID、获取模板列表、删除模板、发送模板消息、事件推送接口。
下面以发送购买商品成功通知为例简单介绍模板消息发送。其余的接口文档请自行去微信官方文档查阅。
接口调用说明
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
接口调用示例 {
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"miniprogram":{
"appid":"xiaochengxuappid12345",
"pagepath":"index?foo=bar"
},
"data":{
"first": {
"value":"恭喜你购买成功!",
"color":"#173177"
},
"keyword1":{
"value":"巧克力",
"color":"#173177"
},
"keyword2": {
"value":"39.8元",
"color":"#173177"
},
"keyword3": {
"value":"2014年9月22日",
"color":"#173177"
},
"remark":{
"value":"欢迎再次购买!",
"color":"#173177"
}
}
}
接口调用实现:
1、构建MessageValue类封装data中value和color。
public class MessageValue {
private String value;
private String color;
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;
}
}
2、构建BuySuccessMsgTemp封装消息模板data
public class BuySuccessMsgTemp {
private MessageValue first;
private MessageValue keyword1;
private MessageValue keyword2;
private MessageValue remark;
public MessageValue getFirst() {
return first;
}
public void setFirst(String content) {
first = new MessageValue();
this.first.setColor("#173177");
this.first.setValue(content);
}
public MessageValue getKeyword1() {
return keyword1;
}
public void setKeyword1(String content) {
keyword1 = new MessageValue();
this.keyword1.setColor("#173177");
this.keyword1.setValue(content);
}
public MessageValue getKeyword2() {
return keyword2;
}
public void setKeyword2(String content) {
keyword2 = new MessageValue();
this.keyword2.setColor("#173177");
this.keyword2.setValue(content);
}
public MessageValue getRemark() {
return remark;
}
public void setRemark(String content) {
remark = new MessageValue();
this.remark.setColor("#173177");
this.remark.setValue(content);
}
}
3、构建TemplateMessageData封装消息模板数据
public class TemplateMessageData implements Serializable {
private String touser;
private String template_id;
private String url;
private Object data;
public String getTouser() {
return touser;
}
public void setTouser(String touser) {
this.touser = touser;
}
public String getTemplate_id() {
return template_id;
}
public void setTemplate_id(String template_id) {
this.template_id = template_id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
4、构建TemplateMessageService服务发送模板消息
public class TemplateMessageService extends BaseService{
public void pushVendorBuySuccessMsg(Order order, List<OrderDetail> orderDetailList, String recordTitle) {
try {
List<NameValuePair> nameValuePairs = new ArrayList<>();
nameValuePairs.add(new BasicNameValuePair("access_token", this.getAccessToken()));
//构建模板消息
TemplateMessageData data = new TemplateMessageData();
data.setTemplate_id("");
data.setTouser("open_id");
data.setUrl("");
//构建模板消息中的数据
BuySuccessMsgTemp temp = new BuySuccessMsgTemp();
temp.setFirst("谢谢您长得这么好看,还来看我~");
temp.setKeyword1("取餐码");
temp.setKeyword2("订单交易号");
temp.setRemark("请您22:00到京蒙高科取餐,谢谢");
data.setData(temp);
Gson gson = new GsonBuilder().create();
String content = gson.toJson(data);
String sendPostResult = sendPost(nameValuePairs, content);
//打印模板消息的日志
logger.info("send post template content = {}, result = {}", content, sendPostResult);
} catch (Exception e) {
logger.error("pushVendorBuySuccessMsg error order:{}", order, e);
}
}
}
其中BaseService是实现HTTP请求交互抽象类
微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277