| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- -- ============================================================
- -- 【一次性人工补偿】2026-10-01 微信充值 30 元未到账事故
- --
- -- 事故:商户订单号 202610012106065931549256,30.00 元
- -- 微信交易号 4500000442202610019536073654,支付成功时间 2026-10-01 21:06:14
- -- 用户 user_id = 1555324358568706048(手机号 15814577840)
- -- 微信支付回调被 Redis 幂等锁误判为"重复通知"后应答 HTTP 200,
- -- 微信不再重试,钱包流水一直停留在"待确认",余额未增加。
- --
- -- 说明:本文件只针对本次事故执行一次,不属于版本迁移(勿并入 8.sql 自动执行)。
- -- 执行前请先跑【0.核对】,并在微信商户平台确认该笔订单确已收款。
- -- ============================================================
- -- 【0.核对】应返回 1 行、status = 0(待确认)
- SELECT id, user_id, type, order_no, amount, status, create_time
- FROM charge_app.t_wallet_detail
- WHERE order_no = '202610012106065931549256';
- -- 【0.核对】应返回 0 行(证明系统内确实没有入账记录)
- SELECT id FROM charge_app.t_pay_log WHERE out_trade_no = '202610012106065931549256';
- -- 【1.钱包流水置为已确认】status: 0待确认 -> 1已确认
- UPDATE charge_app.t_wallet_detail
- SET status = 1,
- currency = 'CNY',
- amount = 3000,
- transaction_time = '2026-10-01 21:06:14'
- WHERE id = 1555324958656167936
- AND order_no = '202610012106065931549256'
- AND status = 0;
- -- 【2.补记支付记录】必须补:幂等快路径依赖 t_pay_log,
- -- 缺了它以后再收到该订单回调会走不到快路径而重复入账
- -- <唯一ID> 请替换为雪花ID或任意未被占用的唯一值
- INSERT INTO charge_app.t_pay_log
- (id, user_id, openid, bank_type, mch_id, out_trade_no, transaction_id, success_time,
- trade_type, trade_state, attach, total, currency, payer_total, payer_currency)
- VALUES
- (<唯一ID>, 1555324358568706048, 'oK-oR5g5Y9vkVeaa7wsoLt1yMGAY', 'BANK_CREDIT', '1635831469',
- '202610012106065931549256', '4500000442202610019536073654', '2026-10-01 21:06:14',
- 'JSAPI', 'SUCCESS', '', 3000, 'CNY', 3000, 'CNY');
- -- 【3.补余额】
- UPDATE charge_app.t_account
- SET balance = balance + 3000
- WHERE user_id = 1555324358568706048;
- -- 【4.验证】
- SELECT u.id AS user_id, acc.balance, acc.discount_amount,
- (acc.balance - acc.discount_amount) AS refundable_amount
- FROM charge_app.t_user u
- LEFT JOIN charge_app.t_account acc ON u.id = acc.user_id
- WHERE u.id = 1555324358568706048;
- -- 【5.全量排查同类受害者】列出当天所有"待确认"的充值流水,
- -- 再与微信对账单逐笔核对(未支付就放弃的预下单也会是待确认,需用对账单确认哪些真的付了钱)
- SELECT w.id, w.user_id, w.order_no, w.amount, w.status, w.create_time
- FROM charge_app.t_wallet_detail w
- WHERE w.type = 1
- AND w.status = 0
- AND w.create_time >= '2026-10-01 00:00:00'
- AND w.create_time < '2026-10-02 00:00:00'
- ORDER BY w.create_time;
|