支付系统:线上支付的对接流程
本文作者主要从入网流程、支付流程和对账流程3个方面对支付系统进行了梳理,与大家分享。
做支付产品也有一段时间了,简单梳理一下作为线上商户从入网到对账的流程,也作为这段时间工作的总结。
入网流程
1. 确定支付方式
首先需要确定的是支付场景,选择合适的支付方式。
简单列一下主流产品端及常用支付方式:
从用户体验来说,PC端支付方式可以选择聚合支付,即同一个二维码支持各主流支付App扫码支付;App端一般要支持微信、支付宝支付;而微信公众号、小程序支持微信也就够了,虽然也可以通过使用浏览器打开方式实现支付宝支付,但用户体验并不是很好。
从产品本身角度来说,特别是跨端产品快捷支付是个合适的选择,而且由于快捷绑卡需要四要素验证,也实现了用户实名,但也因为需要用户输入四要素,很多对信息敏感的用户会排斥绑卡。
网银虽然是个仅PC端支持且用户支付相对麻烦的支付方式,但却适合大额支付,限额相比其他支付方式要高上许多。
银联云闪付、手机闪付的优势在于,银联总是很乐于搞各种满减、随机立减活动,优质商家可以多利用银联资源实现双赢。
上面列举的支付方式主要针对C端用户,若产品面向的是B端用户,可以考虑企业网银或直接线下汇款。
2. 确定收单机构
确定了支付方式后就要选择收单机构了:
如果是需要的支付方式比较单一,如只需要微信或支付宝,那直接入网微信、支付宝就可以了;
如果需要支持多个支付方式且对费率比较敏感,可以尝试比较一下市面上的第三方收单机构,或是知名的第四方聚合支付公司,比较下其提供的产品及费率。
3. 入网
不同机构要求的入网材料不尽相同,但大致为营业执照信息、结算账户信息及经营相关信息,按照选择的机构要求准备就可以了。协议签订完成后,机构会下发商户号、证书等参数,可进行下一步技术对接。
支付流程
不同收单机构、支付方式接口都不一样,但是一般流程差别不大,拿微信举例主要接口如下:
统一下单、支付接口、支付结果通知、查询订单、申请退款、查询退款及下载对账单。
具体开发流程各收单机构文档都会写的非常详细,就不再赘述了,主要说几个我认为需要注意的点:
1. 支付成功以后台通知为准
这点我是确实吃亏了的,当时接手产品的时候大部分支付通道都已经完成了对接且线上跑了很久,所以并没有要求技术重新梳理流程。后来某天财务找我来说支付宝短款了,找技术查询才发现技术对支付宝订单的处理是前台回调成功,订单就更改为支付成功。
一般情况下前台通知和后台通知确实状态是一致的,但是当不一致的时候后台通知才是准确的。这次问题造成了我司短款,印象深刻。
不过以后台通知为准,如果通知晚了会稍影响用户体验,建议如下处理:当前台回调之后查询后台交易状态是否已经收到通知并更改为支付成功,若还是支付中,则主动发起订单查询接口,查询订单支付状态。
2. 增加支付掉单处理
设计产品除了要考虑正常流程外,也需增加异常处理,特别是涉及真金白银的支付交易,更为敏感一些。
一般认为网络异常等原因造成的交易状态不明是小概率事件,但就实际处理中确实时有发生,所以建议增加支付掉单处理,即当未收到明确应答时,反查交易状态,为节省系统资源可设置合理的查询次数,且查询时间间隔递增。
偶尔也会有个别交易掉单确实超过了系统自动处理的次数或时效,可以根据对账流程来进行差错处理。
3. 重复支付处理
重复支付大部分时候是因为支付掉单引起的,用户看到自己扣款成功,订单依然还是待付款会产生疑问,一般不会继续付款,但如果是一些限量、限时活动或用户未注意到扣款成功等情况,就有可能产生重复支付。
可以做的处理是,在订单已完成支付的情况下再次收到另一笔支付完成的通知则进行退款,若考虑资金安全认为系统自动退款有风险,可以在第二日对账出现差异后再做处理。
4. 增加退款重试机制
如果结算时间是T+1且金额自动提现结算实体户,隔日退款容易碰到当日头寸或账户余额不足造成的退款失败。
一种避免方式是推迟退款时间,如凌晨退款交易统一推迟至早9点后发起,但依然很难完全避免失败。二是系统增加退款重试,若退款碰到该类报错,则推迟到下午或晚上再次重试退款。
对账流程
正常情况下收单机构提供的对账文件与收到的结算款总是对的上的,系统主要关心对账文件是否与订单匹配。一般至少勾兑流水号、交易时间、交易类型及交易金额,而手续费以收单机构提供的为准。
差异部分,主要有如下几种情况:
1. 对账文件多
用户重复支付,超额支付部分需进行退款;
支付掉单,若订单未取消则更改订单状态为支付完成,若订单已取消则需进行退款。
2. 对账文件少
可能为日切造成的差异,支付记录参与后续勾兑,连续2天未勾兑成功,记录勾兑失败人工参与处理。
3. 金额差异
金额差异很少会出现,如出现差异需要人工参与看是否系统出现了问题。
以上就是我的一点看法,比较浅显,有不足之处欢迎与我交流,
作者:湘允儿,wx:x_yuner
本文由 @湘允儿 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
第三方收单机构, 第三方支付机构,聚合支付,第四方支付,蒙了,具体啥意思,有标准的定义答案吗?
这篇文章确实说的比较浅,扫码支付流程微信和支付宝就不一致,微信是先创建交易后支付,后面可以取消交易,但是支付宝是扫码的时候创建交易和支付,如果未支付则可以取消,如果未扫码,则创建后不能取消交易
对账流程
1.对账文件多
“支付掉单,若订单未取消则更改订单状态为支付完成”这个应该也要走退款吧,如不退款流程吧
看订单时效性了,若订单24小时或更长时间才取消,获取到对账文件的时候订单可能还在待支付状态,有时候用户没去关注订单状态,那变更为支付完成就无感知,退款也可以
此种差异处理的时候肯定是会根据用户下单购买后的实际应用场景来确定是否不但还是退款的,如果用户已任何该笔交易订单或者已拿到购买的商品,那么处理方式肯定是更偏向于补单了
请问下为什么前后台通知支付结果会不一致呢?
不排除网络问题,用户前端跳转重定向错误,或者人为修改支付成功定向链接,或者前端资源加载错误之类的,具体的原因可以通过在用户前端增加错误上班锚点来获取原因
前台通知一般都是支付请求成功,不是支付成功。