前置条件
申请一个微信公众号服务号,获取公众号的appid和appSecret。
推送的模板消息示例
推送示例
示例页面
设置模板消息
首次设置需要开启模板消息功能,使用软件开发平台登录公众号后台: mp.weixin.qq.com ,在左侧导航栏最下方有「添加新的功能」,打开,在「广告与服务」一类中找到「模板消息」,开通即可。打开「模板消息」,选择模板库,需先选择所在行业(一个月只能修改一次),之后在下方的行业模板中选择合适的模板(可以搜索模板关键字)。
添加完选择的模板后在「我的模板」中可以查看模板的详细信息,此处的模板ID后面代码中会用到。
以下附上我们需要用到的两个官方接口:
//微信获取ACCESS_TOKEN API public static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET"; //微信模板消息推送 API public static final String MESSAGE_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN"; 第一个接口为获取access_token,它是调用接口的凭证,在调用其他接口前必须先调用此接口获取access_token(请将自己的微信公众号的appid和appSecret替换接口地址中的APPID和SECRET)。此接口返回示例如下(返回结果是一个json数据包,注意access_token的有效期为7200s,也就是2小时,且此接口的调用频次为日限2000,如果你的推送用户量大,请把返回的access_token放到缓存中缓存一段时间,节约网络资源,从我做起。:)。另外,调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。 { "access_token":"25_vdgBGnGbfY1bE9e0xOw-mHTROXh6xUXwCANb49jjEQ_Eu4iyhW2MqSmA1UZf7oGelW9AjLGzICvhOJcAqLaxDRVBLmwkeLDEPwQ0YbDN7-wdYza47x-WYDY0lvbFJX3ejIMu6xwnQZGlN2Um1SXHTXSeAD5AHLG", "expires_in":7200 }
第二个接口即为推送消息模板的关键性接口,模板消息的推送就是依靠此接口完成的,但是注意,需要将第一个接口返回的access_token解析拿出来替换这个接口地址中的ACCESS_TOKEN。(以下为此接口的请求体,封装成一个数据传输对象dto,然后转成json)
{ "touser":"OPENID", // 接收模板消息的用户 "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", //公众号中配置的消息模板对应的模板ID "url":"http://weixin.qq.com/download", //想要跳转的路径 "miniprogram":{ //需要跳转的小程序的appid和页面 "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" } } }
注意:请务必根据微信公众平台的技术文档按照规范封装数据请求体。
注:url和miniprogram都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。
获取用户openId步骤请见<<软件开发平台微信公众号消息推送机制>>文章