支付中心的另一个核心功能就是退款,只要有支付就离不开退款。刚开始设计支付订单的时候,公司的业务量不大,平均一天有20个退单,为了支持所有的退款场景,我们选择了人工退款方式。随着公司业务模式的增多和业务规模的上升,人工退款的方式已经不能满足快速发展的业务需求。因此在完成收款的流程后,我们对退款流程做了一次全面的升级,支持自动退款和人工退款的方式,释放了一部分的人力成本,今天和大家重点探讨如何设计退款流程。
文章目录
- 退款流程的必要性
- 什么是退款
- 为什么需要设计退款流程
- 退款的结构框架
- 退款的核心场景
- 申请退款的条件
- 前端用户触发退款流程
- 后台用户触发退款流程
- 退款方式
- 自动退款
- 人工退款
- 退款金额
- 全额退款
- 部分退款
- 退款审核流程
- 退款的核心场景
- 其他支撑模块
一、退款流程的必要性
什么是退款?
退款就是把用户已经支付的金额退还给用户。
为什么需要设计退款流程?
可以从购买者和销售者两个角度解读退款流程的必要性。
1. 购买者:用户支付费用后,由于某些原因不需要购买商品或者服务了,需要退款。
2. 销售者:用户支付费用了,销售者无法提供等价的服务,需要给购买者主动退款。
二、退款的结构框架
退款的核心场景
-
申请图款的条件:满足条件的用户可以申请退款,如七天无理由退款,在收到商品后的7天内,用户有申请退款的入口,当条件不满足时,退款的入口自动隐藏。
有退款入口的订单.png
- 用户触发退款:用户在前端申请退款,这是最常见的业务场景。比如用户在订单上直接申请退款,如上图所示,用户提交退款后,触发后续流程。
-
后台用户触发退款:这种场景应用于不满足退款的条件的情况,可能前端的退款入口已经不提供给用户了,但是由于某些原因,仍然需要执行退款。如笔者负责的国际接送机业务,常规的规则是使用车辆前24小时,可以申请退款,距离用车时间少于24小时,就不予许退款了,但是如果航班取消或者航班延误的原因,导致司机无法提供接送服务,仍然需要给用户退款,这种情况用户已经无法在前端申请退款,需要后台的订单系统支持申请退款的功能。
后台订单详情页退款入口.png
退款方式
退款方式包含自动退款和人工退款两种方式,退款方式跟支付方式是一一对应的关系,每种支付方式对应一种退款方式。
-
退款方式的选择:如果业务量不大,人力资源充足的情况下,可以选择人工退款的方式,因为人工退款可以满足所有的业务场景,不用考虑退款失败的情况。但是对于业务量大的公司,自动退款是必不可少了,可以为公司节约大量的人力成本。
-
自动退款:通过支付渠道自动触发原路退款,退款成功后,退款金额自动退回用户的支付账号。使用自动退款需要开发人员对接支付渠道的退款接口。
-
自动退款失败:即使对接了退款接口,仍然存在不少自动退款失败的情况,以下的笔者工作中总结的常见退款失败原因,希望大家在设计的时候,可以少踩点坑。
-
退款资金不足导致自动退款失败:微信退款时,可选择使用未结算资金退款或者充值余额退款,如果退款金额>剩余金额,会导致退款失败。退款策略可以设计为,可优先未结算金额退款,当未结算金额不足时,使用剩余金额退款
退款资金来源.png -
支付时间过长导致自动退款失败,目前支付宝支持3个月内,微信/银联支持6个月内的原路退款,即用户如果使用支付宝支付,支付时间超过3个月才申请退款,那么就会退款失败。对于这种情况有2中解决办法,根据用户的支付方式,超过一定的时间段后申请退款,执行人工退款的流程;另一种解决办法是,原路退款失败后,提示用户退款失败,并有人工退款的入口,用户申请退款后执行人工退款的流程。听上去可能前者跟合理,但是前者开发时需要考虑到的情况非常多,如果服务周期不长,建议选择后者,逻辑相对较少,可以快速实现。
自动退款失败后,退款入口.png -
用户的支付账号注销了,这种情况也会导致原路退款失败,这种情况出现的几率比较低,不过还是让我遇到了。
支付账号异常.png -
除了上述的情况外,还有一些技术上的原因,比如商户账号的更换;获取不到客户的token;客户的appID和商户ID不一致等原因,这些需要在测试阶段覆盖全面,难以通过产品设计去解决。
-
-
人工退款
- 自动退款失败后,需要人工退款,自动退款失败的常见原因见上面的总结。
- 不通过在线支付的费用,涉及退款时,需要人工退款。
退款金额
- 全额退款:用户支付的金额全部退还。
- 部分退款:用户支付的金额部分退还。场景是合单支付,可能只有其中的一单需要退款;另外一种是收取用户的部分费用后,把剩余的金额退还给用户。
退款审核流程
款申请后,可根据实际的业务需要,判断是否需要审批流程,如果不需要,可以触发自动退款;如果需要,一般会生成一个工单或者审批流,个人认为使用审批流更合适,对于不符合退款条件的申请,审批步骤中的审批人可以拒绝审批。审批通过后,触发自动退款或者通过相关人人工退款。
三、其他支撑模块
- 统计报表:根据业务需求设计多维度的报表。
- 日志监控:数据变更的监控。
- 消息通知:退款成功或者退款失败通知相关人。
- 接口监控:对退款接口的安全监控。
网友评论