使用 Python 发送微信模板消息教程

使用 Python 发送微信模板消息教程
青萍叙事📝 前言
之前有一期介绍到了如何申请开通微信模板消息《个体户申请服务号认证和开通模板消息指南》。
这期再来介绍一下,如何通过 Python 来给指定的微信用户发送模板消息提醒。
🧭 背景介绍
微信模板消息广泛应用于自动通知、支付提醒、订单状态更新等场景,尤其对中小企业和个人开发者而言,是实现消息推送自动化的重要手段。
微信官方平台提供了模板消息接口,我们可以结合 Python 编程语言,实现自动化推送功能,提高运营效率。
📌 使用场景
- 自动向用户推送提醒(如:课程开始、订单发货、订阅到期等)
- 构建微信服务号的消息服务
- 企业内部消息提醒系统
- 与爬虫、数据分析等任务联动实现定时通知
📋 前提条件
在开始之前,请确保你已满足以下条件:
- 拥有一个已认证的微信服务号
- 模板消息功能已开通
- 熟悉基本的
Python语言
🧑💻 详细步骤
1️⃣ 获取服务号AppID 和 AppSecret
在启用AppSecret之前,需要先成为开发者,进入服务号控制台 → 设置与开发 → 开发接口管理 → 成为开发者。
再启用AppSecret,需要另外保存好AppID和AppSecret,后面会用到。
2️⃣ 选择消息模板类目
这里需要选择类目模板库,如果选择的行业没有任何模板不建议申请新的模板,因为审核很严,可以换个常见的行业再找找现成的可用模板。
PS:一个服务号最多只能设置5个服务类目。
服务类目一定要选常用的,我刚开始选择工具 → 日历,结果里面一个模板都没有,申请也不给通过。。
后面选择 商业服务 → 软件/建站/技术开发,就有很多现成的模板可用了。
3️⃣ 选择消息模板
选择完类目后,回到模板消息 → 模板库 → 类目模板库,就可以看到有很多现成的模板可用了。
选择一个适合自己场景的模板,并挑选好需要的关键词即可。
4️⃣ 获取access_token
我们发送模板消息必须要先获取access_token,而微信提供了2个接口可以获取access_token,对比如下:
| 项目 | 普通 access_token 接口 |
稳定版 access_token 接口 |
|---|---|---|
| 接口地址 | https://api.weixin.qq.com/cgi-bin/token |
https://api.weixin.qq.com/cgi-bin/stable_token |
| 请求方式 | GET | POST |
| 请求参数 | appid、secret、grant_type=client_credential |
JSON 格式传参: |
| `{ | ||
| “grant_type”: “client_credential”, | ||
| “appid”: “<你的AppID>”, | ||
| “secret”: “<你的AppSecret>” | ||
| }` | ||
| 请求示例 | https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET |
POST 到 https://api.weixin.qq.com/cgi-bin/stable_token,Body 参数如上所示 |
| 接口特点 | 普通接口,存在高并发下限频风险 | 稳定版接口,官方建议在高并发下使用,系统自动降级为普通接口 |
| 并发优化 | 无并发控制机制,频繁调用可能触发频率限制 | 内部具备自动限流和稳定性处理,更适合大规模使用场景 |
| 官方推荐场景 | 小程序、公众号小规模使用 | 企业级应用、大量接口调用时建议使用 |
| 返回值 | { "access_token": "ACCESS_TOKEN", "expires_in": 7200 } |
返回结构相同:access_token 与 expires_in |
默认token都是7200秒有效期,这里建议直接使用稳定版接口即可。
Python 获取access_token代码示例(稳定版):
1 | import requests |
5️⃣ 设置IP白名单
首次调用接口获取access_token时,如果没有设置IP白名单,会提示以下错误信息:
1 | { |
这是出于安全考虑,因此我们需要根据返回的IP地址,也即invalid ip后面的部分设置白名单。
进入在服务号控制台 → 设置与开发 → 安全中心 → 设置IP白名单
6️⃣ 发送模板消息
在发送模板消息之前,我们还需要获取用户微信的openid,这个可以引导用户关注服务号,再动态获取,限于篇幅这期我们先省略这部分,直接使用一个固定测试用的openid。
接口地址:https://api.weixin.qq.com/cgi-bin/message/template/send
Python 发送模板消息代码示例:
1 | import requests |
参数说明:
- 用户OpenID,可在关注时动态获取并保存
- 模板消息ID,选择消息模板后,会提供一个模板ID
- 跳转链接,可选如果想要跳转到网页或小程序可以加上
- data,模板消息内容,这个比较关键,选择完消息模板后,进入模板详情可查看,示例如下:
对应查看代码中的参数,value为实际动态发送的值。
注意:模板标题是没办法改的,所以尽量选择一个合适的模板。
7️⃣ 接收模板消息
发送完后,用户就可以在微信客户端(手机/PC)查看到发送的提醒消息,如下:
🧪 测试建议
- 请先使用开发者工具中的测试号进行测试
- 模板消息字段严格匹配模板格式,字段命名不可随意更改
- 每次 Access Token 获取后有效期为 2 小时,建议缓存处理
✅ 总结
通过本教程,你可以快速实现微信模板消息自动推送功能,无论用于服务号用户提醒,还是企业内部通知,Python 都能帮助你构建高效的消息系统。
未来可扩展方向包括:
- 定时任务(使用
schedule或APScheduler) - 消息队列处理(如 RabbitMQ/Kafka)
- 集成在 Flask/Django 项目中统一管理通知
























