1. 选择香港服务器与准备
步骤:1) 选供应商(阿里云香港、腾讯云香港、VPS 如CentoHost等);2) 选系统(推荐 Ubuntu 22.04);3) 准备好域名用于回调(必须是公网可访问且支持 HTTPS);4) 获取控制台登录、开通安全组/防火墙权限(放通 80/443)。小分段:a. 购买并启动实例 b. 记录公网IP c. 准备SSH密钥或密码
2. 域名与DNS解析配置
步骤:1) 在域名管理处添加 A 记录,主机记录@或wechat 指向香港服务器公网IP;2) 缓存TTL设置为600以方便调试;3) 等待解析生效(可用nslookup或dig检查)。小分段:a. 若有CDN请先绕过以便直连回调 b. 准备好域名管理账号
3. 防火墙、端口与申请 SSL 证书
步骤:1) 在服务器上开启 80/443: sudo ufw allow 80 && sudo ufw allow 443;2) 安装 nginx:sudo apt install nginx;3) 安装 certbot:sudo snap install --classic certbot;4) 申请证书:sudo certbot --nginx -d example.com(替换域名)。小分段:a. 若使用自签名会被微信拒绝 b. 确保证书自动续期
4. Nginx 反向代理与回调路径示例
步骤:1) 编辑 /etc/nginx/sites-available/wechat.conf,示例 server 区块:
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location /wechat/ { proxy_pass http://127.0.0.1:3000/wechat/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
location /pay/notify/ { proxy_pass http://127.0.0.1:3001/pay/notify/; } }。小分段:a. 为不同服务设置不同 upstream 端口 b. reload nginx: sudo systemctl reload nginx
5. 微信公众平台/小程序后台配置
步骤:1) 登录微信公众平台 -> 开发 -> 基本配置;2) 填写 URL(https://example.com/wechat/),Token(自定义),消息加解密密钥(EncodingAESKey);3) 在服务器实现 GET 验证接口:接收 signature, timestamp, nonce, echostr,校验并返回 echostr 即可通过验证;4) 实现 POST 消息接收并回复正确的 XML 或加密数据。小分段:a. 验证测试时看 nginx/access.log 与应用日志 b. 若不通过检查域名是否走 CDN 或 证书是否正确
6. 微信支付回调(notify_url)配置与签名校验示例
步骤:1) 在微信商户平台设置回调 URL 为 https://example.com/pay/notify/;2) 若使用微信支付 v3,下载平台证书并用商户私钥签名请求,回调需验证微信签名(HTTP header 包含Wechatpay-Signature等);3) 回调处理逻辑:验证签名->解析通知体->校验订单金额与商户订单号->处理业务->返回 HTTP 200 并 body 为 {"code":"SUCCESS","message":"成功"} 或 v2 返回字符串 SUCCESS;4) 示例验证要点:使用微信提供的公钥验证签名,检查时间戳、随机串及签名字段。小分段:a. 保存好商户API证书与密钥 b. 开启严格日志便于排错
7. 问:香港服务器能否直接通过微信的域名/回调验证? 答:
问:香港服务器能否直接通过微信的域名/回调验证? 答:可以。只要域名解析到香港公网IP、使用有效的HTTPS证书、端口80/443可访问,并在微信后台填写一致域名及路径即可通过验证。调试时注意清除CDN或代理影响,确保直接访问可返回 echostr。
8. 问:如果验证失败或回调收不到通知怎么办? 答:
问:如果验证失败或回调收不到通知怎么办? 答:检查步骤:1) DNS 是否生效;2) 证书是否正确(可用 openssl s_client -connect example.com:443 检查);3) Nginx 转发是否到正确应用端口;4) 应用日志是否有请求到达;5) 防火墙/安全组是否放通;6) 微信后台回调 URL 是否填写准确(包含 https 与尾部/)。
9. 问:微信支付回调提示签名错误如何排查? 等:
问:微信支付回调提示签名错误如何排查? 答:先确认使用的是 v2 还是 v3 签名算法,v3 需用平台公钥验签;核对商户API密钥或私钥是否正确;检查回调处理时是否对原始 body 做了变动(签名验证应基于原始报文);检查时间戳与随机串是否正确传递;最后用微信提供的示例代码对比实现。
来源:技术实现香港服务器怎么开通微信 网关配置与回调地址设置示例