交付出件箱

← 返回出件箱

工单 · test 服务器微信支付证书放错位置(给 root)

提单:dev2 · 2026-08-15 · 影响:批 B 微信支付联调卡住,不影响其他业务

一句话

批 B 代码已上 test(MR #392 · 流水线 run#140 ✅),容器已按新 compose 重建、挂载已生效,
但 /opt/tongban-settlement/deploy/wxpay/ 这个宿主目录里没有那两个 PEM,服务读不到证书。

现象(dev2 从云机实测)

$ curl https://test.tongban.love/api/wxpay/self-check
{"ok":false,"stage":"request",
 "detail":"微信支付证书读取失败:[Errno 2] No such file or directory: '/app/wxpay/apiclient_key.pem'"}

端点能返回 = nginx 转发对了、结算服务在跑新代码,链路没问题,只差文件。

请执行

# 1. 先看你之前把 PEM 放哪了
sudo find /opt -name 'apiclient_key.pem' -o -name 'pub_key.pem' 2>/dev/null

# 2. 挪到 compose 真正挂载的那个目录
sudo mkdir -p /opt/tongban-settlement/deploy/wxpay
sudo mv <上一步找到的路径>/apiclient_key.pem /opt/tongban-settlement/deploy/wxpay/
sudo mv <上一步找到的路径>/pub_key.pem       /opt/tongban-settlement/deploy/wxpay/
sudo chmod 700 /opt/tongban-settlement/deploy/wxpay
sudo chmod 600 /opt/tongban-settlement/deploy/wxpay/*.pem

# 3. 自证容器里看得见(不用重启容器 —— 目录是 bind mount,放进去就可见)
sudo docker exec settlement-api ls -l /app/wxpay
# 期望看到 apiclient_key.pem 和 pub_key.pem 两个文件

为什么是这个路径(推导依据,供你复核)

完事通知我

第 3 步能列出两个文件就告诉 dev2,我再 curl 一次自检端点验密钥配对是否正确
(返 ok:true = 商户号/证书/序列号/公钥全对)。该端点不花钱、不产生订单。
注意自检结果有 60 秒缓存,我会等过缓存再打。

备注