|商户退款订单应如何兼容多方退款规则( 三 )


六、退款方案设计
针对梳理的规则以及相关测试验证数据后 , 将退款流程设计如下:
1)首先判断退款金额是否大于可退金额 , 如果大于可退金额 , 直接拒单 , 不创建退款订单;原因是为了避免恶意请求 , 产生大量的废弃订单 , 导致系统性能变慢 。
2)首先将全部退款与部分退款逻辑区分 , 由于支付宝、微信全部退款的逻辑无差异 , 商户端与用户端感知是一致的 , 在处理商户账务方式一致 。
3)由于微信、支付宝退款处理逻辑不一致 , 所以在流程设计过程中 , 需将支付宝、微信流程区分开;商户记账流程必须按照上游规则进行计算 , 否则由于计算公式不一致会造成商户或自身企业的亏损 。
同时所有的计算都是取上游的结算进行计算的 , 包括计算手续费、退款扣除商户账时 。
为啥要取渠道结算金额 , 而不是用户实际支付金额 , 因为除了商家免充补贴 , 还有上游官方补贴活动;例如:微信支付红包、支付宝优惠券、城市券等系列活动 , 所以计算时需要根据上游的结算金额进行计算 。
除了扣除商户账户余额之后 , 还需要将商户的手续费返回给商户的账户上 , 因为退款部分是不收取手续费的 。
4)微信的处理逻辑相对简单 , 按照比较进行扣款即可 , 一条公式走到底 。
具体公式如下:
商户账户扣款金额=申请退款金额*(渠道结算金额/订单总金额)
退还手续费时如果按照计算公式计算存在四舍五入情况 , 退最后一笔时会存在还有部分手续费未退还情况 。
因此在退回手续时需要判断是否为最后一笔交易 。
如果是最后一笔计算公式为:
退回手续费=收取手续费-累计退还手续费
正常的退还手续费计算公式为:
退回手续费=收取手续费*(申请金额/渠道结算金额)
5)支付宝的退款逻辑处理时比较复杂 , 需要先判断的是卡券类型 。
①如果是资金券 , 则是扣除商户账=商户申请金额 , 退还手续费=收取手续费*(申请金额/渠道结算金额) 。
②针对无资金券情况 , 因为支付宝是优先退用户支付部分 , 所以需要判断累计退款是否大于渠道结算金额 。
如果累计退款大于渠道结算金额金额则表明使用资金部分已退完了 , 此时就辞退无资金券部分 , 只是走信息流 , 不会扣除商户账和退还手续费 。
③当累计退款小于渠道结算金额金额时 , 还需要判断累计申请金额是否大于渠道结算金额 , 累计申请金额=累计退款+申请金额 , 因为这就涉及是否退卡券部分 。
如果大于则有部分金额属于卡券金额 , 该部分金额不扣除商户账户以及不退还交易手续费 。
所以公式如下:
扣除商户账=渠道结算金额-已退金额
卡券退款金额=申请金额-(渠道结算金额-累计退款) , 退还手续费=收取手续费-累计退还手续费 。
④如果累计申请金额小于渠道结算金额 , 那么扣除商户账=退款申请金额 , 退还手续费=收取手续费*(申请金额/渠道结算金额) 。
具体流程图如下:
|商户退款订单应如何兼容多方退款规则
本文插图
七、总结
处理退款流程时首要梳理上游具体的退款规则 。
上述的退款流程仅仅是一部分 , 譬如有些退款是限制在某个时间段才允许退款 , 需要充分根据上游规则制定对应的退款规则 , 还有系统本身的退款规则;由于涉及到公司的原因 , 就不外展示 , 处理的方法大同小异 。
梳理完退款规则后 , 需要针对规则场景进行验证 , 实际退款情况与规则是否一致;如发现不一致情况则需要与上游进行确认 。
在梳理完成后 , 再进行输出相关的方案设计 , 此时对于整体方案思路会比较清晰 , 并且根据上游规则输出相关计算公式 。
最后感谢大家阅读完本文 , 如有写的不对的地方 , 请批评指正错误 , 欢迎大家一起来探讨 。


推荐阅读