手机版

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

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

最近一直在做微信小程序。为了让用户更容易获得小程序内部的通知,我考虑使用模板消息来解决这样的问题。首先,介绍两种方法

第一种是根据微信开发文档获取模板消息的传统方式。首先要明确的是,你要有第三方服务器,因为微信现在规定你不能直接在小程序里面请求微信服务器,但是你要请求。第三方服务器,请求微信服务器的第三方服务器,

1.实现模板消息的传统方式

1.1获取用户openId

这个步骤可以在wx.login方法中获得,该方法用于标记模板消息的接收者

1.2获取模板标识

有两种方法可以获取模板标识

通过模板消息管理界面获取模板ID(在微信公众平台上手动配置获取模板ID,登录https://mp.weixin.qq.com获取模板。如果没有合适的模板,可以申请添加新模板,审批通过后使用。

1.3获取访问令牌

Access_token是全局唯一的接口调用凭据,开发者在调用每个接口时都需要用到access_token,请妥善保管。至少应保留512个字符空间用于存储access_token。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将无效,所以拥有多个微信官方账号和小程序的开发者一定要注意这一点!

接口地址:

https://api.weixin.qq.com/cgi-bin/token?grant _ type=client _ credential appid=APPIDsecret=APPSECRET

HTTP请求方法:

得到

参数描述:

参数必需描述grant_type是获取access_token,client_credential appid是第三方用户的唯一凭证,secret是第三方用户的唯一凭证密钥,即appsecret代码:

function onRequest(请求、响应、模块){ var http=modules.oHttp//发起Get请求http(' https://API . weixin . QQ.com/CGI-bin/token?grant _ type=client _ credential appid=XXXsecret=XXX ',函数(error,res,body){ response . send(body);});}返回结果:

响应正文{ '代码' : 200,' msg ' : { ' access _ token ' : ' 6 _ r8 kofxrlerertwoq _ haiu 29 xb0 hbaokxfgqqtzt _ HhzCSEvT _ xdj4 lgf9a _ dt2prtcugfuk 7 ikxr2sfu 5zkcwkkwhctqlrqhdjmcxmkaadedw 7 au 98d 23 rujo5 pyrunyolq 3 ph3a vtanidaewc ' '

接口地址:(需要用上面获得的ACCESS_TOKEN替换access_token)

https://API . weixin . QQ.com/CGI-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

HTTP请求模式:

邮政

开机自检参数说明:

参数必选描述:touser是接收方(用户)的openid template_id是要分发的模板消息的id页;如果你点击模板卡,它只是这个小程序中的页面。支持带参数,(示例索引?foo=bar ).如果未填写此字段,模板将不会跳转。form_id是表单id;表单提交场景中提交事件带来的;在付款场景中,该付款的predater _ id数据是模板内容。如果没有填写,会分配空白模板颜色,不会使用默认的黑色强调_关键字来放大模板。如果没有填写,默认不会有放大的formid描述。如果页面的表单/组件为真,则可以声明需要发送模板消息。这时,点击按钮report-submit表单获取formId代码3360。

Vartemp={'touser' : touser,//用户的OpenID ' template _ ID ' : template _ ID,//模板ID' page' : ' ',' form _ ID' : form ID,//form ID ' data ' : { ' key word 1 ' : { ' value ' : title,' color' :' # 173177'},' keyword2 ' : '

2.基于Bmob后端云的模板消息实现

第一种方法实现起来太麻烦,还需要中间服务器的帮助。如果没有中间服务器或者服务器端的代码不熟悉,那么Bmob后端云可以帮你实现想要的功能。

只需根据官网文档下载小程序中初始化的Bmob,然后就可以调用Bmob模板消息的方法了,如下图

函数send(title,formid,touser){ var Bmob=require(' Bmob . js ');var temp={ 'touser': touser,' template _ id ' : ' clyq9lc 8 BZ h 26um 993 niknasavbdk 0 wsyndrkclk 40 ',' page': ' ',' form_id': formid,' data ' : { ' keyword 1 ' : { ' value ' : title,' color': '#173177' },' keyword然后(function(obj){ console . log(‘发送成功’);},函数(err){ common . show tip(' failed ' err)});}这样模板消息就解决了

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:微信小程序模板消息推送的两种实现方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。