Python调用小程序接口完整教程 | 微信小程序API开发指南
- Python
- 2025-07-17
- 1475
Python调用小程序接口完整教程
本教程将详细介绍如何使用Python语言调用微信小程序的各种API接口,包含access_token获取、用户数据解密、模板消息发送等核心功能。
教程目录
- ▶ 小程序接口概述
- ▶ 准备工作与环境配置
- ▶ 获取access_token
- ▶ 用户登录与数据解密
- ▶ 发送模板消息
- ▶ 错误处理与调试技巧
- ▶ 完整示例代码
- ▶ 最佳实践与注意事项
小程序接口概述
微信小程序提供了丰富的API接口供开发者使用,主要包括:
- 登录接口 - 获取用户登录凭证code
- 用户信息接口 - 获取用户基本信息
- 模板消息接口 - 向用户发送服务通知
- 内容安全接口 - 检测文本/图片是否合规
- 数据分析接口 - 获取小程序访问数据
- 客服消息接口 - 处理用户客服消息
在调用这些接口前,必须先获取有效的access_token,这是调用大多数小程序接口的凭证。
获取access_token
access_token是调用小程序接口的重要凭证,有效期为2小时,需要定时刷新。
Python实现代码:
import requests import time class WechatAPI: def __init__(self, appid, secret): self.appid = appid self.secret = secret self.access_token = None self.token_expires = 0 def get_access_token(self): # 检查token是否有效 if self.access_token and time.time() < self.token_expires: return self.access_token # 请求新的access_token url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={self.appid}&secret={self.secret}" response = requests.get(url) data = response.json() if 'access_token' in data: self.access_token = data['access_token'] # 提前5分钟过期,避免边界问题 self.token_expires = time.time() + data['expires_in'] - 300 return self.access_token else: raise Exception(f"获取access_token失败: {data.get('errmsg', '未知错误')}") # 使用示例 wechat = WechatAPI("你的小程序AppID", "你的小程序AppSecret") token = wechat.get_access_token() print("获取到的access_token:", token)
关键点说明:
- access_token有效期为7200秒(2小时)
- 应全局缓存access_token,避免频繁请求
- 每个access_token每日请求上限为2000次
- 使用HTTPS GET方式请求
用户登录与数据解密
小程序前端通过wx.login()获取code,传给后端交换openid和session_key。
Python解密用户数据:
import base64 import json from Crypto.Cipher import AES def decrypt_user_data(encrypted_data, iv, session_key): # Base64解码 encrypted_data = base64.b64decode(encrypted_data) iv = base64.b64decode(iv) session_key = base64.b64decode(session_key) # AES解密 cipher = AES.new(session_key, AES.MODE_CBC, iv) decrypted = cipher.decrypt(encrypted_data) # 去除填充 pad = decrypted[-1] decrypted = decrypted[:-pad] # 转换为JSON对象 user_data = json.loads(decrypted.decode('utf-8')) return user_data # 使用示例 encrypted_data = "前端传来的加密数据" iv = "前端传来的初始向量" session_key = "通过code获取的session_key" user_info = decrypt_user_data(encrypted_data, iv, session_key) print("解密后的用户数据:", user_info)
注意: 解密需要安装pycryptodome库:pip install pycryptodome
关键注意事项
-
!
AppSecret是敏感信息,切勿暴露在客户端
-
!
access_token需要全局缓存并定时刷新
-
!
用户敏感数据需在服务端解密
-
!
接口调用频率有限制,需做好错误处理
-
!
小程序接口域名必须配置到服务器白名单
常见错误代码
错误码 | 说明 |
---|---|
40001 | access_token无效 |
40029 | code无效 |
41008 | 缺少code参数 |
45011 | API调用太频繁 |
48001 | API功能未授权 |
更多错误码请参考微信官方文档
最佳实践与优化建议
缓存策略优化
使用Redis存储access_token,设置自动过期时间(建议7100秒),避免多服务器token不一致问题。
错误处理机制
实现自动重试机制,当token失效时自动刷新并重试请求,对频率限制类错误实现退避算法。
日志与监控
详细记录接口调用日志,监控access_token获取频率和错误率,设置异常报警机制。
本教程提供的代码示例仅用于学习参考,实际生产环境请根据需求进行修改和完善。
© 2023 Python小程序接口开发教程 | 遵循MIT开源协议
本文由PangHuiLe于2025-07-17发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://521pj.cn/20255847.html
发表评论