Vortmall使用文档

购物车与结算

购物车与结算

本文档面向采购并使用 VortMall 电商系统的平台运营方,说明顾客端购物车、结算、优惠、运费及后台改价等核心业务路径。以下流程均支持多店铺购物车;结算时生成父订单并按店铺拆分为子订单,各店铺独立匹配运费模板与优惠。


1. 加入购物车流程

说明: 顾客在商品详情页选择规格(SKU)与数量后加入购物车;系统在写入前校验可售库存,避免超卖。

参与角色: 顾客、商品与库存服务、购物车服务。

flowchart TD
    startNode([顾客进入商品详情])
    selectSku[选择SKU与数量]
    clickAdd[点击加入购物车]
    validateInput{数量合法且大于0}
    checkStock{库存是否充足}
    addLine[写入或合并购物车行]
    showOk[提示加入成功]
    showFail[提示库存不足或不可售]
    startNode --> selectSku
    selectSku --> clickAdd
    clickAdd --> validateInput
    validateInput -->|否| showFail
    validateInput -->|是| checkStock
    checkStock -->|否| showFail
    checkStock -->|是| addLine
    addLine --> showOk

步骤说明:

  1. 顾客打开商品详情页,确认商品可售状态。
  2. 选择具体 SKU(规格组合)与购买数量。
  3. 点击「加入购物车」触发提交。
  4. 系统校验数量是否为正整数且在合理范围内。
  5. 系统按 SKU 查询实时可售库存(含占用与渠道规则)。
  6. 若库存不足或商品下架,拒绝写入并提示原因。
  7. 若通过校验,将购物车行写入或合并(同 SKU 累加数量)。
  8. 前端展示加入成功,顾客可继续购物或进入购物车。

特别说明:

  • 库存校验以服务端为准,避免仅依赖前端展示。
  • 多店铺商品分别落在对应店铺的购物车分组中,便于后续拆单。

2. 购物车管理流程

说明: 顾客在购物车中调整行项目:修改数量、删除单品、勾选或取消勾选参与结算的商品,以及一键清空;关键操作均会触发库存与可售性复核。

参与角色: 顾客、购物车服务、库存服务。

flowchart TD
    enterCart([进入购物车页])
    loadData[加载各店铺分组与行项目]
    userAction{用户操作类型}
    modQty[修改某行数量]
    delLine[删除某行]
    toggleSel[勾选或取消勾选]
    clearAll[清空购物车]
    revalidate[重新校验库存与价格快照]
    persist[保存购物车状态]
    enterCart --> loadData
    loadData --> userAction
    userAction --> modQty
    userAction --> delLine
    userAction --> toggleSel
    userAction --> clearAll
    modQty --> revalidate
    delLine --> persist
    toggleSel --> persist
    clearAll --> persist
    revalidate --> persist

步骤说明:

  1. 顾客打开购物车页面,系统按店铺加载分组、SKU、数量、单价快照及勾选状态。
  2. 修改数量时,系统校验新数量对应的库存与限购规则。
  3. 删除行项目时,从购物车移除该 SKU,不影响已下单历史。
  4. 勾选或取消勾选决定该行是否进入后续结算汇总。
  5. 清空购物车时,移除当前顾客购物车下全部行项目(可按产品策略二次确认)。
  6. 变更完成后持久化,刷新小计与可选「去结算」入口状态。

特别说明:

  • 仅勾选商品参与金额试算;未勾选商品保留在购物车但不计入待结算。
  • 价格可能随活动变化,结算页以提交订单时服务端计算为准。

3. 普通结算流程

说明: 从购物车勾选商品进入结算,经选择收货地址、确认商品与金额后提交生成订单;涵盖父订单与子订单结构及金额汇总。

参与角色: 顾客、地址服务、购物车服务、计价与订单服务、支付网关(生成待支付单)。

flowchart TD
    begin([勾选商品并去结算])
    toCheckout[进入结算页]
    pickAddr[选择或新增收货地址]
    confirmItems[确认商品清单与店铺分组]
    calcAmt[计算商品金额、运费、应付总额]
    review[顾客核对订单信息]
    submit[提交订单]
    createParent[创建父订单]
    createChildren[按店铺创建子订单]
    waitPay[进入待支付]
    begin --> toCheckout
    toCheckout --> pickAddr
    pickAddr --> confirmItems
    confirmItems --> calcAmt
    calcAmt --> review
    review --> submit
    submit --> createParent
    createParent --> createChildren
    createChildren --> waitPay

步骤说明:

  1. 顾客在购物车勾选待结算商品,点击「去结算」。
  2. 系统跳转结算页,加载默认可用收货地址,支持切换或新增。
  3. 展示按店铺分组的商品明细、数量、单价与行小计。
  4. 系统根据地址、配送方式及运费模板计算各子订单运费与订单总额。
  5. 顾客核对商品、地址、金额与发票等(若业务开启)。
  6. 提交订单:创建父订单记录整体汇总,再按店铺拆分子订单。
  7. 订单进入待支付状态,顾客选择支付方式完成支付。

特别说明:

  • 多店铺场景下父订单承载整单维度信息,子订单独立履约与对账。
  • 提交成功以服务端落单为准,需处理并发与库存最终扣减策略。

4. 使用优惠券结算流程

说明: 结算过程中系统可按规则自动匹配可用优惠券,顾客也可手动选择一张适用券;系统计算抵扣额并从应付金额中扣减。

参与角色: 顾客、营销与优惠券服务、计价服务。

flowchart TD
    enterPay([进入结算页])
    loadCart[确定待结算商品与金额基数]
    autoMatch[系统自动匹配可用券列表]
    userPick{顾客手动选券或改券}
    applyRule[按券规则计算抵扣金额]
    adjustTotal[重算应付总额]
    lockCoupon[下单时占用券]
    enterPay --> loadCart
    loadCart --> autoMatch
    autoMatch --> userPick
    userPick --> applyRule
    applyRule --> adjustTotal
    adjustTotal --> lockCoupon

步骤说明:

  1. 进入结算页后,系统根据当前购物车行、店铺、品类、金额门槛拉取可用优惠券。
  2. 系统可默认勾选一张推荐券(若策略开启),顾客可更换或取消使用。
  3. 选择优惠券后,按券类型(满减、折扣、指定商品等)计算本单可抵扣金额。
  4. 抵扣不得超过应付商品与运费等规则允许的上限,且不与互斥活动冲突。
  5. 顾客确认后,提交订单时对所选券进行占用,防止重复使用。
  6. 若支付超时或取消,按业务规则释放券占用。

特别说明:

  • 多子订单时需在业务规则中明确优惠券归属父单还是某一子单,避免重复抵扣。
  • 券与积分、余额叠加规则以平台配置为准。

5. 使用积分抵扣结算流程

说明: 顾客在结算时选择使用账户积分抵扣部分现金;系统根据积分余额、抵扣比例及单笔上限计算实际抵扣额。

参与角色: 顾客、会员与积分服务、计价服务。

flowchart TD
    openCheckout([结算页展示积分入口])
    showBalance[展示可用积分与规则说明]
    inputPoints{顾客输入或勾选使用积分}
    capCheck{是否超过单笔上限与应付上限}
    calcDeduct[计算积分折算金额]
    mergePay[与券、余额等叠加后重算应付]
    freezePts[提交订单时冻结积分]
    openCheckout --> showBalance
    showBalance --> inputPoints
    inputPoints --> capCheck
    capCheck -->|否| showBalance
    capCheck -->|是| calcDeduct
    calcDeduct --> mergePay
    mergePay --> freezePts

步骤说明:

  1. 结算页展示顾客当前可用积分及积分抵现规则(比例、最小使用单位、单笔上限)。
  2. 顾客选择使用积分数量或勾选「最大可用积分」类选项。
  3. 系统校验不超过账户余额、单笔抵扣上限及不超过应付可抵部分。
  4. 将积分按规则折算为抵扣金额,并从应付总额中扣减。
  5. 与优惠券、活动、余额支付等按配置顺序叠加计算最终应付。
  6. 提交订单时冻结相应积分,支付成功则扣减;失败或取消则解冻。

特别说明:

  • 积分抵扣通常设有「最多抵订单金额的某百分比」等上限,需在界面明确提示。
  • 退款时需按策略回退积分与现金部分。

6. 余额支付结算流程

说明: 顾客使用预存账户余额支付订单,可与在线支付组合:优先或按比例扣减余额,剩余部分走第三方支付。

参与角色: 顾客、账户与余额服务、支付网关、订单服务。

sequenceDiagram
    participant cust as 顾客
    participant ord as 订单服务
    participant bal as 余额服务
    participant pay as 支付网关

    cust->>ord: 提交订单并选择余额支付
    ord->>bal: 查询可用余额
    bal-->>ord: 返回余额与冻结策略
    ord->>ord: 计算需余额金额与需在线支付金额
    alt 余额足额
        ord->>bal: 扣减余额并记账
        bal-->>ord: 成功
        ord-->>cust: 订单已支付
    else 余额不足需组合支付
        ord->>bal: 扣减全部可用余额
        ord->>pay: 发起剩余金额在线支付
        pay-->>cust: 拉起收银台
        pay-->>ord: 异步支付结果
    end

步骤说明:

  1. 顾客在支付页选择「余额支付」或「余额 + 在线支付」组合方式。
  2. 系统查询账户可用余额(扣除冻结与风控限制)。
  3. 若余额大于等于应付总额,直接扣减余额并完成订单支付。
  4. 若余额不足,按规则先扣满余额,剩余金额生成在线支付单。
  5. 在线支付成功后合并记账,订单进入已支付;任一步失败则按事务或补偿回滚余额。
  6. 全链路记录流水,便于对账与审计。

特别说明:

  • 余额扣减与第三方支付需保证幂等与一致性,避免重复扣款。
  • 多子订单场景需明确余额分摊至父单或子单的记账口径。

文档版本说明:流程与字段以实际部署的配置与版本为准;上线前请结合合同与实施清单做验收。

购物车与结算
Enter search text
Outline
购物车与结算
1. 加入购物车流程
2. 购物车管理流程
3. 普通结算流程
4. 使用优惠券结算流程
5. 使用积分抵扣结算流程
6. 余额支付结算流程