微信公众号一次性订阅消息功能开发实践
截止到2021年6月10日,微信公众号测试号是不支持“微信公众号一次性订阅消息”的开发,必须用正式的微信公众号测试,那如何在不影响正式的微信公众号运营的情况下来开发这个小功能呢,请看看笔者的实践。
微信一次性订阅官方开发文档:
https://developers.weixin.qq.com/doc/offiaccount/Message_Management/One-time_subscription_info.html
“微信公众号一次性订阅消息” 和 “订阅通知” 没有关系。。。。。
第一步:在微信公众平台后台开通微信公众号“一次性订阅”接口权限
浏览器访问 https://mp.weixin.qq.com/
扫码后进入管理页面,点击左侧菜单最下方的“接口权限”
找到“一次性订阅消息“, 如果没有开通的话,右边会显示“开通”按钮,按提示申请开通即可,如果已开通则右边会显示“查看模板id”
第二步:测试用户同意授权
参考上面提到的官方开发文档的接口说明构造一个URL
https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=<appid>&scene=<scene>&template_id=<templateId>&redirect_url=<redirect_url>&reserved=test#wechat_redirect
参数说明
<appid>
<scene> 0-10000的场景值,重定向时会传回,这个你自己定好了
<templateId>
注:这个模板id和订阅通知里的模板id没有关系,别弄混了,这个是在接口权限里查,如下图
<redirect_url>
授权后重定向的回调地址,请使用UrlEncode对链接进行处理。 注:要求redirect_url的域名要跟登记的业务域名一致,且业务域名不能带路径。 业务域名需登录公众号,在设置-公众号设置-功能设置里面对业务域名设置。
将构造好的这个URL可以用微信PC版发信息给公众号
然后在PC微信里点击或者在手机里点击,会出现如下界面
点击确认接收或取消,微信服务器就会回调你给的redirect_url
第二步:调用API推送订阅模板消息给到授权微信用户
这个直接看官方接口文档https://developers.weixin.qq.com/doc/offiaccount/Message_Management/One-time_subscription_info.html
参数说明:
access_token : 令牌
可以这样获得 (两小时内有效)
touser : 你要发送消息的微信用户的openid
不知道的话,教你一个简单方法看
Chrome浏览器进入公众号后台打开“用户管理”
浏览器按F12进入开发者工具模式,选择某个微信用户右键“检查”
笔者喜欢用curl做测试,以下是用curl模拟POST测试的示例(里面的数据是假数据,请读者自行替换)注:要用bash执行
curl -X POST -H "Content-Type: application/json; charset=UTF-8" -d '{ "touser":"aaaabbbbcccdddddd", "template_id":"1111222233334445555666", "url":"https://www.baidu.com", "scene":"1001", "title":"report", "data":{ "content":{ "value":"report arrived\nplease view\ntest", "color":"blue" }}}' https://api.weixin.qq.com/cgi-bin/message/template/subscribe?access_token=12323232323232323232322323232323232323645645654654645645654654654654654654654654654654656456456546456546546456
下图就是收到通知的效果
怎么样,笔者全程没有去动过已有的公众号服务器,就达到了调试一次性订阅的作用