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

产品老司机手把手教写文档,10天线上课程,零基础掌握产品经理必备7大文档撰写法。了解一下>

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

京东的“京豆”,淘宝的“淘金币”本质是一种积分,过去大家都是建“积分商城”。用户通过消费、完善信息等操作获得积分,在积分商城消费积分。

积分商城可以增加用户黏性,但无法通过积分商城提高复购、客单等。所以越来越多的项目开始使用类似京东和淘宝的方式,积分可以抵扣部分金额。

项目背景

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

我们先后做过两个版本:

  • 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. 流程图

流程在梳理功能过程图基本都讲完了,不多说上图:

扫码支付-流程

 

本文由 @杰记 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

给作者打赏,鼓励TA抓紧创作!
1人打赏
评论
欢迎留言讨论~!
  1. 😁

    回复
    1. 有内幕?

      回复