### 临时测试:Quick Tunnel
先确保服务已启动:
make dev
另开一个终端:
cloudflared tunnel –url http://127.0.0.1:10002
启动成功后会显示类似:
https://random-name.trycloudflare.com
Cloudflare Quick Tunnel 会生成随机 trycloudflare.com 地址,仅适合开发测试,每次重启地址可能改变。Cloudflare Quick Tunnel 文档 (https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/trycloudflare/)
把 .env 改为:
ALIPAY_NOTIFY_URL=https://random-name.trycloudflare.com/api/pay/notify/alipay
然后重启服务,使 payment-rpc 重新加载配置:
make dev-stop make dev
cloudflared 所在的终端不要关闭。
### 验证隧道是否通畅
执行:
curl -i -X POST
‘https://random-name.trycloudflare.com/api/pay/notify/alipay’
-H ‘Content-Type: application/x-www-form-urlencoded’
-d ‘test=1’
预期:
HTTP/2 200 failure
返回 failure 是正确的,因为测试参数没有支付宝签名。它证明:
公网 Cloudflare → 本机 app:10002 → /api/pay/notify/alipay → payment-rpc
整条网络链路已经通了。
常见错误:
- 404:回调路径写错,必须是 /api/pay/notify/alipay
- 502 Bad Gateway:本地 10002 没启动
- Cloudflare 1033:隧道进程已停止
- 一直没有支付宝回调:修改 .env 后没有重启 payment-rpc,或者二维码是在配置新地址之前创建的
配置完成后,最好重新发起一笔新的支付宝沙箱预下单,再扫码支付。
### 如果 Quick Tunnel 启动失败
如果提示存在 ~/.cloudflared/config.yml,Quick Tunnel 可能与已有配置冲突;Cloudflare 官方也说明 Quick Tunnel 不支持同时存在该配置文件。可以使用一个临时空配置,或者改用已有的命名 Tunnel。
如果你已有固定域名,长期使用应配置命名 Tunnel,将例如:
pay.example.com
指向:
http://127.0.0.1:10002
最终回调地址就是:
ALIPAY_NOTIFY_URL=https://pay.example.com/api/pay/notify/alipay
生产环境建议用固定命名 Tunnel;Quick Tunnel 只用于本地支付宝沙箱联调。