商城全链路产品设计

为斗半匠内容学习 App 增加图书购买能力,承接用户在 App 内直接购书的需求。

我的职责

整体产品方案、业务流程、原型与需求设计;协调运营、研发、测试及 ERP 对接,推动分阶段交付。

商城商品、交易与履约主题配图
01

一期范围:实物商城

一期优先承接图书等实物商品,覆盖运营配置、用户交易、ERP 履约和售后。方案按上下游关系拆分开发与提测,以下沿实际业务流程展开。

从供给到售后的完整主链
  1. 01创建商品运营配置与履约关联
  2. 02上架展示首页、分类与详情
  3. 03选择与加购规格、数量与校验
  4. 04确认订单金额与交易快照
  5. 05创建与支付现金、章鱼币与库存
  6. 06发货与收货包裹与物流进度
  7. 07售后与恢复退款、退货与补发

以下图解依据项目方案重构;示例用于说明规则。

02

配置商品与交易规则

先建立分类与共用配置,再创建实物商品、生成规格并配置价格、库存和售卖方式。商品内容进入 App 展示,交易规则继续约束下单与售后,ERP 关联用于承接实物履约。

从基础配置,到一件可以上架的商品

  1. 01

    建立分类与共用配置

    标准分类承接参数模板、服务标签、FAQ 和商品底栏;运营分类用于展示与筛选。运费采用商城全局公用规则,退货地址供商品关联与售后使用。

  2. 02

    创建商品内容

    填写名称、简介、主图与详情,选择标准分类和运营分类。参数从模板初始化,保存后成为商品自身数据;服务与 FAQ 等展示内容在页面请求时读取最新分类配置。

  3. 03

    生成规格,配置价格与履约关系

    规格值组合生成 SKU,分别维护规格图、售价、限购和上架状态;关联有效的 ERP App 店铺商品,并维护商城本地库存。

    同时确定章鱼币抵扣方式

    章鱼币是 App 内用于换购或抵扣的账户余额,商品可配置三种方式。

    不抵扣
    仅现金购买。
    部分抵扣
    设置最高抵扣比例;上限为 100% 时,币量充足可全部用币,不足可补现金,适配灵活的正常售卖。
    全额抵扣
    币量达到要求才可购买,不支持补现金。
    • 固定币值:直接配置币量,主要用于会员权益。
    • 按价值:按人民币价值换算币量,适配正常售卖与成本控制。

    购买兑换比例决定获得的币量;支付兑换比例用于结算换算。固定币值不随比例变化,按价值使用最新支付兑换比例。

  4. 04

    确定售卖方式与展示条件

    配置章鱼币抵扣方式、商品上下架、列表显示与预热时间。隐藏控制列表曝光,上下架控制能否购买;两类状态分别生效。

03

从发现商品,到确认购买选择

用户从首页、分类、搜索或运营资源位进入商品详情,确定规格和数量后,可立即购买,也可先加入购物车统一结算。

01

发现商品

首页、分类、搜索

02

查看详情

内容、参数、服务

03

选择规格

确认数量与价格

立即购买

带入当前商品

加入购物车

勾选商品后结算

04

下单页

确认地址与金额

提交前复核:加购、去结算及提交订单分别校验。规格失效支持重选,下架商品禁止结算,库存不足需调整数量,价格变化则刷新后由用户重新确认。

04

从确认金额,到完成下单支付

下单先形成交易金额,再将优惠和抵扣记到商品行,最后按支付结果处理库存与资金。三个环节使用同一笔订单记录,前后承接。

A

下单总流程

  1. 确认商品与地址

    立即购买与购物车进入同一下单页。确认规格、数量及收货地址,按地区匹配商城共用运费规则。

  2. 确认优惠与抵扣后的金额

    展示商品金额、运费、章鱼币抵扣与现金实付;余额、商品抵扣上限及单次、单日额度共同约束可用币量。

  3. 提交并由服务端复核

    重新核对商品、价格、库存、运费、地址与章鱼币额度,创建订单并保存商品行金额记录。

支持后续优惠扩展的金额计算顺序

  1. 商品原价
  2. 商品级优惠后金额
  3. 扣除订单级优惠
  4. 扣除章鱼币抵扣
  5. 加运费
  6. 现金实付

商品折扣先形成商品行金额;订单级优惠再按各行金额占比分摊。先对商品优惠后金额计算章鱼币抵扣,再加运费,形成现金实付;运费不参与章鱼币抵扣。

B

金额分摊逻辑

按商品金额占比,分配订单优惠

先算单品折扣,再将整单优惠分到参与商品。分摊后的商品金额,继续用于计算章鱼币抵扣上限。

独立算例:两件商品共同使用 30 元订单优惠

A、B 已扣除单品折扣,尚未扣除订单优惠;均参与本次优惠。

商品单品折扣后金额金额占比分得订单优惠分摊后金额
A100 元1/330 × 1/3 = 10 元90 元
B200 元2/330 × 2/3 = 20 元180 元
合计300 元100%30 元270 元

精度处理优惠分摊保留 2 位小数,舍入差额补到参与分摊金额最大的商品行;金额相同时按订单商品顺序。

先计算本单最多可用币量,再接受用户输入

以下可用量计算与分摊示例针对部分抵扣商品。固定币值商品直接读取配置币量;全额抵扣商品先校验完整所需币量,不能通过降低用币量或补现金购买。

  1. 计算商品可用上限

    对参与部分抵扣的商品,依据各行订单优惠后金额与抵扣比例,按支付兑换比例换算为币量,再汇总可用上限。

  2. 叠加账户与订单限制

    本单最多可用量同时受商品合计上限、账户余额、单次上限、当日剩余额度和商品优惠后应付金额对应币量(不含运费)约束,取这些限制中最小的值。

  3. 限制输入,再计算分摊

    页面显示本次最多可用币量,手动输入和步进器不能超过该值;按用户实际选择的币量分摊,修改输入后重新计算。提交时服务端再次复核。

全额抵扣商品仍须满足完整所需币量;币不足时不能通过降低输入来购买。

先按金额比例分配,再处理商品上限

直接按商品金额比例分配,可能超过某件商品允许的抵扣量。方案先按比例预分配,锁定超限商品的可用上限,再把剩余抵扣分给其他商品,直到没有超限。

演示订单:商品共 200 元,用户选择用 600 币抵 60 元

A、B 均为部分抵扣商品,抵扣上限分别为 20% 和 100%。示例未叠加商品折扣或优惠券:支付兑换比例为 100 币 = 10 元,运费为 0,余额与支付额度充足。

商品行商品金额抵扣上限首次按比例分配调整后抵扣
A · 2 件 × 50 元100 元20% / 20 元30 元,超过上限锁定 20 元
B · 1 件 × 100 元100 元100% / 100 元30 元承接剩余 40 元
A 释放超出的 10 元抵扣B 从 30 元调整到 40 元
保存到商品行现金实付章鱼币实付合计商品价值
A · 2 件80 元200 币,抵 20 元100 元
B · 1 件60 元400 币,抵 40 元100 元
整单合计140 元600 币,抵 60 元200 元

分摊后同时满足:整单总额一致、商品抵扣不超限、币量不超余额与额度、各项结果非负。

下单分摊的精度与记录

前端预估,服务端复核后记录各商品行的现金实付和章鱼币实付。用户输入章鱼币使用整数;系统分摊保留 1 位小数,差额补到可分摊章鱼币数量最大的商品行,数量相同时按订单商品顺序。下单页只呈现整单抵扣与现金实付。

C

支付与扣款

交易事件库存处理章鱼币与现金
创建订单预占购买数量直接扣除所用章鱼币;现金大于零时调起微信支付
支付成功实际扣减,解除预占记录支付结果,订单进入待发货;零现金订单无需调起微信
取消 / 超时关闭释放预占返还原付币量并释放单日额度

支付失败时,业务订单在付款时限内仍可继续支付;当前支付结果取最新一次支付单,历史失败记录不会覆盖后续成功结果。

05

支付后抛单到 ERP,发货结果回到商城

支付完成后,商城将订单抛给 ERP 承接出库发货。ERP 发货消息回传后,商城更新发货信息和订单状态,再使用 ERP 提供的物流单号查询物流,向用户展示包裹进度。

  1. 01

    商城 → ERP:支付完成后抛单

    把已支付订单及商品履约信息交给 ERP,衔接后续仓储处理。

  2. 02

    ERP:出库与发货

    仓储发货在 ERP 完成,形成发货结果和物流单号。

  3. 03

    ERP → 商城:同步发货消息

    商城接收消息,更新商品发货、包裹和订单状态;部分发货与全部发货分别处理。

  4. 04

    商城:根据物流单号查询轨迹

    使用 ERP 提供的物流单号查询物流,App 展示包裹进度,承接查看物流、确认或延长收货。

关联状态分别记录,订单主线由业务事件推进

对象记录职责关键关联
订单待支付、待发货、部分发货、待收货、已完成、已关闭支付成功、发货消息、收货和关闭事件推进主状态
支付单每次支付尝试及结果失败不直接关闭订单,当前结果取最新支付单
包裹商品发货与物流进度已发商品按包裹展示,未发商品单独保留
售后单本次售后的审核、处理和结果售后处理中保留订单主进度,另行展示售后节点

部分发货订单同时承接待发货与待收货列表,详情分开呈现已发包裹和未发商品。

06

从售后申请,到退款或补发完成

用户从订单选择商品,发起仅退款或退货退款;客服从后台还可发起补发。申请进入审核后,按类型走不同处理路径,再分别记录处理状态和退款结果。

A

按售后类型衔接 App 进度与处理节点

同一商品行同时只允许一个进行中的售后单;本次处理结束后才能再次申请。售后进度与原订单履约进度分别保留。

仅退款

无需退货;未发货订单仅支持此类型,售后数量与金额不可编辑。

App 阶段正常处理异常 / 可退出分支
发起申请选择售后商品并提交退款申请。
商家审核待审核,客服通过后进入退款处理中。

撤销待审核可取消,显示“售后已撤销”。

拒绝显示“售后不通过”和拒绝理由。

审核通过后退款失败退款处理仍为进行中;临时故障重试,不可恢复或重试耗尽转人工,成功到账后才完成。

售后完成退款成功到账,记录已退现金和币量。成功到账前不标记完成。

退货退款

退回商品后退款,按申请、审核、退货、收货及退款结果推进。

App 阶段正常处理异常 / 可退出分支
发起申请选择商品、售后数量并提交申请。
商家审核承接待审核、待 ERP 审核,通过后进入退货。

撤销 / 拒绝两个审核节点可取消;客服或 ERP 审核拒绝时,显示拒绝理由。

买家退货待用户退货,填写快递公司和快递单号。提交物流后,可按规则修改物流信息。

撤销 / 超时此阶段可取消;未按时上传物流则自动取消,可重新发起。

商家收货待商家收货,收到退货后进入退款处理中。

退款失败售后保持进行中,按原因重试或转人工。

售后完成退款成功到账,更新商品行已退记录。成功到账前不标记完成。

补发

仅后台客服可发起,App 查看进度;发起后暂停收货倒计时,后台确认补发成功后继续。

App 阶段正常处理异常 / 可退出分支
发起申请后台客服发起,App 查看进度。
商家审核承接待审核、待 ERP 审核,核实补发信息。

撤销 / 拒绝两个审核节点可取消;审核不通过则结束申请并保留理由。

商家补发待商家发货 → 发货成功,提供补发物流查询。
补发完成记录补发成功,由后台人工确认用户收货后完结。
B

退款金额与章鱼币分摊

先确定分摊范围与每行可退上限

  1. 选择本次售后商品与数量

    依据商品原付金额和本次售后数量确定处理范围。

  2. 扣除历史已退,得到本次可退额度

    分别读取现金与章鱼币的原付、已退和剩余可退数据,防止多次申请累计超过商品实付。

  3. 确认本次实际退款金额与退币数量

    退款总额变化后,按各商品可退金额比例分摊;退币数量变化后,按各商品可退币量比例分摊。

一笔混合退款,同时核对现金与章鱼币

沿用下单示例:本次退现金 70 元、章鱼币 300 币

商品 A、B 已发货,选中两行全部数量,无历史退款、运费为 0。示例未叠加营销优惠;本次退款额用于演示,不代表固定退款比例。

商品行本次可退依据本次退款分摊
现金章鱼币现金章鱼币
A · 2 件80 元200 币40 元70 × 80 / 140100 币300 × 200 / 600
B · 1 件60 元400 币30 元70 × 60 / 140200 币300 × 400 / 600
合计140 元600 币70 元300 币

现金按可退金额占比分,章鱼币按可退币量占比分;同一商品行的两种比例可以不同,分别核对合计与上限。

处理舍入差额,并更新商品行退款记录

处理项现金退款章鱼币退款
计算精度保留 2 位小数保留 1 位小数
差额归属补到可退金额最大的商品行补到可退币量最大的商品行
额度相同按订单中的商品顺序处理
完成后记账更新各行累计已退现金更新各行累计已退币量

前端可以预估,提交时由服务端再次确认;退款成功后更新各行已退记录,后续可退额度扣除已退部分。章鱼币按原付数量返还,不使用新汇率重新折算。

优惠与运费:预留营销模型中,退款沿用下单分摊结果,不追回已享受的订单优惠;整单取消退券,部分退款不退券。未发货订单退运费,已发货订单不退。章鱼币按原付币量返还,不按新汇率重算。

07

先打通整体方案,再分阶段提测

商城范围较大,测试资源有限。我先梳理完整技术框架和上下游关系,再按“商品管理与 ERP 商品对接—App 订单与 ERP 发货—售后流程”拆分开发与提测。

  1. 01

    商品管理与 ERP 商品对接

    先建立商品供给、规格配置与履约关联,为 App 交易提供基础。

  2. 02

    App 订单与 ERP 发货

    接通选购、结算、支付、库存变化与物流结果回传。

  3. 03

    售后流程

    继续承接退款、退货、补发以及处理失败后的恢复路径。

用跨模块规格,补齐单页需求的前后关系

除页面原型和模块需求外,我整理了跨模块链路规格,让研发能沿订单过程理解库存、支付、履约和售后的影响,也让测试围绕完整业务路径组织验证。

交付范围

完成实物商城整体产品设计,按商品、交易履约、售后三个阶段推动交付。

其他案例