“订单、账单、支付单”关系解析

news/2024/12/22 9:11:46/文章来源:https://www.cnblogs.com/IT-Evan/p/18436235

当交易、支付等体系糅合在一起时,可能会产生许多单据或单号,这个时候,要怎么理解单据在交易正、逆向中的联系?这篇文章里,作者结合设定场景做了解读,或许可以帮你理解“订单、账单、支付单”关系。

有朋友提出一个问题比较典型,可能是很多朋友的疑问点:

整个交易、支付、清结算、账务体系糅合到一起,会产生很多的单据、单号,他们之间存在着错综复杂的关系;

如果再把正向、逆向考虑进来,他们之间的关系就更加复杂了。

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

我们先设定个场景,比如在某平台购买了一次做饭保姆服务,总价是120元,并且分2次支付,“先预付80元,再后付40元”,预付时用了一张20元的优惠券,微信支付了60元。

一、三个核心,六大单据及关系

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

1. 交易核心

交易核心安排交易流程,包含了订单子系统和账单子系统。

其中订单子系统内会生成订单,订单记录了平台跟用户的本次交易信息,买了什么商品、一共多少钱、用户要用什么支付等。

账单子系统会产生账单,账单记录了订单要如何结算的信息,为后面的支付、卡券核销等做准备,案例中会产生2笔账单,预付账单和后付账单。

一笔账单需要被用户支付(结算),而账单中的支付方式是广义的支付方式,包括卡、券、满减、积分以及渠道支付等,如案例中的预付账单优惠了20元,渠道支付了60,假设用户选择了微信支付,则账单的支付记录如下。

因此在交易核心有3个单据,分别是订单、账单、账单支付记录,他们之间是一对多对多的关系,如下所示。

2. 卡券营销核心

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

而卡券的变动记录依赖交易核心的推动,交易核心如何推动卡券建立联系呢?靠的就是账单支付记录单据。

做交互设计10年,我为何转岗到产品经理?
真正转岗之后,我发现很多工作还是超出了自己的想象。产品经理的工作确实比较杂。理论上,产品经理的工作包括了产品的方方面面,从市场研究、用户调研、数据分析...
查看详情 >

案例中因为用了一张20元的券,所以券系统核销了该券,我们假设有一笔核销记录。

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

3. 支付核心

上述案例中有60元走微信支付,也就是请求外部支付渠道完成支付,这部分支付走的就是支付核心。

支付核心是处理走外部支付通道的支付处理业务。

而在支付核心会产生2类单据,一类是正向支付的支付单和支付请求明细;第二类是退款单和退款请求明细。

而一笔支付可能会请求渠道多次,因此我们还会建立一个支付请求的明细。

支付单和支付请求之间是1对多的关系。

上述就是本案例支付在3个核心内产生的全部单据,那么他们之间形成了如下的关系:

二、逆向单据的产生和关系

上面讲清楚了正向所形成的单据,以及单据之间的关系;那么再考虑逆向订单退款就容易多了。

因为逆向是正向的反方向,所以涉及到的依然是3个核心,依然是上述的单据维度,只不过单据变成了逆向单,即订单变成了退单,账单变成了退款账单、账单支付记录变成了账单退款记录、支付单变成了退款单等。

如下图所示,这是直播过程中直接的板书,这里的关系看得更加直观一些,上面的用表结构标识,这里就直接可视化了,更能看出单据之间的关系。

逆向单据需要了解这样几个关键点:

1)逆向都是基于正向

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

2)支付退款基于原支付单

支付核心的退款,必然是支付单,不能摆脱原支付单的控制,退款可以全部退、部分退或者分多次退,但都不会超过原支付金额。

3)逆向由订单发起

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

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

4)交易需要控制逆向的顺序

订单产生了逆向,因为订单用了卡、券、积分、微信支付等多种支付方式。

那么逆向发生以后,先处理谁,先退券还是先退积分,还是先退微信支付的金额?

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

支付了80,用了20元的券,微信支付了60,现在要退40,怎么退?是退20的券微信退20,还是微信退40?

因此需要一个逆向顺序的控制,如案例中,我们设置了这样的顺序,以及设置了券不返还的策略。

这样的规则下,如果预付单只退50元,那么看预付单的情况。

按照“券>卡>渠道”的退款顺序逆向的话,先处理20元的券,因为券不返还,所以就只是将券变成以取消即可,这样就会从营销成本中核销掉。

而,30元从微信支付退;

所以,用户部分退50元,在这样的逆向策略下,只能拿回30元。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/807425.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闲话 10.2

闲话 10.2 你说得对但我还是想写些废话出来你说的对,以前假期比上不足比下有余,现在没有下了。10.1 上午的唐氏模拟赛,忙活一上午只有 55pts,还因为 T4 freopen 开错了挂 15pts。 T1 感觉哪里很对但很怪,死活调不出来大样例三,于是两个小时就摆了,结果大败而归,事实上…

C++ 容器适配器

除了顺序容器外,标准库还定义了三个顺序容器适配器:stack、queue和priority_queue。适配器(adaptor)是标准库中的一个通用概念****。容器、迭代器和函数都有适配器。本质上,一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样。一个容器适配器接受一种已有的…

【HITCON-Training】Lab 14 - MagicHeap

学习于2024-10-03 12:50:42 星期四 心得感想: 分析 ida一打开就看到很明显的提示(毕竟是教学关卡):那么我们需要将magic修改为一个大于0x1305的数,并且该程序没有开PIE,那么magic地址就是固定的。 Delete操作删的非常彻底,很明显这里没有任何可以利用的:Create部分看起…

C++ 额外的 string 操作

string 构造:▲ 《C++ Primer》 P321string 裁剪:▲ 322修改 string 的操作:▲ 《C++ Primer》 P323string 的搜索操作:▲ 《C++ Primer》 P325string 的 compare 函数:▲《C++ Primer》 P327

动静态库

静态库: 文件扩展名:.a 链接方式是在编译时候直接集成到可执行文件中。动态库 文件扩展名字:.so 链接方式是在运行时,根据符号表查找动态库的位置库文件:就是把多个“.o文件”打一个包,给对方提供一个库文件。 使用ar命令生成静态库 ar -rc libmymath.a add.o sub.o交付库…

C++ 顺序容器大小操作 resize

▲ 《C++ Primer》 P314▲ 《C++ Primer》 P318

WPS Office安卓版(WPS Office国际版) v18.13 解锁高级版

WPS Office for Android是一款功能强大的安卓手机办公软件。 软件功能 1.支持多种办公文档,包括Word、Excel和PowerPoint等。2.多种视图模式,支持纯文本、Web视图、页面视图、阅读视图等不同视图。3.支持多种文档操作,如文档的新建、编辑、保存、打印、分享、拍照OCR等。4.…

常用电脑软件

title: 常用电脑软件 date: 2024-06-15 18:14:53 tags: 我 categories: 一些项目 提前 (为什么写)居无定所与使用设备的变动 顺便介绍一下自己使用的软件工作环境软件(使用软件的配置) node.js(JavaScript环境)https://nodejs.org/git (分布式版本控制软件)https://git…