微信小程序通过服务号推送模板消息

前言

公司要做一款新的微信小程序,因为业务需求要加入消息推送。因为之前APP是通过服务号推送给用户消息的,所以微信小程序要做消息推送也是首先想到了通过服务号推送。事实上在使用过程中服务号推送还是非常好用的,简洁又大方,用户接受度高。

逻辑选型

通过百度大法了解到了一些情况,微信小程序通过服务号是需要服务号先授权获取到openid才能推送,针对授权方式了解到了两种不同的方法
方法一
把微信小程序和微信服务号绑定都绑定在微信开放平台上(需要主体相同),在小程序登录时获取用户信息就可以获取微信用户双平台唯一id——unionid
这个方法应该是微信官方比较推荐的,条例清晰,比较容易理解。但是使用这个方法有一个问题需要用到服务器配置,一旦启用服务器配置就不能用微信公众号平台提供的自定义菜单,就很烦。官方文档链接

方法二
微信小程序使用web-view加载web网页使用js的方式调起授权再返回到小程序。听起来有点绕操作起来可行性还是比较高的。服务号授权是可以通过网页js的方式来调起的。附上官方文档链接

开始动手

配置阶段
考虑到公司后续可能会用服务号做自定义菜单导航,所以我选用了第二种方法。使用微信服务号推送需要在微信开放平台上做很多配置,我尽量一一都讲清楚。首先微信服务号的配置如下图所示:
在这里插入图片描述

在这里插入图片描述

模板消息是需要申请的 可以提前申请一下。
在这里插入图片描述
注意,小程序也要配置一下。
在这里插入图片描述
在这里插入图片描述
这是配置在小程序中允许加载的域名,目前支持配置https域名。

代码阶段
小程序端直接新建一个页面,里面只有一个web-view包含着授权的url,其中state是可以自定义的参数,可以带一些必要的参数传过去。

 <web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc4c9d383cedd4e81&redirect_uri=https://sdcminiprogramsever.1cno.com/wechat/authorization/view&response_type=code&scope=snsapi_userinfo&state={{state}}"></web-view>

sever端需要一个跳转到小程序的页面,我也是为了省事直接用了spring boot的template做了一个跳转的页面。代码如下:
在这里插入图片描述
此处是从web-view跳转到小程序中,需要注意两点:1.需要引入微信的JSSDK,附上链接
2.跳转回小程序页时在网上看了很多都是使用的redirectTo在url上带着授权后的openid回到小程序的,但是我跳转的小程序页面包含tabBar的,故只能使用switchTab方法跳转(此处调试了很久,- . -!)。
由于switchTab的url无法携带参数我就直接把小程序openid和服务号openid的绑定部分直接放到了授权这里。代码如下:
在这里插入图片描述
剩下的就只是发送模板消息了,比较简单,官方文档也很清楚,后面贴上文档链接大家可以直接去看,我就写了。链接附上

完结

希望文章能够帮助到大家,二牛与大家共同进步!

### 微信小程序调用API发送服务号模板消息 为了实现从小程序向用户的服务号发送模板消息的功能,需遵循特定的开发流程。此功能依赖于微信公众平台所提供的接口支持。 #### 准备工作 确保已拥有经过认证的服务号,并获取到相应的`AppID` 和 `AppSecret` 。这些信息用于后续请求访问令牌所需的身份验证[^1]。 #### 获取access_token 每次发送模板消息前都需要先取得有效的`access_token` ,这是调用微信开放平台上各类接口的基础凭证之一。可以通过HTTP GET方式请求如下URL来获得: ```http https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET ``` 其中`APPID`和`APPSECRET`应替换为实际应用对应的值。成功响应会返回JSON格式的数据包,内含所需的`access_token`字段。 #### 构建并发送模板消息 构建要发送的消息体结构,具体参数说明可参见官方文档。下面给出Python语言下的简单示例代码片段展示如何构造POST请求以触发消息推送行为: ```python import requests import json url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=TOKEN" data = { "touser": "OPENID", "template_id": "TEMPLATE_ID", "page": "index", "form_id": "FORMID", "data": { "keyword1": {"value": "商品名称"}, "keyword2": {"value": "订单金额"} } } response = requests.post(url, data=json.dumps(data)) print(response.json()) ``` 注意以上代码中的变量均需替换成真实环境里的对应值,比如用户的OpenID、表单id以及具体的关键词内容等。此外,在正式环境中建议加入错误处理逻辑以便更好地应对异常情况。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值