1.9 KiB
1.9 KiB
M05-B 微信支付与退款
- 日期:2026-06-22
- 起始 commit:
dea2ee5 - 工程 commit:
4c66e19 - ENGINEERING_DELTA=YES
- 子阶段状态:DONE,工程 commit 已 push 且
HEAD == origin/main
工程增量
- 实现微信支付 v3 RSA-SHA256 请求签名、JSAPI
requestPayment参数签名和可注入 HTTP 传输。 - 支持微信预支付、主动查单、全额/部分退款和交易账单下载请求。
- 支付与退款通知保留原始请求体,按平台证书验签后使用 APIv3 Key 执行 AES-256-GCM 解密。
- 支付通知以 provider/callbackId 幂等;成功后在事务内更新支付单、订单已付金额、订单状态历史和房间预占。
- 退款使用 clientRequestId 幂等并校验剩余可退金额;PROCESSING 可推进到 SUCCESS,成功后不可被旧通知回退。
- 外部退款调用失败进入
MANUAL_REVIEW,不把订单伪造为已退款。 - 新增退款回调字段和
qipai_reconciliation_runs,记录账单日期、类型、下载状态和请求人。 - 真实私钥、APIv3 Key 与证书只从环境凭据映射加载,不进入数据库、日志、Git 或前端。
验证
- Windows:
npm test全量通过。 - 协议测试:生成 RSA 密钥与 AES-GCM 通知,验证请求签名、JSAPI 参数、验签解密、篡改拒绝、查单、退款和账单请求。
- 仓库门禁:完整性、敏感信息、空白和大文件检查通过;既有参考 xjar 大文件仅保留已登记 WARN。
- WSL MySQL 8.4.9 临时库:
up → verify → down → up → verify通过。 - 迁移语句:up 78、verify 58、down 72。
外部阻塞
缺真实微信商户号、APIv3 Key、商户私钥和平台证书,尚未执行真实小额支付、回调、部分退款、全额退款和账单下载。工程可独立部分已完成,阻塞登记在 docs/unresolved-issues.md。
后续
执行游标推进到 M05-C:团购券和第三方直订。