Parcourir la source

chore(汇安融): 查询那条 WARN 改盯手续费/渠道成本 —— 实收金额已被通知填上,原来那条件会被遮住

2026-09-28 实测通知里带了 actual_money,实收金额从此由通知落库。原来那条 WARN
要求「三个金额全空」才报,于是实收金额一有值它就再也不响 —— 而手续费与渠道成本
至今没在任何一份报文里出现过,恰恰是最需要看上游查询原文的两格。

改成只盯 fee_amount / channel_amount:这两格空就打出 detail 原文。已付/已退的单
是终态、轮询不再捞它们,所以这条只会在人工点「同步」时出现,噪音有界。

只改日志触发条件,不含任何行为变更;全量 878 绿。
alphaH il y a 2 semaines
Parent
commit
f67bc12724

+ 8 - 8
java/src/main/java/com/payment/platform/module/payment/har/service/HarOrderService.java

@@ -445,18 +445,18 @@ public class HarOrderService {
         HarQueryDetail detail = HarResponseParser.toBean(response.detailRaw(), HarQueryDetail.class);
         if (detail != null) {
             applyQueryDetail(order, detail);
-            // 三个金额只有这一条路径能落库 —— 通知的 15 个字段里没有金额。
-            // 所以「上游送了就要落库」这句话在这里是可验证的:已经付掉/退掉的单,
-            // 三个金额却全空,只可能是「上游没送」或「字段名与我们对不上」。
-            // 后者不是假想:这份规范已被证伪过两次(只认 subject 不认 title;
-            // reason 全篇没写却必填)。detail 原文只在这里出现一次,联调期先留着 ——
-            // 它每次都报,说明上游压根不送,那时该改的是这句话,不是再加日志。
+            // 手续费与渠道成本**只可能**从这一条查询路径来:2026-09-28 拿到真实通知
+            // 全文之后,「三个金额只能靠查询」这句话只剩这两格还成立(实收金额上游
+            // 在通知里就送了 actual_money)。这两格空 ⇒ 要么上游查询压根不送,
+            // 要么字段名与我们对不上 —— 后者不是假想,这份规范已被证伪三次
+            // (subject / reason / alipay_order_no+trade_date)。detail 原文只在
+            // 这里出现一次,联调期先留着:它每次都报,说明上游就不送,那时该改的是
+            // 这句话,不是再加日志。
             if ((HarOrderStatus.PAID.equals(order.getTradeStatus())
                     || HarOrderStatus.REFUNDED.equals(order.getTradeStatus()))
-                    && order.getRcvAmount() == null
                     && order.getFeeAmount() == null
                     && order.getChannelAmount() == null) {
-                log.warn("[汇安融订单] 查询成功但三个金额全空: order_no={}, status={}, detail={}",
+                log.warn("[汇安融订单] 查询成功但手续费/渠道成本仍为空: order_no={}, status={}, detail={}",
                         order.getOrderNo(), order.getTradeStatus(), response.detailRaw());
             }
         } else {