搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家自动化
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Hadoop学习——HDFS数据备份与放置策略_hadoop备份解决方案
2
关于springBoot启动失败问题:Disconnected from the target VM, address: '127.0.0.1:58898', transport: 'socket'
3
鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Flex)
4
Linux 网络虚拟化 Macvlan(基于物理网络接口虚拟网络接口) 认知
5
如何注册微软Azure并获取语音合成服务?_azure语音服务密钥
6
【 Java应用程序移植到Linux环境 】Windows IDEA Java简单应用程序打包移植到Linux中运行_windowsjava程序 改成 linux
7
华为HarmonyOS鸿蒙2.0系统安装谷歌框架play商店GMS,mate30/40系列,p40,p50,nova5 6 7 8,荣耀30/40/50/magic3/9x_bishua666/huagu2
8
高级RAG(二):父文档检索器_retriever.get_relevant_documents
9
分库分表的利弊分析与探究
10
【PHP】连接数据库验证登陆
当前位置:
article
> 正文
重复提交一笔转账交易的问题
作者:我家自动化 | 2024-03-14 13:08:45
赞
踩
单笔转账重复发起的bug
先说下这个问题的背景:
熟悉银行业务的朋友们都知道对于一笔网上转账交易来说,假如客户通过网络银行给其他人转账,他发现在网银关于资金转入行的选项中没有他要转入的那个分行或支行,他就必须手工输入银行名称或行号,然后此笔转账交易将落地到后台系统,由银行的柜员手工查找该转入行对应的联行号,方可完成此笔转账,而这样的柜员大多数只专门负责这种交易,眼睛直勾勾盯着柜员机,发现有一笔新的落地交易后就会帮助客户来录入联行号以实现转账。
此时情况就出现了:假设现在有2个柜员同时看到了这笔交易,然后他们在很短的时间间隔内先后录入了联行号点击确定,这就使一笔流水号发向银行核心系统后(由于网络传输是要时间代价的)还没来得及返回,另一柜员提交的同样的一笔流水又发到核心去了。最终客户发现,自己本打算转2w给一个客户,最后却出去4w块钱,不愤怒才怪,呵呵
加之我出差所在的银行的大额系统(也就是快速异地转账系统)没有防止重复提交的功能,换言之,一笔流水号提交上去2次,银行的核心系统就会傻了吧唧的给客户转2次账……
我们公司的系统是一个渠道,本不应该搞这个,但由于乙方从来都是孙子,所以只好替核心的不足擦屁股,设法解决这个问题
费了半天话才刚进入正题,解决上面的问题,方案很简单:
在网银的数据库中新建一个表,就一个字段(主键),用于储存流水号,在发银行核心系统之前,将要转帐的这笔流水insert到此表中(此时第二个柜员就无法再次录入这笔交易了,利用数据库的锁,防止了重复提交),当核心返回数据后判断:
当返回的数据是一个连接异常时,删去数据库中这笔流水(核心压根没接到这个包)
当返回的数据是一个返回超时异常时,不做任何处理(这时代表数据包已经传递给核心系统,至于转账成功与否由于没有得到返回数据我们无从知晓,故只好等待晚上跑批时将当日状态对账)
当返回的数据是核心交易异常时,删去数据库中这笔流水(此笔转账没成功,允许其他柜员再次提交这笔交易)
当返回的数据是交易成功时,不做处理(将此交易的流水号留在库中,其他柜员就无法再次录入此流水的交易)
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家自动化/article/detail/234671
推荐阅读
article
leaflet
的使用_
leaflet
zoomcontrol
...
【代码】
leaflet
的使用。_
leaflet
zoomcontrol
leaflet
zoomcontrol
...
赞
踩
article
【
鸿蒙
- 开发】
OpenHarmony
开发入门知识_
鸿蒙
三方
sdk
har
hsp
...
共享包的理解:https://gitee.com/open
har
mony/docs/blob/master/zh-cn/...
赞
踩
article
异常:DeadObjectExcepti
on
: Transacti
on
failed
on
smal...
出现异常如下:System.err: android.os.DeadObjectExcepti
on
: Transacti...
赞
踩
article
Android
进程
中
通信
的方式_
android
进程
间
通信
...
第一、使用
进程
共享的方式,往往使用
android
:process=remote,这样开启一个新的
进程
,使得所有
进程
都可以...
赞
踩
article
数仓
学习---7、
数据仓库
设计
、
数据仓库
环境
准备
_
数据仓库
构建
步骤...
数据仓库
设计
、
数据仓库
环境
准备
_
数据仓库
构建
步骤
数据仓库
构建
步骤 ...
赞
踩
article
Android
monitor
无法开发 报错
Error
: Could
not
create
the
...
今天双击打开
monitor
.bat 出现如下报错
Error
: Could
not
create
the
Java Vir...
赞
踩
article
Leaflet
官方教程(
一
)——
Leaflet
Quick
Start
Guide
_
leaflet
教...
最近开始翻译的东西有点多啊,但是越看官方文档越是兴奋,觉得很有意思,白天工作忙,没时间翻译,有时候会看看实践实践,晚上加...
赞
踩
article
幂
等
防重
最佳实践_
防重
场景
和
防重
方法...
幂
等
、
防重
的最佳实践_
防重
场景
和
防重
方法
防重
场景
和
防重
方法 ...
赞
踩
article
运用按钮
点击
事件
让
list
动态
获取
sqllite
数据(
Android
学习笔记2)_根据
点击
事件
获取
动...
运用按钮
点击
事件
让
list
动态
获取
sqllite
数据_根据
点击
事件
获取
动态
表格信息根据
点击
事件
获取
动态
表格信息 ...
赞
踩
article
虹科
方案
|
冷藏
和
冷冻设施设备的
验证
和
监测
解决
方案
...
药品
和
生物技术产品非常敏感,需要最佳的储存条件。
冷藏
和
冷冻设施设备对产品的稳定性至关重要,它们有特定的储存
和
运输温度范围...
赞
踩
article
常见
的
时间
序列
预测
模型
python
实战汇总_小样本
时间
序列
预测
模型
...
但要注意
的
是,这些准则不能说明某一个
模型
的
精确度,也即是说,对于三个
模型
A,B,C,我们能够判断出C
模型
是最好
的
,但不能...
赞
踩
article
《安富莱
嵌入式
周报》第304期:
开源
硬件
耳机
设计,
AI
单片机
STM32N6
已确定为M55内核,另外还...
《安富莱
嵌入式
周报》第304期:
开源
硬件
耳机
设计,
AI
单片机
STM32N6
已确定为M55内核,另外还有新品
STM32H5
...
赞
踩
article
Wechaty
|不
使用
微信
的
web
协议的
机器人
_
itchat
替代方案...
几个比较知名的几个开源
微信
机器人
项目
itchat
itchat
是一个开源的
微信
个人号接口,基于python调用
微信
使...
赞
踩
article
vim
编译器
学习(一)_
linux
的
vim
和
windows
下 修改文件
的
区别...
一、vi与
vim
介绍vi
编译器
是所有Unix及Linux系统下标准
的
编译器
,类似于Windows系统下notepad(记...
赞
踩
article
通过
实例学习鸿蒙
静态
库
的创建与
使用
_鸿蒙
har
静态
库
c++
...
静态
共享包HAR(Harmony Archive),是为了实现代码和资源的共享,可以包含代码、C++
库
、资源和配置文件,...
赞
踩
article
Leaflet
中使用
markerCluster
实现
点
聚合效果...
场景
Leaflet
中添加标记、折线、圆圈、多边形、弹窗显示
点
击处坐标:
Leaflet
中添加标记、折线、圆圈、多边形、弹窗...
赞
踩
article
基于
cnn
的
短文本
分类
_
基于
CNN
和
BiLSTM
的
文档二
分类
模型...
自动文档
分类
是一个基础研究主题,可以广泛地应用在垃圾邮件
分类
、网页
分类
、自动新闻情感识别等领域。
基于
机器学习
的
方法,需要...
赞
踩
article
flex
布局文字可以
换行
数字不
换行
可以设置这个属性
_
flex
个数
过多
实现
不
换行
下拉展示...
display:
flex
; white-space: normal; word-break: break-all;
_
f...
赞
踩
article
Mac
安装
Nginx_
mac
nginx
...
在Mac系统上
安装
Linux,一步一步执行
安装
_
mac
nginx
mac
nginx
一、环境 ...
赞
踩
article
ECCV2020
|
Cityscapes
上83.7
mIoU
,通过解耦的
主体
和边缘监督改进
语义
分割
...
点击上方“AI算法修炼营”,选择“星标”公众号精选作品,第一时间送达本文是收录于
ECCV2020
,将
语义
分割
网络解耦成主...
赞
踩
相关标签
swift
开发语言
ios
harmonyos
android
java
学习
数据仓库
大数据
hive
Leaflet
JS
幂等
最佳实践
温度监测
温度验证
药品存储
python
机器学习
单片机
stm32
开源