java 支付功能之支付系统的对账处理与设计

        这次肺炎疫情持续太久了,头发也快两个月没剪了,天天宅在家也不知道写什么,就写写之前第三方支付后的对账吧

        对账处理是系统支付功能之后需要进行操作的一个流程,一般支付明细流水可分为 当天到账,隔日到账,即 D0 ,T1 交易,以之前印度第三方 Razorpay 支付为例,这种类型银行卡转账,及时就能收到回调信息,即 D0 交易 。

      下图是一般对账的一些状态信息,本地交易结果 ,第三方交易结果 ,对账结果,是否平账(如果是T1交易的话,交易结果会在隔天送到,对账时为等待对账,如果没有这种交易可去掉)。因为钱是从第三方出去的,一般三方结果为准,只要第三方结果是成功,无论本地是失败还是无记录,对账结果都应该是成功的

     说下自己操作的大体思路流程,(可参考,不合理之处望见谅) ,一般来说先是拉对账文件即流水明细入库,之前公司写的是逐条处理循环遍历,这种似乎不太合理,按理来说,一般99%的流水是对账成功的,即双方流水号一致,交易金额一致 (其他需对账字段另加),这种我们可以批量处理,一条 update ...  where id in ( select )这种语句来处理 ,如 update 本地对账流水表 set 各种状态 where id  in ( select  本地流水表  对账流水表 id相同 金额相同的  id )  这样会处理掉绝大部分的流水平账信息,这种是金额平账,待整个流程处理完之后,如果本地失败,第三方无记录,这种也属于平账信息。然后再是将两个表缺失的记录补齐,即双方缺失的流水, 如果是本地没有的流水,需要将对账文件里面的流水加入到本地流水中 ,如果是对账文件没有的流水,本地第三方交易结果无记录  这样也是 表关联 查询,即可查询双方没有的流水信息,补充到本地对账流水明细中,处理完平账信息  流水缺失信息,剩下的就是金额不匹配的了,当然每次操作完成之后,都应该更改两个表的对账状态,接下来可取出所有第三方流水表,没有对账的流水,这种就是流水id相同,金额不同的了,怎么处理看需求 ,个人实现的大概流程是这样的,思路可参考。(轻点喷)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值