大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

这篇具有很好参考价值的文章主要介绍了大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

退款逻辑,1个业务单号--关联多个支付单号--也关联多个退款单号?退款单号,关联优惠券返还的,也可在退款单列表关联吗?返还比例多少,是在优惠券系统设置?

整个交易、支付、清结算、账务体系杂糅,会产生很多单据、单号。再考虑正向、逆向,他们的关系更复杂。

本文就来搞定订单、账单、支付记录、支付单、支付请求、卡消费记录、券核销记录等单据,他们在交易正、逆向中是如何联系的,又有怎么样的数据关系。

0 场景

在某平台购买一次家政阿姨上门保洁服务,总价120元,分2次支付,“先预付80元,再后付40元”,预付时用一张20元优惠券,微信支付60元。

1 3个核心,6大单据及关系

以上场景发生并非依赖一个系统实现,而是通过3个核心实现:交易核心、支付核心、卡券营销核心,每个核心内会产生相应的单据。

1.1 交易核心

交易核心安排交易流程,包含:

  • 订单子系统
  • 账单子系统

① 订单

订单子系统内会生成订单,订单记录了平台跟用户的本次交易信息:

  • 买了啥
  • 总价多少
  • 用户用啥支付的
  • ...
订单号 商品 金额 优惠金额 预付 后付 订单状态
666 家政阿姨 ¥120.00 ¥20.00 ¥80.00 ¥40.00 支付成功

② 账单

账单子系统产生账单,账单记录订单要如何结算的信息,为后续的支付、卡券核销做准备,该 case产生2笔账单:

  • 预付账单
  • 后付账单
订单号 账单ID 金额 优惠金额 应付 支付状态 账单类型
666 666-1 ¥80.00 ¥20.00 ¥60.00 成功 预付
666 666-2 ¥40.00 ¥0.00 ¥40.00 成功 后付

③ 账单支付记录

一笔账单需要被用户支付(结算),账单中的支付方式是广义支付方式,包括卡、券、满减、积分及渠道支付,如case的预付账单优惠20元,渠道支付60,假设用户选择微信支付:

账单ID 支付方式 金额 支付状态 外部流水号
666-1 优惠券 ¥20.00 成功
666-2 微信支付 ¥60.00 成功 3435566

交易核心的3类单据,一对多对多关系。

1.2 卡券营销核心

① 券核销记录

券系统内记录的用户的券绑定信息、冻结及核销记录;卡系统记录了用户卡余额的消耗记录、卡余额退回记录。

卡券的变动记录依赖交易核心的推动,交易核心如何推动卡券建立联系?靠账单支付记录单据。案例中因为用了一张20元的券,所以券系统核销了该券,假设有一笔核销记录:

券编号 券类型 金额 券状态 订单号 账单流水号
Q001 代金券 ¥20.00 已使用 666 666-1-1

这条记录与账单支付记录之间建立了关联:

大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

1.3 支付核心

60元走微信支付,即请求外部支付渠道完成支付,这部分支付走的就是支付核心。

① 支付单

支付核心是处理走外部支付通道的支付处理业务。支付核心会产生2类单据:

  • 正向支付的支付单和支付请求明细
  • 退款单和退款请求明细
账单ID 支付单号 支付方式 金额 支付状态 外部流水号
666-1 pay001 微信支付 ¥60.00 成功 324345

② 支付请求

一笔支付可能请求渠道多次,因此还要建立一个支付请求的明细:

支付单号 支付请求号 支付方式 金额 支付状态 外部流水号
pay001 pay001-1 微信支付 ¥60.00 失败
pay001 pay001-2 微信支付 ¥60.00 成功

支付单和支付请求是1对多:

大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

该case支付在3个核心内产生的全部单据形成的关系:

大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

至此,正向形成的单据及单据之间的关系讲解完毕。

2 逆向单据的产生和关系

这时再看逆向订单退款就容易。逆向只是正向的反向,依然3个核心和单据维度,只是单据变成逆向单:

  • 订单变成退单
  • 账单变成退款账单
  • 账单支付记录变成账单退款记录
  • 支付单变成退款单
  • ...

大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

2.1 逆向都是基于正向

没有正向单据,就没逆向单据,如用户没下单,就不会取消订单、也不会操作订单退回,支付也是如此,没有原支付成功,就不会有退款。

2.2 支付退款基于原支付单

支付核心的退款,是支付单,不能脱离原支付单,退款可:

  • 全退
  • 部分退
  • 多次退

但绝不会超过原支付金额。

2.3 逆向由订单发起

订单是逆向的起点,就是只有业务产生逆向处理,如退了部分商品或订单差评产生部分退回等,才会产生支付的逆向。

因此,退款不一定有订单逆向,也可能是订单产生的差评罚款或其他原因,但都是基于订单,即退款基于订单发起。

2.4 交易需控制逆向的顺序

订单产生了逆向,因为订单用了卡、券、积分、微信支付等多种支付方式。逆向发生后,先处理谁,先退券还是先退积分,还是先退微信支付的金额?

若是全额退还好说,毕竟最终都会逆向处理,但部分退呢?

支付了80,用了20元券,微信支付60,现在要退40,咋退?是退20的券微信退20,还是微信退40?因此需要一个逆向顺序的控制,case中设置这样的顺序及设置了券不返还的策略:

大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

这样的规则下,若预付单只退50元,那么看预付单的情况:

大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?

按“券>卡>渠道”的退款顺序逆向:

  • 先处理20元券,因为券不返还,所以就只是将券变成已取消,这样就会从营销中台的成本中核销掉
  • 而30元从微信支付退
  • 所以,用户部分退50元,在这样的逆向策略下,只能拿回30元

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都国企技术专家兼架构,多家大厂后台研发和架构经验,负责复杂度极高业务系统的模块化、服务化、平台化研发工作。具有丰富带团队经验,深厚人才识别和培养的积累。

参考:

  • 编程严选网

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-801306.html

到了这里,关于大厂交易系统从0到1(01)-一笔交易到底涉及多少张表?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高频交易与量化交易到底有什么区别?

      高频交易 也可以说是量化 交易,但 是 量化 交易可不 仅仅是高频交易。 或者说,高频交易是量化交易中的一个部分,一种形式 。 都 是 资本市场和计算机领域快速发展 的必然产物 。 近些年来国内

    2024年02月16日
    浏览(40)
  • 2023面试到底有多难?大厂为何都注重算法?我们该如何应对?

    文章的开头大家先来看一看一道字节的算法题,看是否能做出来: 给定一个单链表的头节点 head,实现一个调整单链表的函数,使得每K个节点之间为一组进行逆序,并且从链表的尾部开始组起,头部剩余节点数量不够一组的不需要逆序。(不能使用队列或者栈作为辅助) 大家

    2023年04月14日
    浏览(87)
  • 固态硬盘到底有多少种接口

    1.SATA 接口 SATA 接口是传统硬盘接口,老电脑升级固态硬盘一般 仅支持 SATA 接口和 mSATA 接口。 SATA 分 SATA1.0-3.0 , 目前市面上以 SATA3.0 居多,支持 SATA 的固态硬盘基本为 SATA3.0 接口。 SATA3.0 接口理论传输速度约为 6Gbs ,约是 600Mb/S 。   2.mSata 接口 mSATA 接口是 SATA 接口的迷你版

    2024年02月13日
    浏览(41)
  • 互联网大厂职级和薪资一览表!看看WebGIS能到多少级?

    以上薪资来源网络,仅供参考。 我们再来看下这些大厂在招的webgis岗位薪资: 13-26K,经验不限 勉强能够上13级 13-35K,3-5年工作经验 范围挺大的,最高薪资水平差不多在8级以内 30-60K,3-5年经验,差不多等于P5-P7水平。 25-50K,1-3年工作经验,跨度较大,差不多在T3-T7之间。

    2024年02月20日
    浏览(51)
  • 期权交易保证金比例一般是多少?

    期权交易是一种非常受欢迎的投资方式之一,它为期权市场带来了更为多样化和灵活化的交易形式。而其中的期权卖方保证金比例是期权交易中的一个重要指标,直接关系到投资者的风险与收益,下文介绍期权交易保证金比例一般是多少? 本文来自:期权酱 一、期权的交易

    2024年02月05日
    浏览(37)
  • 自动驾驶到底需要多少个传感器?

    由于传感器的成本从15美元到1美元不等,汽车制造商想知道车辆完全自动驾驶需要多少传感器。 这些传感器用于收集有关周围环境的数据,它们包括图像、激光雷达、雷达、超声波和热传感器。一种类型的传感器是不够的,因为每种传感器都有其局限性。这是传感器融合背后

    2024年03月08日
    浏览(45)
  • Opensea到底是怎么交易NFT的

    尽管Opensea是目前NFT最主要的交易市场,但加密社区一直有个说法是,Opensea是一个web 2.5的产品。 而且众所周知,Opensea屡次爆出下架某个系列NFT的问题,如3月28日媒体报道Pudgy Penguins疑似被OpenSea下架。 社区为何如此看待Opensea,我们或许可以从Opensea的交易过程得到答案。 用户

    2024年02月01日
    浏览(49)
  • 你的mysql到底能存多少数据呢?

    参考借鉴文章 我说MySQL每张表最好不超过2000万数据,面试官让我回去等通知? 这里自己在总结一下,原因是相关知识欠缺,看别人的文章研究很久才弄明白,所以这里记录一些心得。 作者:阿杆 链接:https://juejin.cn/post/7165689453124517896 来源:稀土掘金 著作权归作者所有。商

    2024年02月01日
    浏览(40)
  • 关于WMT,市值空间到底有多少想象力?

    前不久,知名交易平台Kucoin、ZB以及抹茶等上线了WMT,众多一级市场他投资者获得了不菲的收益,据了解WMT的市场公募价格为0.2美金,而目前其二级市场价格为0.6929美金。在近期WMT作为Cardano生态的明星项目,在二级市场稳步上涨且走势喜人,备受投资者关注。那么WMT到底是一

    2024年02月11日
    浏览(41)
  • mysql的varchar长度到底能插多少字符?

    在用navicat迁移表结构,从oracle到MySQL时,注意如下坑: 1、如果varchar2(256)以上,则在mysql会自动用text取代,需要考虑手工修改字段类型为varchar(256) ALTER TABLE DES_LOGIC_RESOURCE MODIFY REMARK VARCHAR(4000); 2、分区表自动变成普通表 对于varchar的长度设置,经过测试: varchar(6)表示可以插入

    2024年01月25日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包