宝哥软件园

微信公众平台发送模板消息(Java界面开发)

编辑:宝哥软件园 来源:互联网 时间:2021-08-25

前言:最近一直在做微信扫码,推图文消息,发模板消息,感觉学到了很多。今天我们就来总结一下微信公众平台模板消息的发送。因为我在这上面工作了很长时间,一开始很多地方都没看懂,今天就总结一下。

微信公众平台技术文档:模板消息界面

一.概述

模板消息仅用于微信官方账号向用户发送重要服务通知,只能用于符合其要求的服务场景,如刷卡通知、商品购买成功通知等。不支持可能对用户造成骚扰的营销消息,如广告和所有其他消息。

关于使用规则,请注意:

1.所有服务号都可以在功能-添加功能插件看到申请模板消息功能的入口,但只有经过认证的服务号才能申请并获得使用模板消息的权限;2.需要选择公共账户服务所在的两个行业,每个月可以更换一次选择的行业;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)添加模板标题和模板内容

模板标题通俗易懂,模板内容需要设计参数,应以{ {开始,以结束。数据}}。

示例:{{first。数据}}

首先是我们的接口传递的参数。

{ {第一。DATA}}商品:{{keynote1。数据}}价格:{ {注释2。数据}}日期:{ {注释3。数据} } { {备注。数据}}添加后,可以看到模板记录,然后我们需要模板ID。有了模板ID,我们就可以在下一个微信公众平台上按照发送模板消息的界面来实现我们的功能。

第三,发送模板消息

1接口调用请求的描述

Http请求方法: POST

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

2开机自检数据描述

开机自检数据示例如下:

{ 'touser':'OPENID ',' template _ id ' : ' ngqipbwh 8 bufcsegmogfxcv 14j 0 tqleppo 27 izey ty ',' URL ' : ' http://weixin。QQ。com/download ',' mini program ' : { ' appid ' : ' xichengxuapp id 12345 ',' pagepath ' : '索引?foo=bar' },' data ' : { ' first ' : { ' value ' : '恭喜你购买成功!',' color':'#173177' },' keynote1':{ 'value': '巧克力,' color':'#173177' },' keynote 2 ' : { ' value ' : ' 39.8元,' color':'#173177' },' keynote 3 ' : { ' value ' : ' 2014年9月22日,' color':'#173177' },'备注:{ 'value': '欢迎再次购买!' color':'#173177' } } }3参数说明

参数是否必填说明、touser是接收者信息模板_id是模板标识网址否模板跳转链接小型程序否跳小程序所需数据,不需跳小程序可不用传该数据应用编号是所需跳转到的小程序appid(该小程序应用编号必须与发模板消息的公众号是绑定关联关系)页面路径是所需跳转到小程序的具体页面路径,支持带参数,(示例指数?foo=bar)数据是模板数据注:url和小型程序都是非必填字段,若都不传则模板无跳转;若都传,会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时,将会跳转至url。

4 java接口开发

(1)封装请求参数演示

公共类模板数据{私有字符串值;私有字符串颜色;公共字符串GetVaLue(){ 0返回值;}公共void setValue(字符串值){ this . value=value } public String getColor(){ return color;} public void setColor(String color){ this。颜色=颜色;} }公共类微信{私有字符串使用程序私有字符串模板_ id私有字符串全球资源定位器(Uniform Resource Locator)私有映射字符串,模板数据数据;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}公共字符串GetURl(){返回URL} public void setURl(String URL){ this。网址=网址;}公共MapString,TemplateDATa GetDATa(){ 0返回数据;} public void setData(MapString,TemplateDATa data){ this。数据=数据;} } (2)发送模板消息方法

公共类TemplateMessageServiceImpl实现了模板消息服务{私有RestTemplate RestTemplate private String service host=' https://API。微信。QQ。com ';public templates messageserviceimpl(){ rest template=rest模板工厂。makerest template();} @覆盖公共微信响应发送模板消息(字符串accessToken,微信模板微信模板){微信响应微信响应=空字符串网址=新字符串缓冲区(服务主机).追加('/CGI-bin/消息/模板/发送?access_token=').追加(接入令牌).toString();微信回应=休息模板。postforobject(URL、weixinTemplate、WeixinResponse.class、new HashMapString、String());返回微信响应;}}说明:简单理解模板消息发送,首先是获取accessToken,(如何获取请参考:微信公众平台获取access_token)。其次是模板消息的参数封装,最后就是超文本传送协议(超文本传输协议的缩写)的邮政请求。我的超文本传送协议(超文本传输协议的缩写)请求是使用春天的客户端进行请求,就不用我单独写一个超文本传送协议(超文本传输协议的缩写)请求方法,如果没有使用可以写一个超文本传送协议(超文本传输协议的缩写)请求的工具类。

(3)封装响应参数演示

包裹。com。车牌号码。微信。消息。模型;公共类微信响应{私有字符串msgidprivate int errcode私有字符串errmsgppublic 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} @ Override public String toString(){ StringBuffer buf=new StringBuffer(' weixin response[msgid=');buf.append(msgid).追加(',errcode=').追加(错误代码)。追加(',errmsg=').追加(errmsg).追加(']');返回buf。ToString();}}模板消息发送效果:

四、事件推送

在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。

一送达成功时

(1)推送的可扩展置标语言如下

xml ToUserName![CData[GH _ 7f 083739789 a]]/用户名中的用户名![CData[oia2tjegtnoex 76 qejqnrcurxg 8]/来自用户名创建时间1395658920/创建时间MsgType![CDATA[事件]]/MsgType事件![CData[TEMPLATESENDJOBFINISH]]/事件MsgID200163836/MsgID状态![CData[成功]]/状态/xml(2)参数说明

参数说明接收方帐号公众号微信号发件人用户名接收模板消息的用户的openid CreateTime创建时间消息类型消息类型是事件事件事件为模板消息发送结束消息编号消息身份状态发送状态为成功2送达由于用户拒收(用户设置拒绝接收公众号消息)而失败时

(1)推送的可扩展置标语言如下

xml ToUserName![CData[GH _ 7f 083739789 a]]/用户名中的用户名![CData[oia2tjegtnoex 76 qejqnrcurxg 8]/来自用户名创建时间1395658984/创建时间MsgType![CDATA[事件]]/MsgType事件![CData[TEMPLATESENDJOBFINISH]]/事件MsgID200163840/MsgID状态![CData[失败的:用户块]]/状态/xml(2)参数说明

参数说明接收方帐号公众号微信号发件人用户名接收模板消息的用户的openid CreateTime创建时间消息类型消息类型是事件事件事件为模板消息发送结束消息编号消息身份状态发送状态为用户拒绝接收3送达由于其他原因失败时

(1)推送的可扩展置标语言如下

xml ToUserName![CData[GH _ 7f 083739789 a]]/用户名中的用户名![CData[oia2tjegtnoex 76 qejqnrcurxg 8]/来自用户名创建时间1395658984/创建时间MsgType![CDATA[事件]]/MsgType事件![CData[TEMPLATESENDJOBFINISH]]/事件MsgID200163840/MsgID状态![CData[失败的:系统失败]]/状态/xml(2)参数说明

参数说明接收方帐号公众号微信号发件人用户名接收模板消息的用户的openid CreateTime创建时间消息类型消息类型是事件事件事件为模板消息发送结束消息编号消息身份状态发送状态为发送失败(非用户拒绝)以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+