![95df665cd60773e348679c4716ada07b.png](https://i-blog.csdnimg.cn/blog_migrate/3fa6713c9d5c82d832a8e4b1d6559ddd.jpeg)
最近我们这几周在做小程序项目,期间涉及到了小程序的订阅消息,用户可以主动订阅或退订。所有消息由“服务通知”下发,并附带小程序外链入口,支持用户点击消息进入小程序,效果图是这样的。订阅消息给小程序开发者带来了更好的触达用户的能力。
![ba88218f6322b3744f3c991f72ac82fa.png](https://i-blog.csdnimg.cn/blog_migrate/c7fb0178be990b3104e92ae056e4f2b9.jpeg)
先调用小程序的https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s接口获取ACCESS_TOKEN,然后调用发送订阅消息的接口地址,是https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN,请求方式是POST请求。请求参数有用户的 openid,所需下发的订阅模板id,模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } }。发消息之前,要先申请一个模板。申请完模板选用后,配置关键词和使用场景。
成功调用接口后小程序的某个用户会收到上图中的信息,下面是代码。
def get_access_token():
"""获取access_token"""
redis_access_token = redishelper.get_access_token()
if redis_access_token:
return redis_access_token
appid = 小程序appid
secret = 小程序密钥
url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s" % (appid, secret)
res = requests.get(url, timeout=3).json()
# {'access_token': '26_BE30rpxUANOOVFfh5jomKxL9OFsGJem_LtjV28dBaRApOH3cYJhNuuZLgW-DkYGWge4EW3qk1c8P94aT6VrmMppbuxO9M3z4xrPc5JcGi-wcy54bBZzJWem_WP8Rh6fc744rjKQ-IxWy4D0iEHEeAAAMPM',
# 'expires_in': 7200}
access_token = res.get("access_token", None)
expires_in = res.get("expires_in", 1)
if access_token:
redishelper.set_access_token(access_token, expires_in)
return access_token
def base_send_mini_sub_msg(post_data):
"""发送订阅消息"""
api = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s" % get_access_token()
result = requests.post(api, json=post_data, timeout=3).json()
print(result)
errcode = result.get("errcode")
if errcode == 0:
return True
def test_msg():
post_data = {
"touser": "用户的open_id", # 具体获取方法自行百度
"template_id": "消息订阅模板id",
"data": {
"thing1": {
"value": "测试"
},
"number2": {
"value": 2
},
"phrase3": {
"value": "已支付"
},
"amount4": {
"value": 225
},
},
"page": "index",
}
base_send_mini_sub_msg(post_data)
注:上面讲解都是后端方面的配置和代码编写,未涉及到前端。
参考微信小程序官方文档
subscribeMessage.send | 微信开放文档developers.weixin.qq.com