#api #flutter #dart #blockchain #binance
Вопрос:
Я использую следующий код для получения подписи API binance, но он не работает!! может ли кто-нибудь помочь!
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);
Комментарии:
1. Мне кажется, это хорошо, проблема, вероятно, в вашем фактическом запросе. Можете ли вы опубликовать URI запроса, который вы отправляете? И каков будет ответ?
Ответ №1:
Обновление 16 августа 2021 года
Binance обновила новый формат ключа подписи с помощью алгоритма SHA512 для получения более подробной информации вы можете ознакомиться с документом api Binance.
String signature = timestamp.toString() "n" nonce "n" bytes
"n";
ВЫ ДОЛЖНЫ ВКЛЮЧИТЬ «n»
Мой Код
У меня есть ключ подписи, который печатается из этого кода в платежном api Binance, все работает нормально. (подпись должна быть прописной при отправке запроса)
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:
Вы можете использовать мой новый пакет dart: https://pub.dev/packages/binance_api_dart/versions/1.0.1 это http-оболочка для вызова api binance. Он способен создавать подпись и возвращать http — ответ.