fix: 正确获取BepUsdt钱包地址
BepUsdt API返回的钱包地址在token字段中,不是address字段 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -157,34 +157,8 @@ func (h *PaymentHandler) CreatePayment(c *gin.Context) {
|
||||
token, _ := data["token"].(string)
|
||||
paymentURL, _ := data["payment_url"].(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)
|
||||
}
|
||||
}
|
||||
// 钱包地址在token字段中
|
||||
walletAddress := token
|
||||
|
||||
log.Printf("[BepUsdt] payment data: trade_id=%s, token=%s, payment_url=%s, wallet_address=%s", tradeID, token, paymentURL, walletAddress)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user