微信余额就是一个数字保存在账户表中的,假如我在微信部门工作
id | 账户名 | 微信余额 |
1 | 张三 | 6 =>10000 |
如果执行 UPDATE 账户表 SET 微信余额 = 10000 WHERE 账户名 = '张三'
,表面上看余额是变了,但谁会发现呢?
其实,微信一般都会有流水表来记录余额的变化,每次交易都会生成对应的交易记录。所以,这种操作迟早会被对账查出来。
这样搞的话,那可真是“行”(刑)啊。
账户表 | 流水表 |
账户ID :1 账户名称:张三 账余额: 1 | 账户 ID 1 余额变动: 100 变动前:1 变动后余额:101 变动时间: 2025-03-22 |
如果你的账户余额凭空变成 10,000,但在最终对账时发现昨日余额加上今日流水的发生额并不等于今天的余额,那不就出现账务差错了吗?
日中对账:
昨日余额 + 今天的流水发生额 = 今日余额
生成流水
那简单,我找隔壁兄弟帮忙再加一条账户流水记录,这样余额和流水都能对上,不就万无一失了?
账户ID | 余额变动 | 变动前余额 | 变动后余额 | 时间 |
1 | 10000 | 1 | 10000 | 2025年3月22日14:03:18 |
UPDATE 流水表
SET 余额变动 = 10000,
变动前余额 = 1,
变动后余额 = 10000,
时间 = '2025-03-22 14:03:18'
WHERE 账户ID = 1;
第二道防线:账证核对
但还是不行,一般都有第二道防线是账证核对
流水表
账户ID | 余额变动 | 变动前余额 | 变动后余额 | 时间 |
1 | 10000 | 1 | 10000 | 2025年3月22日14:03:18 |
交易记录
订单类型 | 充值金额 | 资金来源 | 清算机构 | 时间 |
充值 | 10000 | 招商 | 网联 | 2025年3月22日14:03:18 |
如果有一条金额增加的流水记录,那就必须对应一条从银行充值的交易记录。否则,如果没有相应的交易记录,这条流水就是假的。
确实,你说得对,但这些数据不还是存储在微信的数据库里吗?如果再找个权限更高的兄弟,生成一条对应的交易记录,那不就能自圆其说了吗?
生成交易记录
交易记录表
订单类型 | 充值金额 | 资金来源 | 清算机构 | 时间 |
充值 | 10000 | 招商 | 网联 | 2025年3月22日14:03:18 |
update 交易记录表 set 订单类型 = 充值;
充值余额=10000;
资金来源=招商;
清算机=网联,
时间 = '2025-03-22 14:03:18'
where 账户ID=1
但是呢,我们能想到的公司早就考虑到了。微信不仅仅会内部记账,还会定期与银行的账目进行核对。所以,微信的账务流水不仅仅是内部记录,还需要和外部银行的交易进行对账。
交易记录(微信内部) | 银行流水(网联) |
流水:10097 订单类型:充值 资金来源:招商 金额:1000 时间:2025年3月22日14:03:18 | 流水:10097 发生时间:2025年3月22日14:03:18 发生金额:1000 |
不可能你还在银行有人吧!!!所以说想想就好别去尝试
Comments 1 条评论
开发前的技术可行性分析