fix: 修复强充场景幂等 key 在微信支付失败时未被清除的问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m20s

将 markClientPurchaseCreated 移至 CreateJSAPIPayment 成功之后调用,
确保支付失败时 defer 能可靠地删除幂等 key,避免用户无法重新下单。

原顺序:创建充值单 → markClientPurchaseCreated → CreateJSAPIPayment
修复后:创建充值单 → CreateJSAPIPayment → markClientPurchaseCreated → *created=true

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-07 09:55:06 +08:00
parent c0c32c62f4
commit 10fcc0b3c9

View File

@@ -366,13 +366,13 @@ func (s *Service) createForceRechargeOrder(
return nil, errors.Wrap(errors.CodeDatabaseError, err, "创建充值记录失败")
}
s.markClientPurchaseCreated(ctx, redisKey, recharge.RechargeNo)
paymentResult, err := paymentProvider.CreateJSAPIPayment(ctx, recharge.RechargeNo, "余额充值", openID, int(recharge.Amount))
if err != nil {
return nil, err
}
// 微信支付创建成功后才标记幂等 key确保支付失败时 defer 能正确清除 key
s.markClientPurchaseCreated(ctx, redisKey, recharge.RechargeNo)
*created = true
return &dto.ClientCreateOrderResponse{