This commit is contained in:
@@ -285,6 +285,27 @@ func (h *ClientWalletHandler) CreateRecharge(c *fiber.Ctx) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
rechargeNo := generateClientRechargeNo()
|
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{
|
recharge := &model.AssetRechargeRecord{
|
||||||
UserID: resolved.CustomerID,
|
UserID: resolved.CustomerID,
|
||||||
AssetWalletID: wallet.ID,
|
AssetWalletID: wallet.ID,
|
||||||
@@ -304,23 +325,6 @@ func (h *ClientWalletHandler) CreateRecharge(c *fiber.Ctx) error {
|
|||||||
return errors.Wrap(errors.CodeDatabaseError, err, "创建充值记录失败")
|
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)
|
payConfig := buildClientRechargePayConfig(appID, payResult)
|
||||||
resp := &dto.ClientRechargeResponse{
|
resp := &dto.ClientRechargeResponse{
|
||||||
Recharge: dto.ClientRechargeResult{
|
Recharge: dto.ClientRechargeResult{
|
||||||
|
|||||||
Reference in New Issue
Block a user