【问题标题】:Flutter binance api signatureFlutter 币安 api 签名
【发布时间】:2021-06-17 21:34:52
【问题描述】:

我正在使用以下代码来获取binance api签名,但它不起作用!谁能帮忙!

int timeStamp = DateTime.now().millisecondsSinceEpoch;
String queryParams = 'timestamp=' + timeStamp.toString();

List<int> key = convert.utf8.encode(this.apiSecret);
crypto.Hmac hmac = new crypto.Hmac(crypto.sha256, key);
List<int> messageBytes = convert.utf8.encode(queryParams);
crypto.Digest digest = hmac.convert(messageBytes);
String signature = hex.encode(digest.bytes);

【问题讨论】:

  • 对我来说看起来不错,问题可能出在您的实际要求中。您可以发布您发送的请求 URI 吗?反应如何?

标签: api flutter dart blockchain binance


【解决方案1】:

2021 年 8 月 16 日更新

Binance 已使用 SHA512 算法更新了新的签名密钥格式,有关详细信息,您可以查看 Binance api 文档。

String signature = timestamp.toString() + "\n" + nonce + "\n" + bytes + 
"\n";

您必须包含“\n”

我的代码

我已尝试在 Binance 支付 api 上使用此代码打印的签名密钥,一切正常。 (发送请求时签名必须为大写)

var key = utf8.encode('YOUR_SECRET_KEY'); // get from binance api
var timestamp = DateTime.now().millisecondsSinceEpoch;
var nonce = "asdopewrmweqjidsfnosd"; // Random 32 length String,
var bytes = '''{
  "merchantId": "",
  "subMerchantId": "",
  "merchantTradeNo": "9825382937292117596", 
  "totalFee": 0.5,
  "productDetail": "Greentea ice cream cone",
  "currency": "USDT", 
  "returnUrl": "",
  "tradeType": "WEB", 
  "productType": "Food",
  "productName": "Ice Cream"
 }''';
String payload = timestamp.toString() + "\n" + nonce + "\n" + bytes + 
"\n";

var hmacSha512 = Hmac(sha512, key); // HMAC-SHA512/
var digest = hmacSha512.convert(utf8.encode(payload));

print(timestamp.toString() + "\n");
print("HMAC digest as hex string: ${digest.toString().toUpperCase()}");

【讨论】:

    【解决方案2】:

    你可以使用我的新飞镖包:https://pub.dev/packages/binance_api_dart/versions/1.0.1 它是一个用于 binance api 调用的 http 包装器。它能够创建签名并返回http响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-08
      • 2022-11-30
      • 2023-01-04
      • 1970-01-01
      • 2021-07-13
      • 2018-06-07
      • 2021-09-12
      • 2021-08-02
      相关资源
      最近更新 更多