修复
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m22s

This commit is contained in:
2026-03-23 09:49:30 +08:00
parent c10b70757f
commit 876151ec1c

View File

@@ -285,6 +285,27 @@ func (h *ClientWalletHandler) CreateRecharge(c *fiber.Ctx) error {
}
rechargeNo := generateClientRechargeNo()
// 先初始化微信支付实例并创建预支付订单,确认支付通道可用
// 避免先写入充值记录后支付初始化失败,导致产生孤儿记录
cache := wechat.NewRedisCache(h.redis)
paymentApp, err := wechat.NewPaymentAppFromConfig(config, appID, cache, h.logger)
if err != nil {
return errors.Wrap(errors.CodeWechatPayFailed, err, "初始化微信支付实例失败")
}
paymentService := wechat.NewPaymentService(paymentApp, h.logger)
payResult, err := paymentService.CreateJSAPIOrder(
resolved.SkipPermissionCtx,
rechargeNo,
"资产钱包充值",
openID,
int(req.Amount),
)
if err != nil {
return err
}
// 支付通道确认可用后,再创建充值记录
recharge := &model.AssetRechargeRecord{
UserID: resolved.CustomerID,
AssetWalletID: wallet.ID,
@@ -304,23 +325,6 @@ func (h *ClientWalletHandler) CreateRecharge(c *fiber.Ctx) error {
return errors.Wrap(errors.CodeDatabaseError, err, "创建充值记录失败")
}
cache := wechat.NewRedisCache(h.redis)
paymentApp, err := wechat.NewPaymentAppFromConfig(config, appID, cache, h.logger)
if err != nil {
return errors.Wrap(errors.CodeWechatPayFailed, err, "初始化微信支付实例失败")
}
paymentService := wechat.NewPaymentService(paymentApp, h.logger)
payResult, err := paymentService.CreateJSAPIOrder(
resolved.SkipPermissionCtx,
recharge.RechargeNo,
"资产钱包充值",
openID,
int(req.Amount),
)
if err != nil {
return err
}
payConfig := buildClientRechargePayConfig(appID, payResult)
resp := &dto.ClientRechargeResponse{
Recharge: dto.ClientRechargeResult{