楠木轩

商户退款订单应如何兼容多方退款规则

由 缑风彩 发布于 科技

编辑导语:网购时,我们对于不满意或者有瑕疵的商品会在网上进行退款,如果我们在购买商品时是用了优惠券,那选择退款的时候系统会是一个什么样的退款流程?本文作者站在聚合支付服务商的视角为我们介绍支付宝和微信的退款流程的差别。

本文是站在聚合支付服务商的视角介绍支付宝与微信在处理退款流程的差别,商户端与用户端在体验上区别有哪些,在系统设计中如何兼容支付宝与微信退款的不同。

一、退款类型区分

交易退款时需要区分支付订单是否有使用优惠券,使用优惠券需要分为商家资金优惠券还是无资金券。

资金券属于商家预充值优惠券,交易结算时,优惠金额部分也回相应的结算给商家;而无资金券则是商家与微信、支付宝无任何资金往来,仅仅只是生成优惠券,结算时根据用户实际金额结算给商家。

根据退款金额可以分为部分退款和全部退款,如下图所示:

二、梳理全部退款规则1. 支付宝全部退款规则

由于支付宝资金券的产生条件比较苛刻,充值金额需达到百万级别,对于普通商户难以承受,实际支付过程中所遇到的比较少,所以对于支付宝先介绍无资金券的使用情况。

①无优惠券情况退款规则:

②无资金券退款规则:

  • 商户扣款金额=原交易订单金额-优惠金额
  • 用户收款金额=原交易订单金额-优惠金额

优惠券不退回用户账户

2. 微信全部退款规则

①无优惠券情况退款规则:

②资金券退款规则

  • 商户扣款金额=原交易订单金额
  • 用户收款金额=原订单交易金额-优惠金额

判断优惠券是否到期,如果到期资金券退回至出资账户中;如未到期退回至用户账户中,可在下次支付中使用。

②无资金券退款规则:

  • 商户扣款金额=原交易订单金额-优惠金额
  • 用户收款金额=原交易订单金额-优惠金额

判断优惠券是否到期,如果到期资金券退回至出资账户中;如未到期退回至用户账户中,可在下次支付中使用。

三、梳理部分退款规则1. 支付宝部分退款规则

①无优惠券退款规则

②无资金券退款规则

部分退款时是先退实付金额,然后再退优惠劵金额,优惠劵不会退还给用户。

举个栗子:100元的订单,使用了10元优惠劵,用户实付90元,商家实收90元。

第一次部分退款50元,用户实收退款金额为50元;

第二次部分退款剩下的50元,就是退款40元+优惠劵10元,用户实收退款金额为40元。

2. 微信部分退款规则

①无优惠券退款规则

②资金券退款规则

  • 商户扣款金额=申请退款金额
  • 用户收款金额=申请退款金额*(用户实际支付金额/订单总金额)
  • 资金券出资账户收款=申请退款金额*(优惠金额/订单总金额)

举个栗子:小王购买两件商品每件50元,总订单金额100元,使用微信支付资金券抵消10元,实际支付金额90元;小王支付成功后,决定退货一件商品,其对应收到的退款金额为:50元*(90元/100元)=45元。

退回资金账户金额为:50*(10/100)=5元

③无资金券退款规则

  • 商户扣款金额=申请退款金额*(用户实际支付金额/订单总金额)
  • 用户收款金额=申请退款金额*(用户实际支付金额/订单总金额)
四、验证退款规则

上述介绍了支付宝与微信的退款规则,根据规则测试一下具体的退款情况如何,可以更加清楚整个退款规则。由于支付宝资金券情况较少,比较难找到案例,所以针对无资金券情况进行对比。

1. 支付宝退款案例说明(免充券)

①支付宝全部退款

支付订单:订单金额:1.01元、优惠金额:1元、实际支付宝金额:0.01元。

退款订单:申请退款金额1.01,用户实际收到金额:0.01元、优惠退款金额:不展示。

②支付宝部分退款

累计退款申请金额小于用户实付金额情况:

支付订单:订单金额:11元、优惠金额:10元、实际支付宝金额:1元。

退款订单:申请退款金额0.4,用户实际收到金额:0.4元、优惠退款金额:0元。

③累计退款金额大于用户实付情况:

支付订单:订单金额:11元、优惠金额:10元、实际支付宝金额:1元。

退款订单:申请退款金额9.4,优惠退款金额:9.4元、用户实际收到金额:0元。

2. 微信退款案例说明(免充券)

①全部退款

支付订单:订单金额:1.01元、优惠金额:1元、实际支付宝金额:0.01元。

退款订单:申请退款金额1.01,用户实际收到金额:0.01元、优惠退款金额:1元。

②部分退款

支付订单:订单金额:1.1元、优惠金额:1元、用户实付金额0.1元。

退款订单:退款申请金额:0.1元、优惠退款:0.09元、用户实际收到金额:0.01元。

测试结果是按照实际退款比例进行计算。

五、支付宝退款VS微信退款

从退款测试结果看出,支付宝退款规则优先退用户支付金额,而微信是按照退款申请金额比例进行退款。

可以从账单层面、资金层面进行对比一下:

1. 账单体验分析

账单方面:微信的账单比支付宝的做的比较简洁明了, 特别是发送多次退款时,微信账单一眼就知道原订单交易金额、实际支付金额、优惠金额是多少,同时还能看到每次退款金额的记录。

而支付宝则需要点击关联订单才能查看到多次退款的金额; 支付宝对于无资金券最后退优惠券部分时,用户的账单还是会收到推送消息。

总体而言账单方面微信体验优于支付宝。

2. 资金流向分析

资金层面:对于无资金券时,支付宝是优先退实际支付金额,当出现部分退款时,由于优惠券部分商家是不需要充值,那么就是优先退用户支付的金额。

而微信则是按照计算公式进行退款,包括商家券、用户支付部分。

通过场景进行分析一下:如果有一个场景是在超时购买了100元商品,使用了10元优惠券,实际支付90元,其中一件商品因质量问题发生退款;如果使用微信支付的退款,只需要输入该商品的金额即可自动退回减免后的该商品单价给用户;而支付宝则需要通过人工计算,才能计算得出应退用户金额,通过这个场景可以看出微信支付的体验优于支付宝的(PS:此处说的是线下支付的场景)。

六、退款方案设计

针对梳理的规则以及相关测试验证数据后,将退款流程设计如下:

1)首先判断退款金额是否大于可退金额,如果大于可退金额,直接拒单,不创建退款订单;原因是为了避免恶意请求,产生大量的废弃订单,导致系统性能变慢。

2)首先将全部退款与部分退款逻辑区分,由于支付宝、微信全部退款的逻辑无差异,商户端与用户端感知是一致的,在处理商户账务方式一致。

3)由于微信、支付宝退款处理逻辑不一致,所以在流程设计过程中,需将支付宝、微信流程区分开;商户记账流程必须按照上游规则进行计算,否则由于计算公式不一致会造成商户或自身企业的亏损。

同时所有的计算都是取上游的结算进行计算的,包括计算手续费、退款扣除商户账时。

为啥要取渠道结算金额,而不是用户实际支付金额,因为除了商家免充补贴,还有上游官方补贴活动;例如:微信支付红包、支付宝优惠券、城市券等系列活动,所以计算时需要根据上游的结算金额进行计算。

除了扣除商户账户余额之后,还需要将商户的手续费返回给商户的账户上,因为退款部分是不收取手续费的。

4)微信的处理逻辑相对简单,按照比较进行扣款即可,一条公式走到底。

具体公式如下:

商户账户扣款金额=申请退款金额*(渠道结算金额/订单总金额)

退还手续费时如果按照计算公式计算存在四舍五入情况,退最后一笔时会存在还有部分手续费未退还情况。

因此在退回手续时需要判断是否为最后一笔交易。

如果是最后一笔计算公式为:

退回手续费=收取手续费-累计退还手续费

正常的退还手续费计算公式为:

退回手续费=收取手续费*(申请金额/渠道结算金额)

5)支付宝的退款逻辑处理时比较复杂,需要先判断的是卡券类型。

①如果是资金券,则是扣除商户账=商户申请金额,退还手续费=收取手续费*(申请金额/渠道结算金额)。

②针对无资金券情况,因为支付宝是优先退用户支付部分,所以需要判断累计退款是否大于渠道结算金额。

如果累计退款大于渠道结算金额金额则表明使用资金部分已退完了,此时就辞退无资金券部分,只是走信息流,不会扣除商户账和退还手续费。

③当累计退款小于渠道结算金额金额时,还需要判断累计申请金额是否大于渠道结算金额,累计申请金额=累计退款+申请金额,因为这就涉及是否退卡券部分。

如果大于则有部分金额属于卡券金额,该部分金额不扣除商户账户以及不退还交易手续费。

所以公式如下:

扣除商户账=渠道结算金额-已退金额

卡券退款金额=申请金额-(渠道结算金额-累计退款),退还手续费=收取手续费-累计退还手续费。

④如果累计申请金额小于渠道结算金额,那么扣除商户账=退款申请金额,退还手续费=收取手续费*(申请金额/渠道结算金额)。

具体流程图如下:

七、总结

处理退款流程时首要梳理上游具体的退款规则。

上述的退款流程仅仅是一部分,譬如有些退款是限制在某个时间段才允许退款,需要充分根据上游规则制定对应的退款规则,还有系统本身的退款规则;由于涉及到公司的原因,就不外展示,处理的方法大同小异。

梳理完退款规则后,需要针对规则场景进行验证,实际退款情况与规则是否一致;如发现不一致情况则需要与上游进行确认。

在梳理完成后,再进行输出相关的方案设计,此时对于整体方案思路会比较清晰,并且根据上游规则输出相关计算公式。

最后感谢大家阅读完本文,如有写的不对的地方,请批评指正错误,欢迎大家一起来探讨。

本文由 @TOM 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。