refund-manual-close.php

20260916-201504 轮 · 看它的历史
  ✔ 隔离库 jnc_ma_e2e_h8 就绪(105 张表,缺列 0)

【组 E refundGatewaySettledTotal 与 refundGatewayPortion 的关系】
  ✅ 网关已结算总额 = 10000
  ✅ 剩余待退额 = 总额 − 已退额 = 4000
  ✅ 等式 settledTotal == portion + 已退
  ✅ 不存在的 ddnum → 总额 0

【组 C 授权双闸 —— 缺位 / 缺 PIN / PIN 错 / 齐全】
  ✅ 只有工单位 38 → 被拒(权限不足)
  ✅ 缺位:余额一分未动
  ✅ 缺位:退款单仍是失败态 2
  ✅ 缺位:工单仍未关闭
  ✅ 有位但不填 PIN → 被拒
  ✅ 缺 PIN:余额一分未动
  ✅ 缺 PIN:退款单仍是失败态 2
  ✅ PIN 填错 → 被拒
  ✅ PIN 错:余额一分未动
  ✅ PIN 错:退款单仍是失败态 2

【组 A 金额口径 —— 部分已自动退成功的单(SEC-0036 算例)】
  ✅ 位 + PIN 齐全 → 成功
  ✅ 🔴 站内余额(vgold)增量 == 0(旧口径会 +6000)
  ✅ 退款单迁到已同意 1
  ✅ 退款单记下了 pin_verified
  ✅ 订单迁到 52(已退款并结清)
  ✅ 工单已关闭

【组 B 台账收口 —— {0,2} 补成 1 并写入 ops 提交的**真实**回执;3 留给日批复查】
  ✅ 两行台账都变成 status=1
  ✅ 原 status=2 那行写入了 ops 提交的真实回执
  ✅ 原本就 status=1 的那行没被改写凭证
  ✅ B3 全库不再出现合成串 MANUAL_T
  ✅ status=3 的行**仍是 3**(留给日批 stepRefundChannelRecheck)
  ✅ 同单里 status=2 的行仍被补成 1
  ✅ 该单站内增量也是 0(网关总额=ddrmbpay)

【组 B3 回执号 —— 每一笔待退行都要填真的,少一笔 / 形态不对都整笔拒】
  ✅ B3 一个回执号都不填 → 被拒
  ✅ B3 不填:台账两行都没动
  ✅ B3 不填:余额一分未动
  ✅ B3 不填:退款单仍是失败态 2
  ✅ B3 不填:工单仍未关闭
  ✅ B3 只填了两笔里的一笔 → 被拒
  ✅ B3 漏填:台账两行都没动(不允许部分补)
  ✅ B3 回执号含中文 → 被拒
  ✅ B3 回执号含中文:台账未改
  ✅ B3 回执号含空格 → 被拒
  ✅ B3 回执号含空格:台账未改
  ✅ B3 回执号超过 64 位 → 被拒
  ✅ B3 回执号超过 64 位:台账未改
  ✅ B3 逐笔填齐 → 成功
  ✅ B3 两笔都补成 status=1
  ✅ B3 两笔各自拿到自己的回执
  ✅ B3 两个回执号确实不相同

【组 A 守卫 —— 两条不该被误伤的正常路径】
  ✅ 守卫 1 纯站内单:vgold 确实 +5000(全额退站内)
  ✅ 守卫 1 纯站内单:退款单已完成
  ✅ 守卫 2 网关全失败单:站内增量 == 0(新旧口径同值,证明只动了"部分已退"那一档)

【组 D refund_retry —— 同一条性质的另一半(它已有 PIN,只缺位)】
  ✅ 只有工单位 38 → refund_retry 也被拒
  ✅ 缺位:余额一分未动
  ✅ 缺位:台账一行未改
  ✅ 补位后越过授权闸,落到既有"部分已退"守卫(全程不碰通道)

【组 R 强制记账失败回执 —— 不能把内部异常字符串拼给管理员看】

  · 订单已不可迁移(状态机拒) —— 改前回执是 statechangeByddnum_strict_failed expected=0 changed=0
  ✅ 强制记账确实失败了(否则下面全在空转)
  ✅ 🔴 回执里没有 statechangeByddnum 这种内部标识
  ✅ 🔴 回执里没有 expected= 这种内部标识
  ❌ 🔴 回执是人话:说清「已不是待付款状态」
       实得 false
       预期 true
  ❌ 回执还告诉管理员下一步干什么(去通道后台核实)
       实得 false
       预期 true
  ✅ 失败后工单留开
  ✅ 失败后 pd 仍未入账(整笔回滚)
  ✅ 失败后订单金额一分未动

  · 金额对不上(reject 档)也要是人话
  ✅ 金额对不上时也失败了
  ✅ 🔴 回执里没有 amount_mismatch_unpaid 这种内部标识
  ✅ 🔴 回执是人话:说清金额与欠款对不上
  ✅ 金额对不上时 pd 仍未入账
  ✅ 金额对不上时订单金额一分未动

  · 守卫:金额与状态都对时,强制记账仍然记得成(别把闸修成全拒)
  ✅ 🔴 守卫:合法场景没有报「强制记账未成功」
  ✅ 守卫:pd 已入账
  ✅ 守卫:订单收到这笔钱
  ✅ 守卫:工单被关掉

────────────────────────────────
PASS=66  FAIL=2
  ✔ 已销毁 jnc_ma_e2e_h8