微信开发 - 推送模板消息
微信模板消息推送
微信模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
那么,如何通过模板消息接口发送模板消息。大概分为三个部分:
- 申请模板消息功能插件
- 构造模板消息体
- 发送模板消息
一、申请添加模板消息功能插件
模板消息只对认证的服务号开放。
在微信公众平台的后台,依次进入“功能->添加功能插件->模板消息”,即可申请模板消息。
点击申请
申请时,需要选择公众账号服务所处的2个行业,每月可更改1次所选行业,并且账号仅可使用所属行业中相关的模板
提交,等待申请通过后,可在模板库中看到模板消息列表
进入想要使用的模板,点击添加
添加后就存放到“我的模板”库中了
查看模板的详情,可以看到模板的id及各项内容参数名
不同的模板消息的内容结构不一样。这些ID及字段名将在程序中使用到。
当然,如果在模板库中找不到自己所需模板,可在模板库列表页点击右边的“帮助我们完善模板库”,自定义模板。
阅读《模板消息申请添加前必读指引》后,点确认,进入添加自定义模板页,每月只能自定义三个模板
点击下一步等待审核,审核通过后就可以使用自定义的模板
二、构造模板消息体
以一个信用卡还款提醒的模板为例,它的内容如下:
并根据微信模板消息接口,可知POST请求参数格式如下:
按照上述内容及格式,构造模板消息体如下:
def templateData() { def data = [:] data.put("first", [value: "尊敬的张三,您名下的:"]) data.put("OPERATE", [value: "招商银行", color:"#173177"]) data.put("AMT", [value: "1234", color:"#173177"]) data.put("STATUS", [value: "13日", color:"#173177"]) data.put("DATE", [value: "1234元", color:"#173177"]) data.put("REMARK", [value: "备注:请及时还款,避免逾期"]) def templateData = [:] templateData.put("touser", "ovBRNwCc6wigvmThgCEEOh7lRwMY") templateData.put("template_id", "hLIrwUMBOq0Er3AmhxUTCp_aOGk-uJnjVYgKSnRSSSg") templateData.put("url", "") templateData.put("data", data) return templateData }
其中,touser 为要推送者的openid,template_id为所选消息模板的id
三、发送模板消息
模板消息是使用access_token作为授权来发送
获取access_token值,请参照:http://hellolove.iteye.com/blog/2333874
def sendMessage() { def accessToken = getAccessToken() def templateData = templateData() def params = JsonOutput.toJson(templateData) String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN" requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken) URL url = new URL(requestUrl) HttpURLConnection connection = (HttpURLConnection) url.openConnection() connection.setDoOutput(true) connection.setRequestMethod("POST") connection.setRequestProperty("Content-Type", "application/json") connection.outputStream.withWriter { Writer writer -> writer.write params } if (connection.getResponseCode() == 200) { def result = connection.inputStream.withReader { Reader reader -> reader.text } return result } else { return 0 } }
调用发送方法,实现效果如下如示:
参考文档:
https://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html
http://www.cnblogs.com/txw1958/p/wechat-template-message.html