Files
qipai/docs/devlogs/2026-06-22-M05-B-微信支付与退款.md
T

1.9 KiB
Raw Blame History

M05-B 微信支付与退款

  • 日期:2026-06-22
  • 起始 commitdea2ee5
  • 工程 commit4c66e19
  • 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 或前端。

验证

  • Windowsnpm 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:团购券和第三方直订。