从0开始,我做了个扫码支付

新零售模式在线下门店,我们想通过扫码的方式让用户使用积分。电子钱包、电子储值卡等其他类型的有价虚拟币逻辑相同。

京东的“京豆”,淘宝的“淘金币”本质是一种积分,过去大家都是建“积分商城”。用户通过消费、完善信息等操作获得积分,在积分商城消费积分。积分商城可以增加用户黏性,但无法通过积分商城提高复购、客单等。所以越来越多的项目开始使用类似京东和淘宝的方式,积分可以抵扣部分金额。

项目背景

积分可抵扣金额,那么积分就是一种支付方式。在线上渠道下单扣减相应积分即可(涉及组合收银等逻辑)。而新零售项目还需要考虑用户在线下门店如何方便、快捷、安全的使用积分。

我们先后做过两个版本:

V1.0 “支付密码”,每次消费积分都需填写支付密码。
门店配备密码键盘,使用积分时用户自行录入支付密码。
“货到付款”场景,签收时用户在“配送App”(TMS)录入支付密码。

V2.0 将“支付密码”改为“短信验证码”。
在门店使用积分时,收银员询问用户验证码 并将验证码录入系统。
“货到付款”场景,签收时用户将验证码告知配送员,配送员在“配送App”(TMS)录入验证码。

到2.0基本上已经解决需求,但多少还有一些问题:首先用户体验不是很好,需要店员和用户有很多次交互。其次因为交互多所以会影响结账的效率。再考虑到配送场景下各种吵杂和恶劣天气等因素,需要有一个更便捷的方式。于是我们想到了终极解决方案:扫码支付。

一、扫码支付方式

扫码支付有两种方式:

1、门店扫顾客码(顾客被扫)

用户出示付款码 → 门店\配送App扫码 → 录入支付密码(超过安全限额)→ 扣款,显示支付结果

门店扫顾客码

2、顾客扫门店码(顾客主扫)

用户打开扫一扫 → 门店出示收款码→ 用户扫码,填写支付金额 → 录入支付密码 → 扣款,显示支付结果

顾客扫门店码

第2种方式最后我们舍弃了,主因有:
1)需要用户操作步骤多:扫码,填写金额,录入支付密码。第1种方式,用户只需要出示付款码即可。(超过安全限额才需要录入密码)
2)支付完成后,店员需要确认支付结果。(小商家都是通过蓝牙音响报音确认)

支付宝和微信作为一个支付工具,需要考虑小商家没有技术研发能力的情况,所以需要第2种方式。

二、功能

门店扫顾客码需要各系统有哪些功能支持

1、App、小程序等用户端

用户端功能

1)在用户端出示付款码:例如支付宝首页的“付款”。为保证支付码安全,付款码会定时失效,需要刷新。这样被拍下来或者截图都是无效的。

2)用户出示付款码被门店扫码后,如果超过免密支付安全额,需要录入密码或短信验证码。免密支付安全额可以用户自行设定,也可以系统统一设定。

3)支付结果页,告知用户支付成功还是失败。支付密码错误、余额不足都是在支付时提醒,支付失败一般是系统问题导致。

4)支付记录,或者称为消费记录。用户可以参看每一笔的支付金额、时间等信息。

2、收银终端(门店、配送App)

收银终端功能

1)记录付款码信息:通过扫码枪或者配送场景PDA设备扫付款后,读取付款码信息。

2)将付款码信息传中台,中台判断付款码的有效性。如果付款码无效则提示无效信息。

3)显示支付结果,用户录入支付密码后显示中台返回的支付结果,如果支付失败还需显示失败原因。

3、中台

中台功能

1)生成付款码。用户打开付款码页面时,要生成并显示付款码,条形码或者二维码。为保证支付安全,付款码会有失效状态。用户刷新后,中台重新生成付款码。

2)在门店收银系统 或 配送App扫码后,将订单信息和码信息通过接口传到中台。中台需要验证用户的付款码是否有效 —— 是否是有效的付款码、是否过期、是否已经被扫。

3)扣积分。

中台先判断用户支付的积分额是否超过了免密支付安全限额:
如果未超过限额则扣减积分、修改付款码被扫状态并将支付结果反馈给前端。
如果超过免密支付安全限额,则需要用户录入支付密码(或短信验证码)。

用户录入支付密码后前端传给中台,中台判断支付密码(或短信验证码)是否正确:
密码正确则扣减积分、修改付款码被扫状态并将支付结果反馈给前端。
密码错误则提示用户“密码不正确”,用户重新录入密码。(此处需要有密码找回 和 密码录入次数限制功能)

4)返回支付结果,支付成功或者失败。

支付失败场景:付款码错误(无效、过期、已被扫)、积分余额不足、其他系统原因。

4、功能细节完善后的思维导图:

扫码支付各系统功能

三、流程

1、付款码是什么,怎么生成?

我们不知道支付宝和微信是怎么解决这个问题的,我们自己想了一个方案:

1)系统给每个用户都生成一个积分账户,积分账户和用户会员号绑定。付款其实就是系统扣减对应账户积分的过程;

2)如果直接使用积分账户生成付款码,首先不安全,其次付款码是定时变化的而积分账户并不变。所以需要把积分账户做一个转化,转化为一个中间码。(中间码的生成规则就随意了:可以积分账户+算法,也可以直接生成随机数)

3)将中间码和积分账户关联,这样积分账户不变,只需要定时生成一个中间码和积分账户关联就可以了。

4)中间码的有效时间为1分钟,过期后重新生成一个有效期为1分钟的中间码。

5)系统扫码后读取的是中间码,中台根据中间码找到积分账户扣减对应积分。

2、流程图

功能已经讲的很细了,流程在梳理功能过程图基本都讲解完了。

扫码支付-流程

你可能感兴趣的:(从0开始,我做了个扫码支付)