为了保证用户不受到骚扰,在开发者出现需要主动提醒、通知用户时,才允许开发者在公众平台网站中模板消息库中选择模板,选择后获得模板ID,再根据模板ID向用户主动推送提醒、通知消息。
模板消息调用时主要需要模板ID和模板中各参数的赋值内容。请注意:
1.模板中参数内容必须以".DATA"结尾,否则视为保留字;
2.模板保留符号"{{ }}"
具体调用方法
第一步:获取模板ID
通过在模板消息功能的模板库中使用需要的模板,可以获得模板ID。
第二步:请求接口
请注意,URL置空,则在发送后,点击模板消息会进入一个空白页面(ios),或无法点击(android)。
POST请求
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
请求包为一个json:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"topcolor":"#FF0000",
"data":{
"User": {
"value":"黄先生",
"color":"#173177"
},
"Date":{
"value":"06月07日 19时24分",
"color":"#173177"
},
"CardNumber":{
"value":"0426",
"color":"#173177"
},
"Type":{
"value":"消费",
"color":"#173177"
},
"Money":{
"value":"人民币260.00元",
"color":"#173177"
},
"DeadTime":{
"value":"06月07日19时24分",
"color":"#173177"
},
"Left":{
"value":"6504.09",
"color":"#173177"
}
}
}
发送效果图:
事件推送
在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。
1、送达成功时,推送的XML如下:
<xml>
<ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
<FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]&g;</FromUserName>
<CreateTime>1395658920</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
<MsgID>200163836</MsgID>
<Status><![CDATA[success]]></Status>
</xml>
2、送达由于用户拒收(用户设置拒绝接收公众号消息)而失败时,推送的XML如下:
<xml>
<ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
<FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
<CreateTime>1395658984</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
<MsgID>200163840</MsgID>
<Status><![CDATA[failed:user block]]></Status>
</xml>
3、送达由于其他原因失败时,推送的XML如下:
<xml>
<ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
<FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
<CreateTime>1395658984</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
<MsgID>200163840</MsgID>
<Status><![CDATA[failed: system failed]]></Status>
</xml>
返回码说明
在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{
"errcode":0,
"errmsg":"ok",
"msgid":200228332
}
错误时的返回JSON数据,形式类似,错误码请见本页下方返回码说明。
返回码 |
说明 |
-1 |
系统繁忙 |
0 |
请求成功 |
40001 |
验证失败 |
40002 |
不合法的凭证类型 |
40003 |
不合法的OpenID |
40004 |
不合法的媒体文件类型 |
40005 |
不合法的文件类型 |
40006 |
不合法的文件大小 |
40007 |
不合法的媒体文件id |
40008 |
不合法的消息类型 |
40009 |
不合法的图片文件大小 |
40010 |
不合法的语音文件大小 |
40011 |
不合法的视频文件大小 |
40012 |
不合法的缩略图文件大小 |
40013 |
不合法的APPID |
41001 |
缺少access_token参数 |
41002 |
缺少appid参数 |
41003 |
缺少refresh_token参数 |
41004 |
缺少secret参数 |
41005 |
缺少多媒体文件数据 |
41006 |
access_token超时 |
42001 |
需要GET请求 |
43002 |
需要POST请求 |
43003 |
需要HTTPS请求 |
44001 |
多媒体文件为空 |
44002 |
POST的数据包为空 |
44003 |
图文消息内容为空 |
45001 |
多媒体文件大小超过限制 |
45002 |
消息内容超过限制 |
45003 |
标题字段超过限制 |
45004 |
描述字段超过限制 |
45005 |
链接字段超过限制 |
45006 |
图片链接字段超过限制 |
45007 |
语音播放时间超过限制 |
45008 |
图文消息超过限制 |
45009 |
接口调用超过限制 |
46001 |
不存在媒体数据 |
47001 |
解析JSON/XML内容错误 |