Ver Fonte

docs(乐收赢): 裁定 pay_amount / coupon_amount 不进对外 detail —— 依据写进类注释

对外 `data.detail` 的字段表(`collection-openapi.md` §5.4)写的是「**固定这几个**」,
而真实密钥集里还有两个金额键我们从来没放:`pay_amount`(用户实付)与 `coupon_amount`。
这一条我此前只在报告里记成「未决」,现在**定下来:不放**,并把四条依据写进
`LsyQueryDetailAssembler` 的类注释(就写在 `refund_settle` 那条旁边),
免得下一个人当成漏掉的格子补上去。

四条依据(都可复核):

1. 它们**确实在上游应答里** —— `pay_amount` 在 `/v3/queryorder` 真实键集中
   (`logs/_lsy-query-by-tradeno-probe.txt`,真打上游,值 `'1'`),上游「交易查询」
   字段表也写了它;`coupon_amount` 只在键集里出现,**上游那张返回参数表里没有它**。
2. **我们的订单表没有这一列** —— 实测生产 `pay_lsy_order` 的金额列只有
   `total_amount` / `receipt_amount` / `discount_amount` / `refunded_amount`
   (`logs/_lsy-prod-precheck.txt` ⑩)。本类的规矩是「语义以我们自己的列为准」。
3. **算式没有读数** —— 唯一一次四格同时有值的实测是**未支付**那笔(退化读数:
   `receipt='0'`、`discount='0'`);唯一一次**支付成功**的实测里 `discount_amount` 是 `null`
   (`logs/_lsy-qr-status.txt`:`total=100`、`receipt=100`)。谁减谁、渠道立减算哪一边,没量到。
4. **它不是租户缺的那一格** —— 对账要的是商户实收,那格(`receipt_amount`)已经在。

放它出去是一次**对外契约变更**(改 §5.4 的字段表 + 三条通道各一次联调核对),不在收尾范围。

**只改注释,零行为变化**。全量 963 绿(`logs/_java-suite-20260930-pm.log`,
Tests run: 963, Failures: 0, Errors: 0)。
alphaH há 2 semanas atrás
pai
commit
f90c07edff

+ 25 - 2
java/src/main/java/com/payment/platform/module/payment/leshouying/service/LsyQueryDetailAssembler.java

@@ -40,8 +40,31 @@ import java.util.Map;
  * </ul>
  * 明确**不**放的(属上游身份,或者我们还没把它写进对外契约):
  * `qd_trade_no`、`td_trade_no`、`qd_refund_no`、`refund_settle`、`user_id`、
- * `mch_no`、`shop_no`、`inst_no`、`pay_trace_no`、`refund_trace_no`,以及
- * `return_code` / `result_code` / `return_msg` 三个上游协议字段。
+ * `mch_no`、`shop_no`、`inst_no`、`pay_trace_no`、`refund_trace_no`、`pay_amount`、
+ * `coupon_amount`,以及 `return_code` / `result_code` / `return_msg` 三个上游协议字段。
+ *
+ * <p>★ 2026-09-30 裁定:`pay_amount` 与 `coupon_amount` **不进白名单**。
+ * 这是我此前留的一条**未决项**(不是漏掉),现在定下来并把依据写在这里:
+ * <ul>
+ *   <li><b>它们确实在上游应答里。</b>`pay_amount` 在 `/v3/queryorder` 真实键集中
+ *       (`logs/_lsy-query-by-tradeno-probe.txt`,真打上游,值 `'1'`),上游「交易查询」
+ *       字段表里也写了它(「用户实付,单位:分」);`coupon_amount` 只在键集里出现,
+ *       **上游字段表里没有它** —— 那张表的「返回参数」一节只列到 `pay_amount`,
+ *       没有 `coupon_amount`(`logs/_lsy-doc-queryorder-交易查询.md`)。</li>
+ *   <li><b>我们的订单表没有这一列。</b>实测生产 `pay_lsy_order` 的金额列只有
+ *       `total_amount` / `receipt_amount` / `discount_amount` / `refunded_amount`
+ *       (`logs/_lsy-prod-precheck.txt` ⑩ 的列清单),**没有** `pay_amount`。
+ *       本类的规矩是「语义以我们自己的列为准」—— 一个我们没有落、也没有解释的格,
+ *       投影出去就是让租户拿一个我方口径不明的数去对账。</li>
+ *   <li><b>算式没有读数。</b>唯一一次四格同时有值的实测是**未支付**那笔
+ *       (`total='1'`、`pay_amount='1'`、`receipt='0'`、`discount='0'` ⇒ 退化读数);
+ *       唯一一次**支付成功**的实测里 `discount_amount` 是 `null`
+ *       (`logs/_lsy-qr-status.txt`:`total=100`、`receipt=100`)。
+ *       「谁减谁、渠道立减算在哪一边」我们一次都没量到。</li>
+ *   <li><b>它也不是租户缺的那一格。</b>对账要的是商户实收,那格(`receipt_amount`)已经在。</li>
+ * </ul>
+ * 要放它出去是一次**对外契约变更**(`collection-openapi.md` §5.4 的字段表写的是
+ * 「固定这几个」,加一格要同步改文档、并与三条通道各做一次联调核对),不在收尾范围内。
  *
  * <p>⚠ 2026-09-30 订正上面这行的括注:它原来写的是「列注释写着「本侧不读」或属上游身份」,
  * 其中「本侧不读」对 `refund_settle` **已经不成立** —— 我们现在读它、落它、并在管理端