前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >微信小程序 python 发送订阅消息

微信小程序 python 发送订阅消息

作者头像
前Thoughtworks-杨焱
发布2021-12-07 19:58:22
发布2021-12-07 19:58:22
1.2K00
代码可运行
举报
文章被收录于专栏:杨焱的专栏杨焱的专栏
运行总次数:0
代码可运行

发表于2020-03-222020-04-03 作者 wind

代码语言:javascript
代码运行次数:0
运行
复制
import requests, json

appid = 'xxxxx';
appSecret = 'xxxxxxx';

url_access_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + appid + '&secret=' + appSecret

tokenRes = requests.get(url_access_token)

token = json.loads(tokenRes.text).get('access_token')

print(token)

url_msg = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send'
body = {
    "touser": "oyLvs4hcubi5-FhfYVqH2VJGKIN4",  # 也就是OPENID
    "template_id": "Ou27mwu5QLHaL-sxYfka1eecqHhyuXxllHKVuZTUIN0",
    "page": "pages/index/index",
    "form_id": "FORMID", # 这个应该是来源场景值ID吧,我这里没有用到
    "data": {
        "date2": {
            "value": "2020-03-19 14:35:30"
        },
        "thing3": {
            "value": "firegod"
        },
        "thing7": {
            "value": "服务器内存低于256MB"
        }
    }
}

res = requests.post(url=url_msg, params={
    'access_token': token  # 这里是我们上面获取到的token
}, data=json.dumps(body, ensure_ascii=False).encode('utf-8'))

print(res.text)

官网的接口文档:

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

请求参数

属性

类型

默认值

必填

说明

access_token

string

接口调用凭证

touser

string

接收者(用户)的 openid

template_id

string

所需下发的订阅模板id

page

string

点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。

data

Object

模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }

miniprogram_state

string

跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版

lang

string

进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN

模板消息、统一消息、订阅消息,我也是醉了,这么多种消息接口,一开始就没找对,所以遇到了一个返回模板id怎么都不对的错误。从接口文档可以看出使用`miniprogram_state` 参数来确定是在哪个环境中发送。

这里需要注意一个问题 ,就是python默认编码问题,如果json中有中文或其他ASCII之外的字符,需要设置字符集为utf-8

代码语言:javascript
代码运行次数:0
运行
复制
if sys.getdefaultencoding() != 'utf-8':
    reload(sys)
    sys.setdefaultencoding('utf-8')
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请求参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档