业务相关知识

1.关于支付时间到期未支付问题
https://blog.csdn.net/qq_45473439/article/details/123315976
1-redis过期回调,设置key的过期时间,一旦key过期触发callback事件;
修改redis.conf文件开启notify-keyspace-events Ex
Redis监听配置,注入Bean RedisMessageListenerContainer
编写Redis过期回调监听方法,必须继承KeyExpirationEventMessageListener
2-redis的zset实现,zset元素唯一,但是score分数(存时间)可以重复且按照大小排序
通过轮询比较最小时间的与当前过期时间比较,删除过期的key
3-rabbitMQ延迟队列
设置队列的过期时间或者消息的的过期时间TLL,队列的过期时间是一样的,消息的过期时间可以不一样
设置死信交换机,当过期的队列的消息过期后,就会通过死信交换机转发到死信队列
一旦队列内出现死信消息,可以将消息重新路由到另一个正常交换机,然后分配到正常的队列,消费者正常消费,取消支付订单
4-延迟队列DelayQueue
DelayQueue内部结构是一个二叉堆,队列存了对象和对象的到期时间,然后按照到期时间排序
delayQueue有put(内部使用reentranlock锁,线程安全)存入和poll(非阻塞)/take(阻塞)获取方法,poll没有获取到到期元素返回null,take没有获取到到期元素就会线程等待
内部默认跟是订单到期时间跟系统时间比较

3.收银台:
前台面向客户;后台面向支付系统(支付渠道)
前台:面向用户提供支付方式和支付请求发起
后台:调用支付渠道,发起支付请求

4.对账系统:
1.本端多账:日切时间不一样,本方23:59:59的数据,再对方是00:00:01,选择挂账留到T+1去对账
2.对端多账:因测试数据导致,确认是测试数据
3.金额不一致:极少见到,人工介入
4.状态不一致,调用对端进行核实同步
分布式定时任务中间件xxl-job对账,可以快速修改定时任务的时间,无需重启程序

5-订单支付设计: 实时到账查询和超时取消 ,收款时有带用户名,金额和身份证号
改造前:定时任务每15分钟做一次扫描所有的未获取成功的支付订单,并记录时间点,作为下一次的开始时间对比订单时间,然后补偿查询支付系统,获取最终状态
1.设计大额订单拆多个子单支付,提供各个子单的支付渠道
2.支付订单入库,并设计rabbitMQ的延迟队列,设置TLL过期时间15分钟,支付状态:待支付
3.等待支付系统实时回调,已经支付成功的订单,支付公司回调过来后,修改状态:支付成功
4.对于未回收到支付公司的异步回调,15分钟后,延迟队列的死亡队列处理时,再去调取一次支付系统,确认支付状态,还是未支付的修改状态:支付失败
5.也可以再设计一个延迟队列,过期时间为10分钟,到期后,通知客户,有一笔订单未支付

6.审核系统:因需要数据参考审核是否转人工,且不同的数据返回时间不同,时快时慢
改造前:只是第一次进入审核的订单做一次各条件审核,然后配置已最长的返回数据再做一次审核,然后判断是否进入人工
不好点:1第一次失败多,第二次整体耗时太长,影响取款效率;2.时长不定,影响人工介入多,人工总比系统慢很多,整体耗时
改造后:多加几次审核,减少因为有时数据来的比较快,而还是已固定的时间去做二次审核
最后加一次2分钟的任务,对所有未审核通过的订单再次审核,减少转人工

7.提现:
1.提现订单是不能取消的,所以一但生成就必须成功,故直接调接口,等待支付系统返回提现状态,然后做提现单子补偿查询状态同步,然后后台还有单笔状态同步

8.厅方转账
1.第一次进厅,全部带入,token未失效前,可以重复进厅
2.正常情况:用可以选择进厅金额,此时金额冻结,得到厅方返回厅方地址和成功,金额解冻;
3.异常情况:1-进厅是产生进厅记录,状态为待进厅,成功后改状态已进厅
2-重复进厅,还是上一笔进厅记录,不会新增金额,直到进厅成功(行锁,若数据存在,还是上一笔进厅记录)
3-若是一直进厅不成功,否则冻结资金不解冻,需要人工跟厅方确认,是否解冻

          4-进厅成功后,判断未进厅成功,不能转账,转账也是一样,必须成功,否则一直冻结,定时任务对转账记录查询,直到出厅时,再次查询厅方,此笔转账是否成功,定时任务去回调厅方记录或等待人工确认,解冻
            再次转账,不受上一次转账影响

同时可以进入同一币种的多个厅,默认全部转入金额,也可以选择金额

2.token失效后或者长时间用户未打开厅页面,由厅方会回调我们接口转出厅方金额和游戏记录
3.厅方交易时间,跟我方的记录时间不一致问题,把数据全部保存再我们系统中,每次同步游戏明细时,按照我方进厅记录时间和厅方进厅记录时间的时间差做比例进行明细记录时间的修改后,厅方时间和本地时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值