使用C#调用Binance API赎回USDT时遇‘daily product not exist’错误
解决Binance API赎回USDT时的「daily product not exist」错误
调用C#版Binance SDK的RedeemFlexibleProductAsync方法赎回USDT时,收到错误:
Error: daily product not exist
已完成的排查:
- 可通过Binance App正常赎回该金额
- 确认传入的参数值为「USDT」,无拼写错误
- 与交易所服务器连接正常
- 可通过该连接读取包括USDT在内的所有灵活理财余额
- API已开启交易和提现权限
- 已尝试不同receiveWindows值,当前设为最大值60000
问题核心原因
你传入的「USDT」是币种符号,但RedeemFlexibleProductAsync方法第一个参数要求的是灵活理财专属产品ID——Binance的灵活理财每个币种对应独立的产品ID,并非直接使用币种符号。
修复方案
从GetFlexibleProductPositionAsync的返回结果中,提取对应币种的ProductId字段,再传入赎回接口即可。
修改后的代码
private async Task<bool> RedeemFromEarn(string coin, decimal redeemAmount) { var earnPositions = await client.GeneralApi.Savings.GetFlexibleProductPositionAsync(); var targetPosition = earnPositions.Data.First(x => x.Asset.Equals(coin)); var earnBalance = Convert.ToDecimal(targetPosition.TotalQuantity); if (earnBalance > redeemAmount) { // 使用获取到的正确产品ID,而非币种符号 var redeemResult = await client.GeneralApi.Savings.RedeemFlexibleProductAsync( targetPosition.ProductId, redeemAmount, RedeemType.Normal, 60000); if (redeemResult.Success) { Debug.Print($"赎回成功,交易ID: {redeemResult.Data}"); } else { Debug.Print($"错误: {redeemResult.Error.Message}"); } } else { Debug.Print($"理财账户中{coin}余额不足,最大可赎回{earnBalance}"); return false; } return true; }
额外提示
- 若仍有问题,可尝试切换
RedeemType为Fast(快速赎回),部分产品可能限制普通赎回渠道 - 确认
GetFlexibleProductPositionAsync返回的ProductId不为空,避免空值传入
内容的提问来源于stack exchange,提问作者Dani Sanai
相关产品推荐
相关产品推荐

