mysql支付账单怎么设计_订单与支付设计
## 订单与支付设计
### 支付与订单的生命周期
1. 订单创建,待支付(支付单创建)
... 支付回执来了
2. 支付单 达成 [支付确认 pay_ack]
3. 业务单 达成 [支付确认 pay_ack]
4. 业务单 履行业务职责(如果有业务职责的话)
5. 业务单 如果履行业务职责 失败,那么 要针对 此 支付单进行退款
6. 业务单 如果顺利履行了,那么处理佣金发放
#### 幂等性:
1. 支付单/业务单 [支付确认 pay_ack] 只能达成一次
2. 退款是针对 支付单 一对一的,一个支付单只能创建一次退款单(退款记录)
其他说明:
```
1. 组合支付单表示 业务单最终的 [支付确认 pay_ack] 可能由多个支付单共同达成
2. 业务单的 每个不同 支付渠道/金额 对应一个 支付单
3. 支付单 直面第三方支付(流水号即为商户订单号),业务单 与 支付单 是 可能一对多的(组合支付的情况)
4. 业务单的成功支付记录:满足条件:达成 [支付确认 pay_ack] 且 没有退款记录,的支付单
```
----
### 表重要字段
```
业务订单表:
status: 订单状态:0-创建,1-完成,2-关闭
pay_status: 支付状态:0-待支付,1-已支付,2-已取消支付(订单取消/关闭时 标记为取消支付)
is_there_refund: 订单是否有退款记录(注意不一定有退款记录就表示此订单无效)
amount: 应付金额
```
```
支付单(流水)表
pay_status: 支付状态:0-待支付,1-已支付,2-已取消支付(订单取消/关闭时 标记为取消支付)
is_compose: 是否为组合支付订单
is_there_refund: 订单是否有退款记录(注意不一定有退款记录就表示此订单无效)
order_id: 业务单id
amount: 应付金额
```
```
退款记录表
flowing_id: 支付单id
desc: 退款说明原因
```
注意:
1. 如果系统提供 “标记为已支付” 这样的功能,那么这个操作 只能更改业务订单表,不能更新支付单表,否则回执时 对支付单支付状态检查时,我们不知道是否为渠道重试了
2. 对于业务单,系统其他后台功能 “标记为已支付” 等功可能会更新其支付状态
3. 对于 支付单,pay_status 是否 达成了 [支付确认 pay_ack] (达成 是由用户完成支付后渠道回执来的)
----
### 收到回执时,如何区分重试和重复支付
#### 有支付单的设计:
1. 发现 支付单 已经达成 [支付确认 pay_ack] 就为重试
2. 发现 业务单 已经达成 [支付确认 pay_ack] 就为重复支付(可能是由于旧支付单,如砍价造成的,或者是多渠道重复支付了)
#### 没有支付单设计的:
1. [支付确认 pay_ack] 达成时 记录下对应的渠道
2. 收到回执时判断达成的渠道是否为当前渠道
3. 是 即为重试,否就为其它渠道重复支付,应该安排退款。
----
### 扩展
[聊聊对账系统的设计方案](https://mp.weixin.qq.com/s/31pxbgqXzYV5knYKTw9K9A)
[Redis 分布式锁使用不当,酿成一个重大事故,超卖了100瓶飞天茅台!!!](https://mp.weixin.qq.com/s/oQKK83Syi29JLzWkEM0P2g)
-----
mysql支付账单怎么设计_订单与支付设计相关推荐
- mysql订单详情的设计_订单功能模块设计与实现
在商城项目中,之前我们介绍了购物车功能模块的实现,商品加入到购物车之后,就是到购物车结算,然后显示购物车的商品列表,点击去结算,然后到了未提交前的订单列表, 点击提交订单后,生成此订单,返回订单的订单 ...
- 餐饮管理系统 mysql数据库设计分析_终稿课程设计_餐饮管理系统数据库设计.docOK版(样例3)...
<课程设计_餐饮管理系统数据库设计.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)课程设计_餐饮管理系统数据库设计.doc(OK版)>相关文档资源请在帮帮文库(www ...
- ux设计_声音建议:设计UX声音的快速指南
ux设计 Mating calls, warning grunts, and supportive coos are some of the sounds heard throughout the a ...
- ux设计_为企业UX设计更好的数据表
ux设计 重点 (Top highlight) If you have worked on enterprise products, you must have noticed the use of ...
- 网页框架布局设计_实用的网页设计-框架和框架用法介绍
网页框架布局设计 Ah, frames. We hated them when Netscape first offered them up around 1995; we deplored them ...
- 小型蘑菇定向切片机设计_鲜枣去核机的设计_玉米脱粒机的设计_振动式马铃薯收获机的设计_谷物干燥机的设计_锤片式饲料粉碎机的设计_山楂去核机的设计_萝卜切丝机设计_板栗去皮机设计_锤式破碎机设计……
棉花打包机的设计[说明书(论文)+CAD+solidworks] 毕业设计_气动四自由度机械手结构设计(设计说明书+CAD图纸) 套类零件自动上下料机构 玉米脱粒机的设计(说明书+cad图纸+p ...
- 蜗杆参数法设计_齿轮几何尺寸设计,很实用的Excel表格(附自动计算表格)
各类齿轮自动计算校核表格获取见文章最下方 我们生活中最常见的齿轮有渐开线圆柱直齿轮.圆锥齿轮.涡轮蜗杆以及链轮类的设计计算,在进行设计时,我们都是对于尺寸进行设计计算,一般都是先要了解齿轮的模数,压力 ...
- php ui设计_什么是ui设计
ui设计即界面设计,是指对软件的人机交互.操作逻辑.界面美观的整体设计.ui设计分为实体ui和虚拟ui,互联网上说的ui设计一般指虚拟ui. UI是用户界面(User Interface)的简称,指的 ...
- 壁行式起重机设计_玉米播种机的设计_残疾人轮椅设计_破冰除雪机设计_单转子可逆式锤式破碎机设计_全液压升降机设计_振动压路机振动轮设计_旋转型灌装机设计_搬运机械手及其控制系统设计……
组合机床主轴箱及夹具设计(论文+DWG图纸) 机械毕业设计-玉米播种机的设计(开题报告+任务书+说明书+CAD图纸+答辩PPT) 机械毕业设计-残疾人轮椅设计(含全套CAD图纸) 残疾人轮椅的设 ...
- 人机工程学座椅设计_人体工程学椅子设计要点 如何设计舒适椅子
人体工程学家具已经逐渐走入我们的生活中,它不仅给我们带来了很多方便,而且还让我们的身体可以更加健康.那么,人体工程学椅子设计要点有哪些?应该如何设计令人舒适椅子呢?下面就跟小编一起来简单的了解一下吧. ...
最新文章
- pandas删除dataframe列名称中包含特定字符串的数据列(dropping columns contains specifiec substring in dataframe)
- 关于sigma pix的理解
- 北航成AAAI 2021最大赢家,两篇一作斩获最佳论文、提名奖,研究皆与Transformer相关...
- JAVA是如何传递参数的?是传值(by value)?还是传地址(by reference)?
- jquery找祖先包含_Jquery的parent和parents(找到某一特定的祖先元素)
- CTR模型越来越深,如何让它变轻?
- 用paddleocr识别汉字_汉字设计中的度量标准(三)
- linux mysql进阶_mysql进阶学习二之搭建主从
- 智迪科技携手海通安恒,启动SAP实施项目
- 微软为何痛失移动操作系统?
- vue.js 组件之间传递数据 1
- 华为交换机默认vlan都是通的吗_【思唯网络学院】华为交换机常用的三种vlan划分方法...
- 取消input、textarea选中后的默认边框样式
- vconfig命令打通直连网络
- Android 系统(196)---Android 属性动画
- ASP.NET AjaxPro的应用 .AjaxPro使用中“XXX未定义”的一种解决方法(转载的)
- 详解:物理地址,虚拟地址,内存管理,逻辑地址之间的关系
- Oracle的CaseWhen
- 前端工程师薪资差距可达7.3倍!4月程序员薪资统计出炉,速看!
- 美团实习经验(基础架构部)
热门文章
- 无纸化考试系统(CS)
- 【网络安全必看】如何提升自身WEB渗透能力?
- LoRa在智能家居当中的物联网应用
- r语言结构方程模型可视化_模型一个结构方程模型(SEM)的简单实验
- 前后落差大用什么词语_形容两个人反差特别大的成语-有明显的反差 用什么词形容-形容前后态度反差巨大的词...
- svchost.exe网速占用解决办法
- Ubuntu 耳机和音响没有声音
- 怎么在删除计算机里面搜索记录,Win7如何删除我的电脑搜索栏里面的搜索记录介绍三种删除win7搜索记录的方法...
- 设计adm和CPU计算机组装方案,成熟的解决方案:CPU风扇(AMD和INTEL)的详细拆卸和安装方法(图形教程)...
- 2022-03-25 redis组建哨兵及主从高可用的failover