买卖双方在互联网上的电子商务网站进行交易时,大多数情况下都会使用在线支付功能,常见的在线支付方式有支付宝、微信支付、Apple支付等等 , 那么我们一起归纳一下 。
(图1:在线支付方式)
当买卖成功后,不管是买家原因或卖家原因,可能会需要退款操作 。现在以常规电商平台为例 , 使用支付宝作为支付方式,来介绍本文重点内容:退款金额是如何原路退还的 。
(图2:退款节点)
通过图2可以发现用户可以在订单状态为待发货、待收货、交易成功时 , 均可以发起退款操作;
待发货
商品还未发出 , 用户可能因为未使用优惠券或拍错了等原因发起退款;
待收货
用户收到商品,发现商品有瑕疵等商家原因,就不确认收货,这时候状态还是处于待收货中,用户可发起退款;
例子:用户买了一箱苹果 , 发现里面有一半的苹果已经坏了,这时候用户跟商家协商要退回一半的钱 。
交易成功
用户确认收货后,在一定时间内依旧可发起退款 。
例子:用户买了一件衣服,手快点了确认收货,但是发现衣服线头比较多,不过呢还是很喜欢又不想换货,于是就和商家沟通,按需退回一些钱补偿自己 , 不然就给差评 。
上述场景 , 商家收到用户退款申请 , 审核无误,点击同意退款后 , 按照退款规则将支付款原路退到用户的支付宝帐号上 。
(余额方式)
(余额宝方式)
(花呗方式)
很多小伙伴就会疑问:为什么我用余额支付就退还到余额,用余额宝支付就退还到余额宝?接下来我们一步一步解密这过程 。
1. 用户付款
用户的常规的下单、支付流程:
(1) 在app中选择商品下单、确认购买,进入支付环节 , 用户点击确认支付;
(2) 进入到支付宝页面 , 调起支付宝支付 , 出现确认支付界面;
(3) 确认收款方和金额,点击立即支付后出现输入密码界面或者指纹识别等操作;
(4) 输入正确密码等操作后,支付宝端显示支付结果;
(5) 自动回跳到app中,技术人员根据付款结果个性化展示订单处理结果 。
(图3:支付流程)
最终支付成功后,支付宝会生成一条支付信息,记录商家和支付宝平台的交易数据 。
(图4:支付宝账单详情)
图4账单详情包含了以下主要字段:
付款方式:账户余额、花呗、银行卡等,优先展示支付顺序排第一的支付方式;
商品说明:平台可自定义文案,当做参数传给支付宝;
创建时间:订单支付成功的时间;
订单号:订单支付成功后,生成支付流水号;
商家订单号:也叫支付编号,平台按照规则 , 退款时当做参数传给支付宝 。
2. 退款操作
当用户因为在上述三种节点下发起退款操作 , 商家在后台确认售后信息无误,并同意用户退款申请后,通常在一定时间内将退款金额原路返还到用户账号上 。
(图5:商家退款操作)
到账时间
退回支付宝余额:资金是实时到账;
【帮人代付是退回哪里 代付退款怎样才能能退给自己】退回到银行卡:一般3-7天入账;
退回余额宝:资金实时入账;
3. 技术层面上:如何实现退款金额原路退还
当商家点击“同意退款”的时候,如果订单是用支付宝付款,就会选择触发支付宝退款接口api,按照官方退款文档说明选择上传3个参数,如下所示:
out_trade_no:图4:支付宝账单详情中的商家订单号,由平台自定义生成;
refund_amount:需要退款的金额,该金额不能大于订单金额,单位为元 , 支持两位小数;
out_request_no:用来标记是全部退款或部分退款;这里提个建议:不管用户在终端选择的是全部退款、还是部分退款,默认最好都是传入部分退款的标识 。
当然这里只上传了3个必要参数就满足我这边项目场景,而你们想要上传多少个参数,就要结合实际情况来定 。
(图6:退款流程)
大致背后代码逻辑是这样的:
(1) 付款成功的时候,平台会生成商户订单号(支付编号),然后传给支付宝的支付接口,进行保存,将商户订单号和交易号进行绑定关联;
(2) 当时商家同意退款时,传入商户订单号等必要参数给支付宝的退款接口,然后通过商户订单号找到交易号,再通过交易号查询到当前退款订单的数据,比如实付金额、支付时间、支付方式、用户信息等数据;
(3) 根据所要退款的金额 , 通过各种异常情况的校验,最终完成金额原路返还 。
常见的异常情况有以下几种情况:
卖家余额不足:商户支付宝账户充值后重新发起退款即可;
交易已完结:该交易已完结(已超过退款期限),不允许进行退款(即使重试也无法成功),建议联系买家进行线下退款处理;
买家状态异常:联系支付宝小二确认买家状态异常原因,或者可联系买家进行线下退款处理;
退款金额超限:请检查退款金额是否正确 , 请求的退款金额不能大于交易总金额;如果不是全额退款,退款请求号必填,请检查是否传入了退款请求号;
看似简单的功能 , 其实背后做了大量的操作,支付宝支付方式,退款金额原路返还流程大致是这样的,是不是奇怪的技术知识又增加。