20180108-第三方支付虚拟账户设计经验
今天分享的主题是 虚拟账户系统设计经验,一般来说账户系统属于核心系统中比较重要的模块,做金融的都知道得账户者得天下,微信支付宝之所以遥遥领先其他支付公司和直销银行,就是把使用场景和资金账户关联了起来
1.1、支付交易系统架构图
做支付,电商,互金的一般都知道,支付工具是相对固定的,变化的都是业务和产品交互模式。交易过程中,可能用到银行卡,虚拟账户余额,以及卡卷,红包等支付工具。如果把各支付工具都抽象一下,都是跟资金相关,所以完全可以用账户来记录余额变更及使用情况;所以一次交易过程中,涉及到的账户可能包括 个人虚拟账户,卡卷账户,红包账户,以及商户账户,还有平台的内部账户等,所以账户模型设计如下:
主要分三类:客户账户,内部账户,产品账。 其中客户账户就是大家平常接触最多的,如微信钱包,支付宝钱包等,这里面参考了电信行业的三户模型,通过用户,客户,账户的关系,进行了 一定的改造; 平台的客户分为用户和商户;
用户分为个人用户,企业用户; 商户分为公司,个体工商户,小微等;
所有已认证的用户和商户,都对应会员,每个会员有身份证号、营业执照号等信息,然后实名信息会分别存储到自然人和法人两个模型中,用于做客户管理和支付限额控制,会员建立时一般开一系列账户,包括个人余额账户,商户余额账户,商户待结算账户等,所以每个会员都有一个主账户,这个主账户id我们称为户口号,当业务变化时,也可以增加子账户,如购买理财和领取卡券时,所有的子账户都会下挂到这个户口号下,当账户余额变动时,如发生充值、提现、转账交易,会根据支付工具不同,调用会计模块,不过会计科目根据不同业务可以设置相对简单些,充值和提现会记录渠道应收款和应付款内部户,而转账交易则无需记会计账,账户的模型类似这样:
账户明细模型类似这样:
- 账号明细有明确的余额变更记录,记录每笔明细的起初余额和期末余额,账户中则只记录每日的期初余额,当日终处理时,会计算检查科目账与客户账汇总的平衡,防止篡改和记错账;
- 产品账可以理解为外部账,比如发红包,扣一次用户余额,产生200个随机红包,这些红包可以被人领取,也可能过期退回,所以外挂到产品账账户中便于灵活处理和提高系统并发性能;
- 内部账户一般都是根据业务预制进去的,另外增加银行或其他资金渠道时,也会建立一套内部户,内部户通常每日汇总记一笔余额变更明细即可,差不多先说这么多,大家有什么疑问可以讨论。 这就我的今天的分享,谢谢大家的聆听!
Q: 如果想查询某个时间点的余额怎么处理?
A: 每笔账户明细都有入账时间,根据这个能查到时间点余额。
Q: 账户明细有记录上次余额。这个是怎么处理的,高并发下会出现上次余额一致?
A: 单边记的,比如商户发了100万的优惠券,则声称了100万条优惠券产品账,可实际营销资金可能只放了1w块钱,所以当用户使用优惠券时,就需要核销,这时候扣营销账户,钱不够则核销失败,扣到一定程度则提醒商户营销充值,这个是技术问题,我设计的是通用记账,会按照账户号,资金加减做group by,然后把list传过去放到一个事务中执行;
Q: 余额有可提现余额,冻结余额,是每一个作为一种类型单独记明细账吗?2.内部账户可以举一个例子吗?
A: 我发一个之前整理的科目设计,供参考:
Q: 会员建立时一般开一系列账户,包括个人余额账户,商户余额账户,商户待结算账户等。是个人和商户会同时开么? A: 个人注册和商户入网时分别开的
Q: 可提现,冻结余额等,是根据每一笔明细每天汇总后更新到主账户余额中吗?
A: 不更新,冻结余额一般是给风控用的,业务冻结会采用内部户的方式;看业务场景,比如信用卡消费退款到余额或系统发的红包什么的,要求只能用于消费,不允许提现,就不更新;
Q: 随机红包是分配好放缓存 领取再记录?
A: 缓存的 领取再存;这种红包可以先生成部分。比如预先生成2000个红包。然后每次领取的时候,判断剩下多少个。如果低于300个。再生成2000个红包。
福利: 老熊团队在招聘
2018年,你可以选择一种新的生活工作方式,能让自己全身心投入, 构建一个全新的、合规的、注定是有超级流量的支付系统。
- 互联网公司正确的打开方式,是从免费、健康的三餐和下午茶开始,不再为“今天中午吃什么”、“晚上去哪儿吃饭”发愁。
- 我们知道生活的不易,更懂得时间的无价。我们期望年轻的时间不再浪费在等地铁和挤地铁的无效付出上。提供公司周边租房补贴,支持员工就近住宿, 节省下来的不仅仅是金钱。
- 在一个可靠支撑亿级流量的基础设施之上, 我们要构建一个全新的系统, 能够满足线上大流量、多方式、跨区域的支付结算需求。 微服务架构、云部署、轻量级高性能进程间调用框架、内存数据库、可靠消息机制、柔性事务、持续集成... 这不是全部的技术名单,而且名单还在持续增加。我们追求技术,追求极致。
- 这里有老熊, 有伟神, 和优秀的支付领域专家一起,做有意义的、有价值的、正确的事情。我们拒绝bad-smell codes和过时的框架, 拒绝冗长的流程和复杂的组织架构, 拥抱变化,鼓励积极、坦诚、开放、极致的心态,有判断力,始终创业。 加入我们,一起更快地成长。
2018年,为自己寻找一个好去处,开启全新的工作生活方式。
---------------------------------------------------
职位名称:【今日头条-北京】 Java资深工程师/专家——支付清结算方向
- 负责今日头条支付清结算后台系统设计和开发。
- 持续优化支付清结算系统的核心业务流程,提升运营效率,降低成本。
- 2年及其以上ava服务器端软件开发经验,良好的Java语言基础,熟悉Springframework,MyBatis等常用框架和类库。
- 熟悉MySQL数据库的使用以及SQL优化,有大规模高并发环境下MySQL优化经验优先。
- 有支付系统研发经验、大型商业平台web系统研发经验优先;有高性能、高可用性系统设计、研发、优化经验尤佳。
- 有Redis, Zookeeper/Zuul, Spring Boot/Cloud,Apache Thrift等经验优先。
-----------------------------------------------------
职位名称:【今日头条-北京】 支付系统架构师
- 负责今日头条支付系统架构设计、优化和演进。
- 持续优化支付清结算系统的核心业务流程, 构建每天千万级交易量的高并发、安全、稳定的系统。
- 具备复杂系统领域抽象及建模能力,5年以上业务架构设计或大型软件系统设计经验,有支付、金融类系统的业务建模和业务分析经验;
- 熟悉分布式系统的优化,能够从架构、代码、业务等角度提出优化方案,实施优化策略。
- 良好的沟通能力,自我驱动能力。
-----------------------------------------------------
职位名称:【今日头条-北京】 Web前端工程师
- 负责今日头条的支付相关前端Web和H5页面结构设计、代码开发。
- 负责和后端工程师对接数据交互,能快速理解和消化各方需求并落实为具体工作。
- 研究分析业内主流技术实现,优化实现方案,不断改进产品功能。
- 熟练掌握HTML/HTML5、Java、CSS/CSS3等相关语言和规范。
- 至少熟悉Bootstrap,Easyui等web框架的一种或多种,能够使用前端插件,如Swiper等。
-----------------------------------------------------
职位名称: 【今日头条-北京,上海】高级支付产品经理
岗位职责:
- 梳理和改进公司各个业务线的资金收付流转流程, 设计满足业务需要的支付产品。
- 负责支付行业和竞争对手的分析评估,形成产品改进需求;
- 数据驱动的产品设计, 设计合理的产品评价体系,跟踪评估运行效果, 设计改进方案。
职位要求 :
1. 本科及以上学历,计算机、金融或相关专业;
2. 3年及以上互联网产品经验,2年以上支付产品经验,有核心交易系统、账户会计系统的产品设计经验优先。
3. 可独立编制产品需求文档,推动软件开发上线。有团队管理经验优先;
4. 具备较强的逻辑分析能力、语言表达能力和写作能力,善于利用数据对产品价值、用户体验等进行深入挖掘。
-----------------------------------------------------
简历请发送到邮箱 lixiongfeng@bytedance.com,我们期待您的加入!返回搜狐,查看更多
责任编辑: