拆单支付和多笔退款
关于高客单价商品的订单模型设计。
为什么需要?
常规的电商订单设计里,是没有拆单支付这个概念的。一个订单,一个商品,一次支付,这是电商订单的基石。哪怕是一次购买几件商品的订单,付费成功后,系统也会将订单给拆分为一一关系。
但在高客单价的商品订单里就有不适合的用户场景。比如单价上万甚至几十万的产品,会遇到用户需求将一个商品分多次来完成付款,例如使用微信钱包支付一部分,使用支付宝支付一部分,使用信用卡支付一部分。
此时如果说继续使用通常的电商订单模型,商家要么让用户自己解决问题,比如汇集金额到一个账户来完成付款。要么就需要客服人员来修改原订单价格,再创建几个补差价的订单,让用户完成多个订单来购买一个目标商品。
如此带来的问题:
- 用户体验变差,延长了结单流程
- 需要操作人员参与交易流程
- 订单和商品不再绑定导致的财务核销问题
所以我们理想的用户场景:用户可以自己将高客单价订单按自己理想的方式拆分付款,完成交易,多笔入账关联到一个商品上去。
同样,在高客单价订单里,特别是出售长期服务时间的商品中。出现售后议价等场景,这时多笔退款无疑也是有支持的必要性。
支付流程
故此,为了解决这个特定业务形态下的问题,需要对通常的订单结构进行修改。
常见的订单流程
- 用户下单,生成商品订单
- 用户通过第三方支付渠道完成支付
- 收到支付渠道的到账确认后,记录第三方支付流水号对账,并发送商品,完成订单交易。
- 如果本订单之后产生退款,尽可能的从原支付途径退款。如果原支付渠道由于超时等原因,无法原支付途径退款,那么进入财务出账系统。
订单结构:
商品订单(订单号)
|— 支付流水
|— 退款流水
为了支持拆单支付、多笔退款,将订单结构调整为:
商品订单 (订单号)
|— 支付流水A
|— 退款流水A1
|— 退款流水A2
|— 支付流水B
|— 退款流水B
从原本的支付和退款都基于订单来关联,调整为向上绑定关系。
一个商品订单创建时,生成默认的支付流水,当满足条件时,用户可以自己在订单支付界面进行拆分操作,比如原本100%金额的支付流水拆分成2个50%的支付流水,然后在分别完成支付。
系统在收到全部支付流水完成支付,才判定为订单支付完成。在这个过程中,如果长时间只收到部分金额,那么还需要设计一个订单超时自动将已收款项退回给用户的功能。
商品订单 (订单号)
|— 支付流水A (已支付)
|— 退款流水A1 (订单超时,未全额到账自动发起退款)
|— 支付流水B (未支付)
在这个结构模型下,基于原路进原路出的原则,退款将从支付流水下生成,绑定的关系其实已经是支付流水,间接关联商品订单。
原路进原路出:资金的流动本身,其实是有成本的,比如银行转账;支付宝、微信等第三方支付商的收款、出款。