银行转账功能(二)

银行转账功能(二)

          1、上一篇我们说过了同行转账,就是同库转账。其原理无非是一个减钱,一个加钱。

           思考:既然原理都是一样的,那么为什么还要说这个不同银行(跨行)转账呢?

           2、跨行(跨地区和跨银行)转账实质上我们可以理解为跨数据库转账。那么如果说是这样的话:

            转出方:账户甲

            转入方:   账户乙

            (1) 获取不到  账户已  的账号信息

            (2)无法或者说没有能力将给  账户乙  的加款这件事添加事务

           3、跨行转账的基本实现思路:

            前提:每个银行都会有一个公有账号(PublicAccount),这个账号存在的意义主要是用来处理跨行业务。

             (1)从账户甲扣款(新手看的时候括号内的备注请忽略,真扣还是假扣我们不管,真扣(马上减去转账金额),假扣(该账户会有一个字段记录转出金额,定时根据转入方到账或者银行自己的条件对其进行归0处理))。

             (2)给  银行甲  的PublicAccount加钱。

             (3)通知  账户乙  所在的  银行乙,按照  银行乙  约定的方式传递数据给该行所提供的API 。

             (4)银行已处理完之后,会通过某种方式提醒  账户甲所在的  银行甲。然后  账户甲完成了向账户乙的转账操作。

             (5)那么问题来了,银行甲  还欠着  银行乙  的钱呢。它只是收  账户甲  的钱,让  银行乙  给  账户乙  加款。但是  银行甲  没给  银行乙 转账(此时  账户乙  加款成功)。

             (6)在夜深人静的时候(在线用户较少的时候),银行甲的PublicAccount账户会向银行乙的PublicAccount中转账。就是把当天的银行甲向银行乙中所有转账金额加到银行乙的PublicAccount账户中。当银行乙的反馈信息中是加款成功的时候,银行甲减去向银行乙的转账金额(不归0的原因是这个操作过程中可能有用户完成了一笔转账或别的操作)。


你可能感兴趣的:(转账)