VortMall 使用文档

退款管理

售后申请通过后涉及到需退款的业务需要在此栏目下单独操作。如下图所示,选择指定的售后订单,输入所需要退款的金额(可选择退款渠道),同意退款后在线支付金额会原路退回.余额会返回客户余额,线下需自行与客户联系。

image.png

image.png

退款日志记录了所有售后的信息,所有记录有迹可循。

image.png

1. 在线退款流程

说明: 用户或运营发起的退款在审核通过后,系统向原在线支付渠道发起退款请求,资金按渠道规则原路退回用户支付账户;退款结果以渠道异步通知或查询为准。

参与角色: 用户或运营、VortMall 退款服务、原支付渠道、订单与售后、支付日志。

sequenceDiagram
    participant op as 用户或运营
    participant refund as 退款服务
    participant ch as 原支付渠道
    participant log as 支付与退款日志
    op->>refund: 发起或审批通过退款
    refund->>log: 校验原支付单可退金额
    refund->>ch: 提交退款申请
    ch-->>refund: 受理返回退款单号
    ch->>refund: 异步通知退款结果
    refund->>refund: 验签与状态更新
    refund->>log: 更新退款流水与订单退款状态

步骤说明:

  1. 售后或运营流程审核通过,生成退款单并指定退款金额(不超过可退上限)。
  2. 退款服务根据原支付单定位渠道、商户订单号、渠道交易号。
  3. 调用微信、支付宝或 PayPal 等退款 API,传入退款单号、金额、原交易标识。
  4. 渠道返回受理结果;异常时记录失败原因并支持重试或人工处理。
  5. 渠道异步通知退款成功或失败;验签后更新退款流水状态。
  6. 同步更新订单或售后单的已退款金额与状态;通知用户到账提示(按渠道实际到账时间)。
  7. 若部分退款,保留剩余可退额度供后续再次申请。

特别说明:

  • 退款请求号在商户侧应唯一,避免重复退。
  • 跨境 PayPal 退款需遵守原币种与原 capture 规则。

2. 余额退款流程

说明: 当退款策略为退回用户账户余额时,系统增加用户可用余额并写入余额入账流水,不涉及外部渠道;可与订单关闭、售后单完结联动。

参与角色: 用户或运营、VortMall 退款服务、账户余额服务、订单与售后。

flowchart TD
    startNode([退款审核通过])
    routeCheck{退款去向是否为余额}
    onlineRef[走在线原路退款见第7节]
    creditBal[增加用户可用余额]
    writeFlow[写入余额退款入账流水]
    linkOrder[更新订单或售后退款状态]
    finishNode([完成通知用户])
    startNode --> routeCheck
    routeCheck -->|否| onlineRef
    routeCheck -->|是| creditBal
    creditBal --> writeFlow
    writeFlow --> linkOrder
    linkOrder --> finishNode
    onlineRef --> finishNode

步骤说明:

  1. 审核通过且配置为「退款至余额」时进入本流程。
  2. 校验用户账户状态正常,无司法冻结等限制。
  3. 在事务内增加可用余额,金额等于本次批准退款额。
  4. 写入余额流水,类型为退款入账,关联原订单与退款单号。
  5. 更新订单或售后状态,累计已退款金额。
  6. 用户可在余额明细中查看到账记录。

特别说明:

  • 与余额支付扣减使用同一套账户科目,保证账务可核对。
  • 若需同时支持原路退回与退余额,由第 9 节拆分规则决定各段金额。

3.退款金额拆分流程

说明: 混合或多种支付来源的订单发生退款时,按原支付方式比例拆分退款额:线上支付部分优先原路退回,其次退回余额部分,剩余归为线下处理部分。计算顺序与公式如下。

参与角色: 退款服务、支付日志(各渠道已付与已退)、运营(线下处理)、用户。

计算规则(每笔退款申请内):

  • onlineBalance = min(退款额, 原线上支付额 - 已线上退额)
  • 剩余金额 rem1 = 退款额 - onlineBalance
  • refundBalance = min(rem1, 原余额支付额 - 已余额退额)
  • rem2 = rem1 - refundBalance
  • offlineBalance = rem2(即「剩余」全部归入线下处理额度)
flowchart TD
    startNode([输入退款总额])
    calcOnline["onlineBalance=min(退款额,原线上-已线上退)"]
    rem1["rem1=退款额-onlineBalance"]
    calcBal["refundBalance=min(rem1,原余额-已余额退)"]
    rem2["rem2=rem1-refundBalance"]
    offline["offlineBalance=rem2"]
    routeOnline{onlineBalance大于0}
    routeBal{refundBalance大于0}
    routeOff{offlineBalance大于0}
    doOnline[向渠道发起原路退款]
    doBal[入账用户余额]
    doOff[生成线下处理任务或待办]
    doneNode([更新退款单各段状态])
    startNode --> calcOnline
    calcOnline --> rem1
    rem1 --> calcBal
    calcBal --> rem2
    rem2 --> offline
    offline --> routeOnline
    routeOnline -->|是| doOnline
    routeOnline -->|否| routeBal
    doOnline --> routeBal
    routeBal -->|是| doBal
    routeBal -->|否| routeOff
    doBal --> routeOff
    routeOff -->|是| doOff
    routeOff -->|否| doneNode
    doOff --> doneNode

步骤说明:

  1. 读取订单原始支付构成:原线上支付额、原余额支付额、原线下记帐额(若有)。
  2. 读取已累计:已线上退款额、已余额退款额、已线下处理额。
  3. 按公式计算本次 onlineBalancerefundBalanceofflineBalance,三者之和应等于本次退款额。
  4. onlineBalance > 0,向对应渠道发起原路退款(可能多笔子流水)。
  5. refundBalance > 0,执行第 8 节余额入账流程。
  6. offlineBalance > 0,生成线下退款工单或由运营线下打款并回填凭证。
  7. 更新退款单各段状态,便于对账与审计。

特别说明:

  • min 与「剩余」顺序保证线上优先、余额次之、线下兜底,避免超额分段。
  • 多次部分退款时每次都基于「已退」累计量重新计算,避免重复退。

4. 一次退款的完整闭环

用户发起售后起,经审核、退货物流、商家确认、退款计算、原路退回、库存与财务冲销直至用户收到退款的全流程。

参与角色: 消费者、平台客服/售后规则引擎、商家、仓储库存、支付渠道、结算账务。

flowchart TB
    subgraph applyRefund["申请与审核"]
        userApply["用户发起售后(退款/退货退款)"]
        platformAudit["平台或商家审核"]
        auditReject["审核拒绝"]
        auditPass["审核通过"]
    end
    subgraph returnFlow["退货物流"]
        needReturn{"是否需要退货"}
        userShip["用户填写运单寄回"]
        merchantRecv["商家确认收到退货"]
        inspectGoods["验货与责任判定"]
    end
    subgraph calcRefund["退款计算"]
        calcAmount["计算应退金额(商品/运费/优惠券等)"]
        splitRefund["按原支付拆分退款路径"]
    end
    subgraph systemSync["系统联动"]
        restoreStock["恢复库存(可售)"]
        reverseLedger["冲销或调整结算分账"]
        notifyUser["通知用户退款进度"]
    end
    subgraph payRefund["退款到账"]
        channelRefund["支付渠道执行退款"]
        userAccount["原支付方式到账"]
    end
    userApply --> platformAudit
    platformAudit --> auditReject
    platformAudit --> auditPass
    auditPass --> needReturn
    needReturn -->|"否"| calcAmount
    needReturn -->|"是"| userShip
    userShip --> merchantRecv
    merchantRecv --> inspectGoods
    inspectGoods --> calcAmount
    calcAmount --> splitRefund
    splitRefund --> restoreStock
    splitRefund --> reverseLedger
    splitRefund --> notifyUser
    splitRefund --> channelRefund
    channelRefund --> userAccount

分步说明:

  1. 用户在订单可售后时限内发起申请,选择仅退款或退货退款并说明原因。
  2. 平台或商家按规则审核;不通过则流程结束或用户可补充材料申诉。
  3. 审核通过后,若需退货,用户寄回商品并填写物流单号。
  4. 商家签收退货后验货,确认与售后单一致(或进入争议处理分支)。
  5. 系统根据商品金额、运费承担、已用优惠券/积分规则计算应退金额。
  6. 按原支付组合拆分退款(如微信+余额则分别退回)。
  7. 可售库存按规则恢复;财务侧冲销或调整已入账的分账与待结算数据。
  8. 向用户推送退款受理与到账通知;支付渠道退款成功后用户账户收到款项。

特别说明与规则:

  • 已确认收货超过售后期限可能关闭售后入口,除非平台特批。
  • 部分退款时,服务费与分销佣金可能按比例冲回,以平台结算规则为准。
  • 跨境或特殊支付方式可能存在退款时效与币种差异。

文档结束。若各业态(国内 / overseas)开关不同,请在部署层区分渠道配置与回调 URL,业务逻辑以订单与支付单上的渠道字段为准。

退款管理
请输入搜索内容
大纲
1. 在线退款流程
2. 余额退款流程
3.退款金额拆分流程
4. 一次退款的完整闭环