微信公众平台配置指南.md 4.9 KB

微信公众平台服务器配置指南

一、配置步骤

1. 登录微信公众平台

步骤 操作
1 访问 微信公众平台
2 使用管理员账号登录
3 进入「开发」→「基本配置」

2. 配置服务器信息

在「基本配置」页面,点击「修改」按钮,填写以下信息:

配置项 说明 示例值
服务器地址(URL) 服务器回调地址 http://www.chengyantek.cn/api/wechat/mp/verify
Token 自定义Token(需与后端配置一致) 自定义字符串(如:your_custom_token_123)
EncodingAESKey 消息加解密密钥(可选) 点击「随机生成」或留空

⚠️ 重要提示:

  • 服务器地址必须使用 HTTP 或 HTTPS 协议
  • 如果使用 HTTPS,需要配置有效的 SSL 证书
  • Token 需要与后端 .env 文件中的 WECHAT_MP_TOKEN 保持一致

3. 提交并验证

步骤 操作
1 填写完服务器地址和Token后,点击「提交」
2 微信服务器会发送GET请求到你的服务器进行验证
3 验证成功后,配置生效

二、后端配置

1. 配置环境变量

在 backend/.env 文件中添加:

# 微信公众平台配置
WECHAT_MP_TOKEN=your_custom_token_123

⚠️ 注意:WECHAT_MP_TOKEN 必须与微信公众平台中配置的 Token 完全一致。

2. 重启后端服务

配置完成后,重启后端服务使配置生效:

# 如果使用 systemd
sudo systemctl restart lyrria-backend

# 或者直接运行
cd backend
python main.py

三、接口说明

1. 服务器验证接口(GET)

路径:/api/wechat/mp/verify

用途:微信公众平台配置服务器URL时的验证

参数:

  • signature: 微信加密签名
  • timestamp: 时间戳
  • nonce: 随机数
  • echostr: 随机字符串

返回:验证成功返回 echostr,失败返回空字符串

2. 消息推送接口(POST)

路径:/api/wechat/mp/message

用途:接收微信公众平台推送的消息(文本、事件等)

参数(URL参数):

  • signature: 微信加密签名
  • timestamp: 时间戳
  • nonce: 随机数

请求体:XML格式的消息内容

返回:XML格式的响应消息

四、配置示例

生产环境配置

假设你的域名是 http://www.chengyantek.cn/,后端运行在 8000 端口:

微信公众平台配置:

  • 服务器地址:http://www.chengyantek.cn/api/wechat/mp/verify
  • Token:your_custom_token_123

后端 .env 配置:

WECHAT_MP_TOKEN=your_custom_token_123

使用 Nginx 反向代理

如果使用 Nginx 反向代理,确保配置了正确的路由:

location /api/wechat/mp/ {
    proxy_pass http://localhost:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

五、验证配置

1. 检查接口可访问性

在浏览器中访问(替换为你的实际Token和参数):

http://www.chengyantek.cn/api/wechat/mp/verify?signature=xxx&timestamp=xxx&nonce=xxx&echostr=test

如果返回 test,说明接口正常工作。

2. 查看后端日志

配置提交后,查看后端日志,应该能看到:

✅ 微信公众平台服务器验证成功

3. 测试消息推送

在微信公众平台发送测试消息,查看后端日志:

📨 收到微信公众平台消息: type=text, from=xxx
📝 文本消息内容: xxx

六、常见问题

Q1: 验证失败,提示"Token验证失败"

原因:后端 WECHAT_MP_TOKEN 与微信公众平台配置的 Token 不一致

解决:检查 .env 文件中的 WECHAT_MP_TOKEN 是否与微信公众平台中配置的 Token 完全一致(区分大小写)

Q2: 验证失败,提示"服务器无响应"

原因:

  • 服务器地址无法访问
  • 防火墙阻止了微信服务器的访问
  • Nginx 配置错误

解决:

  1. 检查服务器地址是否可以从外网访问
  2. 检查防火墙规则,确保允许微信服务器IP访问
  3. 检查 Nginx 配置是否正确

Q3: 消息推送失败

原因:

  • 消息推送接口返回了错误状态码
  • XML 解析失败

解决:

  1. 查看后端日志,确认错误原因
  2. 确保消息推送接口返回正确的 XML 格式或 success 字符串

Q4: 需要使用 HTTPS 吗?

建议:生产环境建议使用 HTTPS,但 HTTP 也可以正常工作。如果使用 HTTPS,需要配置有效的 SSL 证书。

七、消息处理扩展

当前实现为示例代码,你可以根据业务需求扩展消息处理逻辑:

  • 文本消息:根据关键词自动回复
  • 事件消息:处理关注、取消关注、菜单点击等事件
  • 图片/语音消息:保存并处理多媒体内容

修改 backend/main.py 中的 wechat_mp_message 函数即可。