|
@@ -1,5 +1,6 @@
|
|
|
package com.payment.platform.module.payment.har.client.dto;
|
|
package com.payment.platform.module.payment.har.client.dto;
|
|
|
|
|
|
|
|
|
|
+import com.fasterxml.jackson.annotation.JsonAlias;
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
import lombok.Data;
|
|
import lombok.Data;
|
|
@@ -10,6 +11,26 @@ import lombok.Data;
|
|
|
* ignoreUnknown 保证上游新增字段不会导致解析失败。
|
|
* ignoreUnknown 保证上游新增字段不会导致解析失败。
|
|
|
* 金额字段一律用 String 接收:上游给的是 "12.25" 这样的字符串,
|
|
* 金额字段一律用 String 接收:上游给的是 "12.25" 这样的字符串,
|
|
|
* 用 BigDecimal 接收在字段为空串时会抛异常,而空串在上游是有可能出现。
|
|
* 用 BigDecimal 接收在字段为空串时会抛异常,而空串在上游是有可能出现。
|
|
|
|
|
+ *
|
|
|
|
|
+ * <p><b>★ 2026-09-28:四格加了 {@link JsonAlias},因为上游发的名字与规范不同。</b>
|
|
|
|
|
+ * 依据是第一份**真实的**查询响应 detail(订单 HAR1301886673700786176 退款后那次轮询,
|
|
|
|
|
+ * 原文见 {@code HarResponseParserTest#toBean_realQueryDetail_mapsTheNamesUpstreamActuallySends}):
|
|
|
|
|
+ * <pre>
|
|
|
|
|
+ * platform_trade_no ⇒ alipay_order_no (实为支付宝交易号)
|
|
|
|
|
+ * trade_time ⇒ trade_date
|
|
|
|
|
+ * refund_time ⇒ refund_date
|
|
|
|
|
+ * rcv_amount ⇒ actual_money
|
|
|
|
|
+ * </pre>
|
|
|
|
|
+ * 这是这份 docx 规范**第四次**被证伪。别名与 {@code @JsonProperty} 同时存在时
|
|
|
|
|
+ * <b>主名优先</b>,所以两套名字都发(或规范哪天被改回来)都能收 ——
|
|
|
|
|
+ * 没有任何读数说过规范那套会被撤掉,**删掉它们就是又一次拿推理当读数**。
|
|
|
|
|
+ *
|
|
|
|
|
+ * <p>其余字段**没有**加别名,因为这份真实报文里找不到证据:
|
|
|
|
|
+ * 手续费 / 渠道成本在 detail 里**根本没有对应字段**(未映射的金额只有
|
|
|
|
|
+ * {@code har_money} / {@code request_money} / {@code merchant_money},值分别是 0 / null / null,
|
|
|
|
|
+ * 而 0 与 null 在「这笔 0.01 的单没收费」与「这压根不是那个字段」两种解释下读数相同);
|
|
|
|
|
+ * {@code price} 同理 —— 上游的 {@code total_amount} 在唯一一份报文里与 price 相等,
|
|
|
|
|
+ * 分辨不了,而本地 price 来自我方下单,写错反而会把它弄坏。
|
|
|
*/
|
|
*/
|
|
|
@Data
|
|
@Data
|
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
|
@@ -41,18 +62,26 @@ public class HarQueryDetail {
|
|
|
|
|
|
|
|
private String percent;
|
|
private String percent;
|
|
|
|
|
|
|
|
|
|
+ /** 规范叫 trade_time,上游**实际**发的是 trade_date(2026-09-28 实测) */
|
|
|
@JsonProperty("trade_time")
|
|
@JsonProperty("trade_time")
|
|
|
|
|
+ @JsonAlias({"trade_date", "tradeDate"})
|
|
|
private String tradeTime;
|
|
private String tradeTime;
|
|
|
|
|
|
|
|
|
|
+ /** 规范叫 refund_time,上游**实际**发的是 refund_date(2026-09-28 实测) */
|
|
|
@JsonProperty("refund_time")
|
|
@JsonProperty("refund_time")
|
|
|
|
|
+ @JsonAlias({"refund_date", "refundDate"})
|
|
|
private String refundTime;
|
|
private String refundTime;
|
|
|
|
|
|
|
|
|
|
+ /** 规范叫 platform_trade_no,上游**实际**发的是 alipay_order_no(2026-09-28 实测) */
|
|
|
@JsonProperty("platform_trade_no")
|
|
@JsonProperty("platform_trade_no")
|
|
|
|
|
+ @JsonAlias({"alipay_order_no", "alipayOrderNo"})
|
|
|
private String platformTradeNo;
|
|
private String platformTradeNo;
|
|
|
|
|
|
|
|
private String title;
|
|
private String title;
|
|
|
|
|
|
|
|
|
|
+ /** 规范叫 rcv_amount,上游**实际**发的是 actual_money(2026-09-28 实测) */
|
|
|
@JsonProperty("rcv_amount")
|
|
@JsonProperty("rcv_amount")
|
|
|
|
|
+ @JsonAlias("actual_money")
|
|
|
private String rcvAmount;
|
|
private String rcvAmount;
|
|
|
|
|
|
|
|
@JsonProperty("fee_amount")
|
|
@JsonProperty("fee_amount")
|