2026-07-07 18:05:02 +08:00

61 lines
1.9 KiB
Go

package wallet
import (
"strings"
"hyapp/pkg/appcode"
)
// ExternalRechargeConfig 保存 H5 外部充值需要公开给业务链路的运行配置。
type ExternalRechargeConfig struct {
USDTTRC20Enabled bool
USDTTRC20Address string
USDTTRC20Addresses map[string]string
USDTBEP20Enabled bool
USDTBEP20Address string
USDTBEP20Addresses map[string]string
MifaPayNotifyURL string
MifaPayReturnURL string
V5PayNotifyURL string
V5PayReturnURL string
}
func normalizeExternalRechargeConfig(config ExternalRechargeConfig) ExternalRechargeConfig {
config.USDTTRC20Address = strings.TrimSpace(config.USDTTRC20Address)
config.USDTTRC20Addresses = normalizeRuntimeRechargeAddressMap(config.USDTTRC20Addresses)
config.USDTBEP20Address = strings.TrimSpace(config.USDTBEP20Address)
config.USDTBEP20Addresses = normalizeRuntimeRechargeAddressMap(config.USDTBEP20Addresses)
config.MifaPayNotifyURL = strings.TrimSpace(config.MifaPayNotifyURL)
config.MifaPayReturnURL = strings.TrimSpace(config.MifaPayReturnURL)
config.V5PayNotifyURL = strings.TrimSpace(config.V5PayNotifyURL)
config.V5PayReturnURL = strings.TrimSpace(config.V5PayReturnURL)
return config
}
func (config ExternalRechargeConfig) usdtTRC20AddressForApp(app string) string {
return firstNonEmpty(config.USDTTRC20Addresses[appcode.Normalize(app)], config.USDTTRC20Address)
}
func (config ExternalRechargeConfig) usdtBEP20AddressForApp(app string) string {
return firstNonEmpty(config.USDTBEP20Addresses[appcode.Normalize(app)], config.USDTBEP20Address)
}
func normalizeRuntimeRechargeAddressMap(values map[string]string) map[string]string {
if len(values) == 0 {
return nil
}
normalized := make(map[string]string, len(values))
for app, address := range values {
app = appcode.Normalize(app)
address = strings.TrimSpace(address)
if app == "" || address == "" {
continue
}
normalized[app] = address
}
if len(normalized) == 0 {
return nil
}
return normalized
}