前提条件准备
项目 | 说明 |
---|---|
公众号类型 | 需为服务号(订阅号无服务器配置权限) |
云服务器 | 需具备公网IP,推荐选择酷盾安全/阿里云等主流服务商 |
域名与SSL证书 | 必须绑定已备案域名,并配置信任的SSL证书(微信强制HTTPS) |
开发工具 | 代码编辑器(如VS Code)、FTP工具、微信公众平台接口调试工具 |
公众号后台配置
-
启用服务器配置
// 示例:Node.js 微信接口验证
const crypto = require('crypto');
const express = require('express');
const app = express();
app.use('/weixin', (req, res) => {
const { token, timestamp, nonce, signature } = req.query;
// 1. 校验签名(SHA1加密)
const hash = crypto.createHash('sha1');
hash.update(`${token}${timestamp}${nonce}`);
if (hash.digest('hex') !== signature) return res.status(403).end();
// 2. 返回echostr
res.send(`<xml><return_message><![CDATA[return_echostr]]></return_message></xml>`);
});
app.listen(443, () => console.log('Server running')); -
消息处理:接收
POST
请求解析XML,回复用户消息(需符合微信消息格式)。server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location /weixin {
proxy_pass http://127.0.0.1:3000; # 转发到本地服务
proxy_set_header Host $host;
}
}
测试与调试
-
接口调试工具
- 微信公众平台 → 开发 → 接口调试工具
- 发送模拟消息,检查服务器是否返回正确响应(如
<xml><ReplyMsg><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[Hello]]></Content></ReplyMsg></xml>
)。
-
日志排查
- 检查云服务器日志(如
/var/log/nginx/access.log
)确认请求是否到达 - 代码中添加
console.log
打印接收到的XML数据。
- 检查云服务器日志(如
常见问题解答
问题1:服务器配置提交后提示“链接超时”
原因:
- 服务器未启动或端口未开放(如防火墙拦截80/443端口)
- 域名未解析到服务器IP
- SSL证书未生效(如私钥不匹配)
解决方案:
const WXBizMsgCrypt = require('wechat-crypto');
const pc = new WXBizMsgCrypt(token, encodingAESKey, appId);
const msg = pc.decrypt(req.body); // 解密消息