fix: 增强BepUsdt钱包地址获取逻辑
- 尝试多个可能的字段名获取钱包地址 - 如果没有直接返回,尝试从payment_url解析 - 添加详细日志记录 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -156,7 +156,37 @@ func (h *PaymentHandler) CreatePayment(c *gin.Context) {
|
||||
tradeID, _ := data["trade_id"].(string)
|
||||
token, _ := data["token"].(string)
|
||||
paymentURL, _ := data["payment_url"].(string)
|
||||
walletAddress, _ := data["address"].(string)
|
||||
|
||||
// 尝试多个可能的字段名获取钱包地址
|
||||
var walletAddress string
|
||||
addressFields := []string{"address", "wallet_address", "to_address", "payment_address", "deposit_address", "receiver_address"}
|
||||
for _, field := range addressFields {
|
||||
if addr, ok := data[field].(string); ok && addr != "" {
|
||||
walletAddress = addr
|
||||
log.Printf("[BepUsdt] found wallet address in field '%s': %s", field, addr)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有直接获取到钱包地址,尝试从payment_url解析
|
||||
if walletAddress == "" && paymentURL != "" {
|
||||
// payment_url格式可能是: usdt:TRC20地址?amount=xxx 或直接是钱包地址
|
||||
if strings.HasPrefix(paymentURL, "usdt:") || strings.HasPrefix(paymentURL, "USDT:") {
|
||||
parts := strings.SplitN(paymentURL, ":", 2)
|
||||
if len(parts) > 1 {
|
||||
// 移除查询参数
|
||||
addrPart := strings.SplitN(parts[1], "?", 2)[0]
|
||||
walletAddress = strings.TrimSpace(addrPart)
|
||||
log.Printf("[BepUsdt] parsed wallet address from payment_url: %s", walletAddress)
|
||||
}
|
||||
} else if len(paymentURL) >= 30 && !strings.Contains(paymentURL, "://") {
|
||||
// 可能直接就是钱包地址
|
||||
walletAddress = paymentURL
|
||||
log.Printf("[BepUsdt] using payment_url as wallet address: %s", walletAddress)
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("[BepUsdt] payment data: trade_id=%s, token=%s, payment_url=%s, wallet_address=%s", tradeID, token, paymentURL, walletAddress)
|
||||
|
||||
var amount float64
|
||||
if v, ok := data["amount"].(float64); ok {
|
||||
|
||||
Reference in New Issue
Block a user