做者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。java
发送模板消息也叫业务通知,听起来虽然有点陌生,可是在生活当中是常常见到的。这一次,咱们直接来看个效果。json
如上图所示,在咱们的生活中,不管是微商城消费,仍是平常生活消费,均可能收到这种提示,好比订单通知,快递状态通知,银行卡支付通知,都属于业务通知,不少公众号也都实现了这种功能,当触发了某种行为或状态改变,就会发送这么一个消息给你,由于这种消息都是按照必定的的格式来编辑,因此也叫模板消息。小程序
那要怎么才能发送呢?咱们打开开发文档”消息管理”中的”模板消息接口”。
api
要注意的是认证后的服务号才能够申请模板消息的使用权限并得到该权限,不然就只能使用测试号。微信
该页面中介绍了几个接口,咱们主要使用第6个来发送模板消息。
其余的接口主要是为了方便开发者获取或设置公众号的所属行业,好比餐饮,教育等等,若是是正式的公众号,也能够登陆公众平台来进行设置,其余的接口就是获取模板的信息等,若是没需求能够不调用。post
咱们要发送模板消息,第一步是须要建立一个模板,有了模板以后,咱们才能填充内容来进行发送。测试
1.建立模板
建立模板不须要调用接口,在公众号后台便可设置。
图中是测试号中的设置界面。
url
如今咱们来按照下面案例来新建一个模板。可是模板的内容是有必定的规则的,不能随便添加。spa
注意: 一、测试模板的模板ID仅用于测试,不能用来给正式账号发送模板消息 二、为方便测试,测试模板可任意指定内容,但实际上正式账号的模板消息,只能从模板库中得到 三、需为正式账号申请新增符合要求的模板,需使用正式号登陆公众平台,按指引伸请 四、模板内容可设置参数(模板标题不可),供接口调用时使用,参数需以{ {开头,以.DATA}}结尾
模板内容里面的内容若是是不会变更的就能够直接写死,若是是变更的必定要设置成参数。
参数须要以”{
{“这两个左花括号开头,以”.DATA}}”结尾,如上图所示。code
保存以后,微信会给该模板分配一个ID,待咱们要发送模板消息的时候就须要用到这个ID了。
2.发送给用户
打开文档”发送模板消息”
得到发送模板的接口地址:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
使用POST的方式来发送,而且把模板消息的数据以json数据的格式传递到该接口。
咱们先来看看json里面的参数主要有哪些?
实际上,必传的只有 touser接收者,template_id模板id,data模板数据这3个参数,其余的能够不传,若是传了就会有相应的跳转,好比跳转至指定url,或者跳转至小程序。
准备好的json数据:
{ "touser":"OPENID", "template_id":"QI4JojaGvL9-5ynjwFwOSPqH2eWXHpr7ZeseysefKqc", "data":{ "first": { "value":"恭喜你购买成功!", "color":"#173177" }, "product":{ "value":"巧克力", "color":"#173177" }, "amount": { "value":"39.8元", "color":"#173177" }, "time": { "value":"2014年9月22日", "color":"#173177" }, "remark":{ "value":"欢迎再次购买!", "color":"#173177" } } }
把touser改为接收消息的用户的OPENID就能够了 。
建立发送模板的方法:
//发送模板消息的接口 public static final String SEND_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; /** * 发送模板 * */ public static void sendTemplate(String data){ String result = HttpUtil.post(SEND_TEMPLATE_URL.replace("ACCESS_TOKEN", getAccessToken()),data); System.out.println(result); }
getAccessToken方法是上一篇文章自定义菜单的时候已经建立好了,主要是获取咱们调用接口的凭据AccessToken。
运行时把json数据传入到方法中,咱们能够看到打印出来的结果。
{"errcode":0,"errmsg":"ok","msgid":232391810540961792}
errcode为0表明已经发送成功。若是errcode是其余值,请打开文档的错误返回码页面中查找错误信息。
手机上的效果,参考图中红线框: