首页 > 其他分享 >“订单、账单、支付单”关系解析

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

时间:2024-10-03 14:33:11浏览次数:10  
标签:逆向 账单 订单 单据 支付 解析 退款

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

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

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

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

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

我们先设定个场景,比如在某平台购买了一次做饭保姆服务,总价是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元。

标签:逆向,账单,订单,单据,支付,解析,退款
From: https://www.cnblogs.com/IT-Evan/p/18436235

相关文章

  • 03 掌握Docker核心架构:镜像、仓库、容器及运行管理的深度解析
    文章目录03掌握Docker核心架构:镜像、仓库、容器及运行管理的深度解析一概述1.1镜像1.2镜像仓库1.3容器二、镜像及镜像仓库2.1本地镜像仓库2.2镜像仓库简介2.3使用远端仓库2.3.1从远端镜像仓库拉取apache镜像2.3.2从远端镜像仓库拉取指定......
  • C语言顺序表 逐行解析!!!
    1、顺序表的概念及结构线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的⼀条直线。但是在物理结构上并不⼀定是连续的,线性表在物......
  • 操作系统错题解析【软考】
    目录前言1.特殊的操作系统1.1可移植性1.2嵌入式操作系统2.进程的状态2.1调度方式2.2进程通信运行实例3.信号量的取值范围3.1PV操作中信号量分析4.信号量于PV操作4.1PV操作4.2初值5.死锁资源数计算6.进程资源图7.页式存储8.段页式存储9.磁盘管理9.1计算读取时间9.2......
  • 34_初识搜索引擎_search结果深入解析(search timeout机制揭秘)
    课程大纲1、我们如果发出一个搜索请求的话,会拿到一堆搜索结果,本节课,我们来讲解一下,这个搜索结果里的各种数据,都代表了什么含义2、我们来讲解一下,搜索的timeout机制,底层的原理,画图讲解GET/_search{"took":6,"timed_out":false,"_shards":{"total":6,"successful":6,......
  • 35_初识搜索引擎_multi-index&multi-type搜索模式解析以及搜索原理初步图解
    课程大纲1、multi-index和multi-type搜索模式告诉你如何一次性搜索多个index和多个type下的数据/_search:所有索引,所有type下的所有数据都搜索出来/index1/_search:指定一个index,搜索其下所有type的数据/index1,index2/_search:同时搜索两个index下的数据/1,2/_search:按照通配......
  • 14_初步解析document的核心元数据以及图解剖析index创建反例
    1、_index元数据2、_type元数据3、_id元数据{"_index":"test_index","_type":"test_type","_id":"1","_version":1,"found":true,"_source":{"test_content":&quo......
  • 15_document id的手动指定与自动生成两种方式解析
    1、手动指定documentid2、自动生成documentid1、手动指定documentid(1)根据应用情况来说,是否满足手动指定documentid的前提:一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在......
  • 16_document的_source元数据以及定制返回结果解析
    1、_source元数据put/test_index/test_type/1{"test_field1":"testfield1","test_field2":"testfield2"}get/test_index/test_type/1{"_index":"test_index","_type":"test_type&qu......
  • 深入解析Android STR待机:低功耗,快速唤醒的奥秘
    目录一、STR简介二、STR技术的主要特点2.1.低功耗2.2.快速唤醒2.3.用户体验三、实现原理3.1.电源管理3.2.数据保存3.3.硬件支持3.4.唤醒机制3.5.运行时权限管理3.6.低功耗技术四、待机流程步骤4.1.注册广播接收器4.2.监听屏幕关闭事件4.3.执行待机......
  • C++在游戏开发中的卓越性能:优势解析与代码示例
    在游戏开发领域,C++一直是一种备受青睐的编程语言。它以其高性能、灵活性和强大的功能集,成为了游戏开发者的首选语言之一。在本文中,我们将深入探讨C++在游戏开发中的优势,并提供一些代码示例来展示这些优势是如何在实际开发中发挥作用的。高性能与低级控制C++提供接近硬件......