2.5 KiB
2.5 KiB
微信小程序 · 订单详情尾款金额(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逻辑本次同步生效(口径一致) - 历史订单不回迁数据,但下次读详情时按新公式现算,立即生效
相关
- PR:wx/HL#1306
- 部署:
hl-order-service-v2(8094)