微信小程序模板消息推送的两种实现方式

微信小程序模板消息推送的两种实现方式

2023年7月2日发(作者:)

微信⼩程序模板消息推送的两种实现⽅式最近在做微信⼩程序,为了让⽤户能更加⽅便的获取到⼩程序内部的通知,便想着⽤模板消息来解决此类问题。⾸先介绍⼀下两种⽅法第⼀种是传统的按照微信开发⽂档来实现模板消息的获取,⾸先要明确的是你要有⼀个第三⽅的服务器,因为微信现在规定在⼩程序内部不能直接请求微信的服务器,⽽是要请求第三⽅服务器,由第三⽅服务器来请求微信的服务器1.传统⽅式实现模板消息1.1获取⽤户openId这⼀步可以在⽅法内获取,⽤来标注模板消息的接受者1.2获取模板ID有两个⽅法可以获取模版ID1.3获取access_tokenaccess_token 是全局唯⼀接⼝调⽤凭据,开发者调⽤各接⼝时都需使⽤ access_token,请妥善保存。access_token 的存储⾄少要保留512个字符空间。access_token 的有效期⽬前为2个⼩时,需定时刷新,重复获取将导致上次获取的 access_token 失效。公众平台的 API 调⽤所需的 access_token 的使⽤及⽣成⽅式说明:为了保密 appsecrect,第三⽅需要⼀个 access_token 获取和刷新的中控服务器。⽽其他业务逻辑服务器所使⽤的 access_token 均来⾃于该中控服务器,不应该各⾃去刷新,否则会造成access_token 覆盖⽽影响业务;⽬前 access_token 的有效期通过返回的 expires_in 来传达,⽬前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新 access_token。在刷新过程中,中控服务器对外输出的依然是⽼ access_token,此时公众平台后台会保证在刷新短时间内,新⽼ access_token 都可⽤,这保证了第三⽅业务的平滑过渡;access_token 的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新 access_token 的接⼝,这样便于业务服务器在 API 调⽤获知 access_token 已超时的情况下,可以触发 access_token 的刷新流程。开发者可以使⽤ AppID 和 AppSecret 调⽤本接⼝来获取 access_token。AppID 和 AppSecret 可登录微信公众平台官⽹-设置-开发设置中获得(需要已经绑定成为开发者,且帐号没有异常状态)。AppSecret ⽣成后请⾃⾏保存,因为在公众平台每次⽣成查看都会导致 AppSecret 被重置。注意调⽤所有微信接⼝时均需使⽤ https 协议。如果第三⽅不使⽤中控服务器,⽽是选择各个业务逻辑点各⾃去刷新 access_token,那么就可能会产⽣冲突,导致服务不稳定。以上内容是微信开发⽂档给出的access_token的说明,总的来说就是两点,(1)access_token是发送模板消息的凭证,需要⽤微信⼩程序的AppID 和AppSecret 调⽤接⼝来获取,有效时间为2⼩时,(2)如果在此获取access_token则会导致前⼀个access_token失效,有多个公众号和⼩程序的开发者⼀定要注意这⼀点!接⼝地址:HTTP请求⽅式:GET参数说明 :参数appidsecret代码:function onRequest(request, response, modules) {var http = ;//发起Get请求http('/cgi-bin/token?grant_type=client_credential&appid=XXX&secret=XXX', function (error, res, body) { (body);});}

必填是是说明获取 access_token 填写 client_credential第三⽅⽤户唯⼀凭证第三⽅⽤户唯⼀凭证密钥,即appsecretgrant_type是返回结果:Response Body { "code": 200, "msg": {"access_token":"6_R8kOFxRLeRtWOq_haIU29XB0hbAoKxFGRqQTZt_HhzCSEvT_xDJ4WLgf9A_dt2pRTCugfUk7IkxR2sfu5zckCwKKWEghCtqlrrQlhdJmCxmkBAaDEdW7AU98D23rUJO5PYruNYOLQ3cpH3iAVTNiADAECW","expires_in":7200} }1.4发送模板消息接⼝地址:(ACCESS_TOKEN 需换成上⽂获取到的 access_token)HTTP请求⽅式:POSTPOST参数说明:参数tousertemplate_idpageform_iddatacolor必填是接收者(⽤户)的 openid是所需下发的模板消息的id否是点击模板卡⽚后的跳转页⾯,仅限本⼩程序内的页⾯。⽀持带参数,(⽰例index?foo=bar)。该字段不填则模板⽆跳转。表单提交场景下,为 submit 事件带上的 formId;⽀付场景下,为本次⽀付的 prepay_id说明是模板内容,不填则下发空模板否模板内容字体的颜⾊,不填默认⿊⾊emphasis_keyword否模板需要放⼤的关键词,不填则默认⽆放⼤formid说明:页⾯的

组件,属性report-submit为true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId代码:var temp = {"touser": touser,//⽤户的openid"template_id": template_id,//模板id"page": "","form_id": formid,//表单id"data": {"keyword1": {"value": title,"color": "#173177"},"keyword2": {"value": gettime()},},"emphasis_keyword": "" //将keyword1放⼤}1.5测试效果2.基于Bmob后端云的模板消息实现第⼀种⽅法实现起来过于繁琐,在使⽤过程中也要中间服务器的帮助,如果没有中间服务器,或者服务器端的代码不太熟悉,那么Bmob后端云则可以帮助你实现你要的功能只需要下载按照官⽹⽂档在⼩程序内初始化好Bmob,那么就可以调⽤Bmob模板消息的⽅法,如下所⽰function send(title, formid, touser){ var Bmob = require(''); var temp = { "touser": touser, "template_id": "ClYq9lc8bZh26uM993NNIknasAVBdk0wSYnDrkClK40", "page": "", "form_id": formid, "data": { "keyword1": { "value": title, "color": "#173177" }, "keyword2": { "value": gettime() },

}, "emphasis_keyword": "" }

ssage(temp).then(function (obj) { ('发送成功'); }, function (err) { p('失败' + err) });}这样模板消息就解决了以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688278814a112419.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信