“红包”体系设计详解

发红包,领红包;普通红包,拼手气红包;想必在用户应用层面大家都不陌生,但是红包底层的支付流程以及红包算法规则,涉及的支撑系统,估计很多人不知道了,今天我们就讲一下“红包”背后的秘密,教你如何设计一套红包体系。

“红包”体系设计详解

1、什么是红包

红包对于用户来说更多的是一种娱乐手段,生活工具;对于企业来说更多是一种营销手段;微信红包是大家最熟悉的了,像钉钉,脉脉等很多应用内部都有红包功能

“红包”体系设计详解

红包本质上是用户虚拟账户之间的“转账”能力;一个用户的账户扣一笔钱,然后拆分后转给多个账户;至于每个账户转多少金额,就是红包金额的算法,普通红包简单,平均总金额就行;拼手气红包稍微麻烦,既要保证红包最低金额,又要保证金额随机;

“红包”体系设计详解

已经领过的不能再领,过期的红包不能再领且要退回发红包的账户……

今天我们重点说说个人红包的设计方法

2、红包种类

个人对个人类型

  • 指定单个对象:金额固定
  • 不指定对象(单个/多个):群红包,金额随机或均等金额

企业对个人

企业发送给个人的红包可以是随机金额或者固定金额。

3、红包体系涉及到的系统

前端应用:用户发放领取的前端展示页,收银台等。

订单系统:红包的支付订单,用户领取后的转账订单。

账户系统:金额查询,红包余额的转出转入。

营销系统:红包规则创建,查询,比如发了多少个,什么类型的红包等。

运营系统:查看管理红包发放和领取记录。

每个系统都会有单独的文章详解,这里不做介绍;默认读者所有系统全部熟知,有不熟悉的系统可以去支付专题查找相关系统进行阅读。

4、红包业务框架

“红包”体系设计详解

5、红包业务流程

重点讲解各个红包类型不同场景下的发放和领取流程。

5.1指定用户-一对一场景

主要是在一对一聊天场景,发红包给朋友,相当于指定了这个某个用户领取红包。

整体业务流程图

“红包”体系设计详解

  • 发送用户1状态:用户1状态必须为已实名;
  • 接收用户2状态:需指定用户,前端需传输用户2的userid
  • 余额支付:用户1使用余额支付时,用户2未领取前,发送金额以冻结状态存储在

的资金账户中;

  • 绑卡支付:用户1使用银行卡支付时,支付金额会先充值到1的资金账户中,并冻

结该资金。

  • 领取(红包状态为可领取):

    用户2确认领取后,解冻1资金后通过转账,入账至2的资金账户中;

  • 退回

    用户2到期未领取:发送金额解冻后,遵循原路退回原则,退回用户1;

  • 用户1撤销发送:只要用户2未领取,均可解冻资金并退回资金。

发放业务流程

“红包”体系设计详解

领取退回业务流程

5.2不指定用户

可以不指定发放一个,也可以发放多个,根据设置的红包数量确定

整体业务流程图

“红包”体系设计详解

字段说明:

  • 发送用户:1;
  • 接收用户:n(n=2,3,4…);
  • 发送红包数:K;
  • 发送总金额:M;

关键点说明:

1.发送用户1状态:用户1状态必须为已实名;

2.接收用户n状态:领取时n状态不需要为已实名。不需指定用户,从设置的发送红包数/可领取人数K确认,是对单用户还是多用户场景;

3.红包创建:资金冻结成功后,按照随机规则直接创建K个子红包。

3.支付:

3.1)余额支付:用户1使用余额支付时,只要有用户未领取,剩余发送金额都以冻结状态

存储在1的资金账户中;

3.2)绑卡支付:用户1使用银行卡支付时,支付金额会先充值到1的资金账户中,并冻结该资金。确认领取过程同3.1。

发放业务流程

“红包”体系设计详解

领取退回业务流程

“红包”体系设计详解

6、总结

好了,红包我们点到为止;我们来思考几个问题。

底层服务至少给应用提供那几个服务接口,传参和出参应包含那几个字段?

发放红包使用中间账户和不使用中间账户有什么区别,那么方式更优?

你觉得微信红包的随机金额算法是怎么样的?

业界动态

BAT大佬带你了解AB测试

2021-3-15 9:31:35

业界动态

设计审美|快速进步的方法

2021-3-15 9:39:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索