pay · Status & Runbook
上线状态与部署 Runbook
岩美 pay 收款服务(支付宝当面付)在阿里云的部署现状、运维手册,以及微信支付的规划与硬前提。更新于 2026-06-25。
一、当前状态总览
| 事项 | 状态 | 说明 |
| pay 服务部署到阿里云 | ✅ 完成 | systemd 守护、开机自启、health OK |
| 支付宝密钥(生产) | ✅ 完成 | 存 Bitwarden「ali pay key」→ rbw 灌入服务器 env,私钥不落明文/不进聊天 |
| 下单 + RSA2 加签 | ✅ 验证 | 测试下单返回「应用未上线」= 密钥/加签/网关全通,只差审核 |
| 支付宝应用审核(当面付) | ⏳ 审核中 | 1 天内出结果;通过后下单即出码,无需再改 |
| 阿里云安全组开 8080 | ⏳ 待操作 | 用户在 ECS 控制台开:TCP 8080 / 源 0.0.0.0/0 |
| 1 分钱真实实测 | ⏳ 待 | 审核过 + 端口开后,真支付宝扫码付 |
| 微信支付 | ⛔ 阻塞 | V3 回调强制 HTTPS → 需先备案+域名+证书(见第四节) |
二、部署架构
三、服务器部署详情
| 项 | 值 |
| 服务器 | ssh ali → 182.92.213.171(Alibaba Cloud Linux 3, x86_64) |
| 二进制 | /opt/pay/payd(Go 交叉编译 linux/amd64,纯静态无 cgo) |
| 前端页面 | /opt/pay/web/(pay.html / result.html) |
| 配置 | /opt/pay/config.yaml(production:true、app_id、base_url、enabled:true) |
| 数据库 | /opt/pay/pay.db(SQLite) |
| 密钥 env | /etc/pay/pay.env(600,含 ALIPAY_APP_PRIVATE_KEY / ALIPAY_PUBLIC_KEY,来自 rbw) |
| systemd 单元 | /etc/systemd/system/pay.service |
| 商户 | code=yanmei · APPID 2021006166629060 · 当面付 · 正式网关 |
| notify_url | http://182.92.213.171:8080/api/v1/notify/alipay |
| 查单兜底 | 每 30s 主动 query 待支付订单(防回调丢失) |
密钥来源(Bitwarden):条目 ali pay key,字段 app_private_key / alipay_public_key / appid。部署时 rbw get 管道直灌服务器 env,明文不落盘到仓库、不进聊天。
四、运维 Runbook(常用命令)
# 状态 / 健康
ssh ali 'systemctl status pay'
ssh ali 'curl -s localhost:8080/health'
# 重启 / 看日志
ssh ali 'systemctl restart pay'
ssh ali 'journalctl -u pay -f'
# 更新密钥(从 Bitwarden 重新灌)
{ printf 'ALIPAY_APP_PRIVATE_KEY='; rbw get "ali pay key" --field app_private_key | tr -d '\r\n'; \
printf '\nALIPAY_PUBLIC_KEY='; rbw get "ali pay key" --field alipay_public_key | tr -d '\r\n'; printf '\n'; } \
| ssh ali 'umask 077; cat > /etc/pay/pay.env; chmod 600 /etc/pay/pay.env'
ssh ali 'systemctl restart pay'
# 更新程序(本地改完代码后)
cd /Users/wangjia/code/pay && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o /tmp/payd .
scp /tmp/payd ali:/opt/pay/payd && ssh ali 'systemctl restart pay'
# 查订单(服务器上)
ssh ali 'sqlite3 -header -column /opt/pay/pay.db "SELECT out_trade_no,amount,status,trade_no,paid_at FROM orders ORDER BY id DESC LIMIT 10;"'
审核通过后无需任何改动——商户已 enabled、密钥已就位。支付宝应用一上线,下单即出码。直接开 http://182.92.213.171:8080 测 1 分钱即可。
五、上线检查清单(支付宝当面付)
- ☑ 服务部署、systemd 自启、health OK
- ☑ 生产密钥灌入(Bitwarden → env)
- ☑ 下单加签验证通过(「应用未上线」是预期)
- ☐ 支付宝应用 + 当面付审核通过(1 天内)
- ☐ 阿里云安全组开 8080(TCP / 0.0.0.0/0)
- ☐ 1 分钱真实扫码实测 → 订单变 paid
- ☐ 把测试套餐(0.01/0.02)换成真实授权套餐(¥99/¥268/¥888…)
- ☐ 配服务器 IP 白名单(资金接口加固,可选)
六、微信支付规划
硬前提:微信支付 V3 回调强制 HTTPS——必须 https://域名/notify,不能像支付宝当面付那样用 http://IP:8080。HTTPS 要域名+证书,域名+大陆服务器又要 ICP 备案。所以微信必须等备案好才能上线。
不依赖备案、可现在并行申请
- 申请微信支付商户号(pay.weixin.qq.com,企业+营业执照+对公账户,审核约 1~7 天)
- 注册一个认证的公众号/服务号或小程序(当 APPID 用;服务号认证约 300/年)
- 配 API 证书 + APIv3 密钥 + 微信支付公钥(商户平台 → 账户中心 → API 安全)
依赖备案
- 域名转入 + ICP 备案 → 服务器配 HTTPS(域名+证书)→ 微信 notify 才能用
代码侧(待我实现)
internal/channel/wechat.go 现为占位;需实现微信支付 V3:Native 下单 / 回调 AES-GCM 解密+验签 / 查单
- 架构已预留:
Channel 接口 + merchants 多渠道表,补实现 + 加一条商户即可,主流程不变
节奏:现在支付宝当面付先收钱(不等备案);并行申请微信商户号+公众号;备案+域名+HTTPS 就绪后,我实现微信 V3 渠道并 1 分钱实测(微信无沙箱)。届时支付宝电脑网站支付(网页收款页)也能一并上。