石家庄市环保局网站建设项目备案系统,免费下载个人简历表格,做网站一年费用,橙象品牌设计前言#xff1a;最近一直再弄微信扫码推送图文消息和模板消息发送#xff0c;感觉学习到了不少东西。今天先总结一下微信公众平台模板消息的发送。因为这个自己弄了很久#xff0c;开始很多地方不明白#xff0c;所以今天好好总结一下。微信公众平台技术文档#xff1a;模…前言最近一直再弄微信扫码推送图文消息和模板消息发送感觉学习到了不少东西。今天先总结一下微信公众平台模板消息的发送。因为这个自己弄了很久开始很多地方不明白所以今天好好总结一下。微信公众平台技术文档模板消息接口一、概述模板消息仅用于公众号向用户发送重要的服务通知只能用于符合其要求的服务场景中如信用卡刷卡通知商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。关于使用规则请注意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(template_id)。微信公众平台发送模板消息有严格的要求参考模板消息运营规范。二、模板消息的设计这里是依靠微信公众平台测试公众号的模板消息接口来设计消息模板通过行业类型来获取模板的同学还是参考微信公众平台的官方文档来学习。1 新增模板消息微信的测试公众号为我们提供了测试的消息模板最多可添加10个(感觉够用毕竟只是测试)新增测试模板。(1)添加模板标题和模板内容模板标题比较好理解模板内容需要设计参数参数需以{{开头以.DATA}}结尾。例如{{first.DATA}}first就是我们接口传的参数。{{first.DATA}}商品{{keynote1.DATA}}价格{{keynote2.DATA}}日期{{keynote3.DATA}}{{remark.DATA}}新增之后就可以看到模板记录就有我们需要的模板ID了。有了模板ID我们就可以按照接下来的微信公众平台发送模板消息接口来实现我们的功能。三、发送模板消息1 接口调用请求说明http请求方式: POSThttps://api.weixin.qq.com/cgi-bin/message/template/send?access_tokenACCESS_TOKEN2 POST数据说明POST数据示例如下{touser:OPENID,template_id:ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY,url:http://weixin.qq.com/download,miniprogram:{appid:xiaochengxuappid12345,pagepath:index?foobar},data:{first: {value:恭喜你购买成功,color:#173177},keynote1:{value:巧克力,color:#173177},keynote2: {value:39.8元,color:#173177},keynote3: {value:2014年9月22日,color:#173177},remark:{value:欢迎再次购买,color:#173177}}}3 参数说明参数是否必填说明、touser是接收者openidtemplate_id是模板IDurl否模板跳转链接miniprogram否跳小程序所需数据不需跳小程序可不用传该数据appid是所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系)pagepath是所需跳转到小程序的具体页面路径支持带参数,(示例index?foobar)data是模板数据注url和miniprogram都是非必填字段若都不传则模板无跳转若都传会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时将会跳转至url。4 java接口开发(1)封装请求参数Demopublic class TemplateData {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;}}public class WechatTemplate {private String touser;private String template_id;private String url;private Map 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 Map getData() {return data;}public void setData(Map data) {this.data data;}}(2)发送模板消息方法public class TemplateMessageServiceImpl implements TemplateMessageService{private RestTemplate restTemplate ;private String serviceHost https://api.weixin.qq.com;public TemplateMessageServiceImpl() {restTemplate RestTemplateFactory.makeRestTemplate();}Overridepublic WeixinResponse sendTemplateMessage(String accessToken, WeixinTemplate weixinTemplate) {WeixinResponse weixinResponse null;String url new StringBuffer(serviceHost).append(/cgi-bin/message/template/send?access_token).append(accessToken).toString();weixinResponse restTemplate.postForObject(url, weixinTemplate, WeixinResponse.class,new HashMap());return weixinResponse;}}说明简单理解模板消息发送首先是获取accessToken(如何获取请参考微信公众平台 获取access_token)。其次是模板消息的参数封装最后就是http的post请求。我的http请求是使用Spring的restTemplate进行请求就不用我单独写一个http请求方法如果没有使用可以写一个http请求的工具类。(3)封装响应参数Demopackage com.plateno.weixin.message.model;public class WeixinResponse {private String msgid;private int errcode;private String errmsg;public String getMsgid() {return msgid;}public void setMsgid(String msgid) {this.msgid msgid;}public int getErrcode() {return errcode;}public void setErrcode(int errcode) {this.errcode errcode;}public String getErrmsg() {return errmsg;}public void setErrmsg(String errmsg) {this.errmsg errmsg;}Overridepublic String toString() {StringBuffer buf new StringBuffer(WeixinResponse[msgid);buf.append(msgid).append(,errcode).append(errcode).append(,errmsg).append(errmsg).append(]);return buf.toString();}}模板消息发送效果四、事件推送在模版消息发送任务完成后微信服务器会将是否送达成功作为通知发送到开发者中心中填写的服务器配置地址中。1 送达成功时(1)推送的XML如下1395658920200163836(2)参数说明参数说明ToUserName公众号微信号FromUserName接收模板消息的用户的openidCreateTime创建时间MsgType消息类型是事件Event事件为模板消息发送结束MsgID消息idStatus发送状态为成功2 送达由于用户拒收(用户设置拒绝接收公众号消息)而失败时(1)推送的XML如下1395658984200163840(2)参数说明参数说明ToUserName公众号微信号FromUserName接收模板消息的用户的openidCreateTime创建时间MsgType消息类型是事件Event事件为模板消息发送结束MsgID消息idStatus发送状态为用户拒绝接收3 送达由于其他原因失败时(1)推送的XML如下1395658984200163840(2)参数说明参数说明ToUserName公众号微信号FromUserName接收模板消息的用户的openidCreateTime创建时间MsgType消息类型是事件Event事件为模板消息发送结束MsgID消息idStatus发送状态为发送失败(非用户拒绝)以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。