hl-api-changelog/changelogs/2026-04/2026-04-23_mp-order-balance-amount-unified.md
yaosutu 17648b8961 changelog(mp): 04-23 下午批次 7 篇 — 合同强类型 VO / 退款 ratio / balance 统一 / 头像 / groupBatchId / 小童保留 / 行前清单拆分
- #1314 mp-contract: Map → MpContractVO / MpContractDetailVO 强类型化
- #1313 mp-refund preview refundRatio 恒 0 bug 修复
- #1306 mp-order balanceAmount 计算口径统一(FULL 也返回, 公式含 paid)
- #1309 mp-order guide/photographer avatarUrl 快照补齐(新订单生效)
- #1300 mp-order detail 新增 groupBatchId(GROUP 才有值)
- #1298 mp-group order youngChildCount 保留不再强制清零
- #1289 mp-pre-trip checklist 6→7 项 + DEPARTURE_INFO + WARNING 状态
2026-04-23 16:43:36 +08:00

2.4 KiB

MP 订单详情 · 尾款金额balanceAmount计算口径统一

  • 变更日期: 2026-04-23
  • PR: #1306
  • 影响面: 小程序端 · 订单详情页尾款金额展示 + 下单流程 paymentType 回填
  • 兼容性: 前端零改动;已付款的订单 balanceAmount 语义更严谨、更广泛

变化一:订单详情 balanceAmount 字段适用范围扩大 + 公式统一

以前

只在订金订单(paymentType=DEPOSIT)且 depositAmount 非空时返回 balanceAmount。全款订单(paymentType=FULL不返回该字段(或为 null

现在

所有订单都返回 balanceAmount,统一口径:

balanceAmount = max(0, totalPrice - discountAmount + surchargeAmount - paidAmount)
  • paidAmount:已支付金额(订金支付后 = 订金金额;尾款已付 = 全款)
  • 永远 ≥ 0不会出现负数
  • 全款订单 paidAmount=0 时 balance = totalPrice未付;paidAmount=totalPrice 时 balance = 0已付清

前端接入影响

  • 原先用 paymentType===DEPOSIT 判断才读 balanceAmount 的逻辑可以保留,仍然工作
  • 如果想给全款订单也展示「待支付金额」,直接读 balanceAmount 即可
  • "待支付金额 = 0" 代表订单已付清(可用于隐藏支付按钮)

变化二:下单时 paymentType 不再被 quote 覆盖为 FULL

以前

CORE 产品下单时,如果 quote 接口没返回 paymentType,后端会强制把订单 paymentType 设为 FULL,覆盖产品快照里的默认值。

现在

quote 返回 paymentType 非空 → 使用 quote 的值;quote 返回 null → 保留产品快照里的默认值setProductInfoOnOrder 阶段已设好)。

前端接入影响

  • 下单后拿到的订单 paymentType(详情接口)会更准确地反映产品本身的支付模式FULL / DEPOSIT
  • 原来因为这个覆盖逻辑导致 DEPOSIT 订金订单被错写成 FULL 的情况,不会再发生

不影响范围

  • 下单请求体(/mp/order/create零变化
  • 订金/尾款金额(depositAmount / depositRatio零变化
  • 管理端订单详情 balanceAmount 逻辑本次同步生效(口径一致)
  • 历史订单不回迁数据,但下次读详情时按新公式现算,立即生效

相关

  • PRwx/HL#1306
  • 部署:hl-order-service-v28094