H5 通用收银台实战总结

关注公众号【1024个为什么】,及时接收最新推送文章!

收银台的定位

为业务提供安全、多样化的收/退款能力,对业务屏蔽支付大小类和收款账户的复杂路由,对支付网关屏蔽复杂的业务场景。

bc5c7e36fa127b8100a6ba82a15a9dc5.png

解释一下收银台为什么要提供退款能力?

我们都知道超市里的收银台只负责收钱,退钱需要去服务台。

但是线上的系统设计不能照搬线下的模式,交易类场景不能凭空产生一笔退款,一定要在某笔收款的基础上才能产生退款,因此,退款能力放在收银台不管是校验正向的收款数据,还是生成退款数据都是很方便合理的。

如果退款独立出去,只能增加系统的复杂度。同一个系统内有进有出,这样才能做到数据的完整闭环。

收银台仅提供退款能力,具体还是要由业务触发,比如我们常看到的“退款”,“取消订单”按钮,都是业务入口,这个入口就等价于超市里的服务台。

收银台概览

1a563c95bcc7b5d8bf61c150711f0ecc.png

页面功能分区

借用“多点收银台”的截图,介绍一下功能分区。小小页面,背后却大有乾坤。

ff62389ecbdc553d1b5ee891af324423.jpeg

图中没有“商品名称区”,如果需要展示,一般放在“金额区”下面。

图中“支付方式选择区”占比最大,底层逻辑也是最复杂的一部分,下面重点介绍一下这个区域。

之所以复杂,原因是为了追求最佳的支付体验,哪些环境、哪些业务场景展示哪些支付方式是动态确定的,比如说微信环境展示了支付宝,由于众所周知的原因,又不能直接拉起支付宝支付,体验更无从谈起了。

哪些环境?

APP环境(如果业务涉及多个APP,比如普通版、极速版,需要细分)

H5环境(个人感觉没必要再细分PC、手机了)

微信环境、小程序环境、公众号环境

支付宝环境、支付宝小程序环境

或者嵌入其他APP的环境(例如抖音、快手...,需要细分,便于环境隔离)

负责跳转收银台页面的上游,需要把环境的关键信息带给收银台,可以放在UA中(要注意页面分享、跳转,可能导致UA信息丢失),这样收银台才能根据当前环境来展示相应的支付方式了。

一般APP环境支持所有支付方式,微信和支付宝互斥,其他视具体环境而定。

哪些业务场景?

优先级低于环境,和业务紧密相关,例如存在套现风险的业务场景(例如充值后能提现)不能支持信用卡、某些业务场景只需要微信支付宝就行...

一般需要依托类目关系,粒度尽量细一些(一般业务2~3级类目就可满足),能够灵活支撑业务诉求。

展示哪些支付方式?

用户看到的都是支付方式的大类,是根据上面两大条件确定的。

背后具体是哪个支付小类,主要是根据环境来确定的。比如你看到的支付宝,在APP环境背后的小类是支付宝APP支付,在H5环境背后的小类又会变为支付宝网站支付。因为不同的小类,对应三方的不同支付能力,收银台要拉起的支付组件也不同。

配置

配置这一块非常重要,如果设计不好,后面不管是接入新的支付方式,还是新的业务场景接入,都不可能做到灵活扩展。

需要根据自身业务场景,把配置信息分类,划分出不同的维度,各维度配置相互隔离,独立变化。

例如概览图中的几个维度:支付方式列表、倒计时、商品名称、收款账户、退款账户。

而每个维度变化的因子,基本都是和业务相关的,主要是和类目系统对应,更细分的话还可以加上订单、账单类型(可能预付、后付诉求不同)、城市(不同城市收款账户不同,一般公司业务不会涉及)、时间(灰度使用)。

上面几个维度中,支付方式列表和收款账户的配置最为复杂。

支付方式列表是由环境和业务场景共同决定的,最终展示结果是两套配置的交集,代码逻辑要能满足这种配置方式。

收款账户对上游是完全透明的,但为了满足财务核算要求,各业务线会有独立的收款账户,一般收款账户配置的粒度不用太细,区分到业务品类就可以。除了满足常规的账户配置,还要考虑到更换账户的场景,要能够满足过渡期,还要兼容老账户的退款。

退款

收银台的退款只面向上游系统,不面向用户。

系统自动原路退款

下面几种场景,系统要能够自动把多余支付的钱退还给用户。

1)同一账单,在2个端进入收银台后,都发起支付,两笔都会支付成功,需要退还一笔

2)在账单即将自动关闭前,唤起三方支付页面(微信/支付宝...),系统在收到三方支付成功通知后,发现账单已关闭,需要退还这笔支付

3)由于种种原因,账单未关闭,但上游订单已关闭,上游系统在收到支付成功通知后要触发系统自动原路退款

业务普通原路退款

正常的业务退款,上游业务系统根据自身业务场景调用即可。

非原路退款

1)退款时效超过了三方支付通道的退款时间限制

2)用户原先支付的账户注销了

这两种场景都无法通过原路退的方式把钱退还给用户,需要用户提供其他收款账户来接收退款。

这种场景的概率很小,可通过银行卡转账方式退给用户,同时要保证数据的完整性,根据原路退款失败的记录新生成一笔非原路退款数据。

安全

数字签名

业务跳转到收银台页面,必须要带上签名信息,收银台来验证签名是否正确,信息是否被篡改。

签名信息的关键要素可以包含,订单ID、账单ID、金额、环境来源等等

风控

主要是为了避免刷单、套现操作,可以接入风控系统,根据支付场景配置风控规则。

退款白名单

退款是直接从公司账户出钱,为了避免资损,退款的安全性一定要保证。

一般直接上游系统没几个,加上IP白名单控制。

退款金额也要做严格控制,不能多退(计算可退金额时要减去退款中的金额)。

原创不易,多多关注,一键三连,感谢支持!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值