diff --git a/internal/service/client_order/service.go b/internal/service/client_order/service.go index 9eb3b51..f64a44b 100644 --- a/internal/service/client_order/service.go +++ b/internal/service/client_order/service.go @@ -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{