🛠️ fix: billing session error handling for subscription-first fallback.

Aligns the error variable types in the subscription-first path so that quota fallback checks use the correct NewAPIError.
This prevents build failures and preserves the intended wallet fallback when subscription pre-consume returns an insufficient quota error.
This commit is contained in:
t0ng7u
2026-02-07 01:03:49 +08:00
parent 1cc6bf1b45
commit 10c5f5f906

View File

@@ -323,19 +323,19 @@ func NewBillingSession(c *gin.Context, relayInfo *relaycommon.RelayInfo, preCons
case "subscription_first":
fallthrough
default:
hasSub, err := model.HasActiveUserSubscription(relayInfo.UserId)
if err != nil {
return nil, types.NewError(err, types.ErrorCodeQueryDataError, types.ErrOptionWithSkipRetry())
hasSub, subCheckErr := model.HasActiveUserSubscription(relayInfo.UserId)
if subCheckErr != nil {
return nil, types.NewError(subCheckErr, types.ErrorCodeQueryDataError, types.ErrOptionWithSkipRetry())
}
if !hasSub {
return tryWallet()
}
session, err := trySubscription()
if err != nil {
if err.GetErrorCode() == types.ErrorCodeInsufficientUserQuota {
session, apiErr := trySubscription()
if apiErr != nil {
if apiErr.GetErrorCode() == types.ErrorCodeInsufficientUserQuota {
return tryWallet()
}
return nil, err
return nil, apiErr
}
return session, nil
}