Хотя на github и здесь есть похожие ошибки, они старше, но у меня проблема с сигнатурой при извлечении монеты из binance через API из моего скрипта. Возврат сообщения в результате ошибки:
{Signature for this request is not valid}
Я использую node-binance-api для своего скрипта. Функция снятия подписи, определенная в этом файле: https://github.com/jaggedsoft/node-binance-api/blob/master/node-binance-api.js
const signedRequest = ( url, data = {}, callback, method = 'GET', noDataInSignature = false ) => {
if ( !Binance.options.APIKEY ) throw Error( 'apiRequest: Invalid API Key' );
if ( !Binance.options.APISECRET ) throw Error( 'signedRequest: Invalid API Secret' );
data.timestamp = new Date().getTime() + Binance.info.timeOffset;
if ( typeof data.recvWindow === 'undefined' ) data.recvWindow = Binance.options.recvWindow;
let query = method === 'POST' && noDataInSignature ? '' : makeQueryString( data );
let signature = crypto.createHmac( 'sha256', Binance.options.APISECRET ).update( query ).digest( 'hex' ); // set the HMAC hash header
if ( method === 'POST' ) {
let opt = reqObjPOST(
url + '?signature=' + signature,
data,
method,
Binance.options.APIKEY
);
proxyRequest( opt, callback );
} else {
let opt = reqObj(
url + '?' + query + '&signature=' + signature,
data,
method,
Binance.options.APIKEY
);
proxyRequest( opt, callback );
}
};
Здесь есть решение, которое похоже на работу некоторых людей: https://github.com/jaggedsoft/node-binance-api/issues/413 предлагает изменение Изменить метод подписи следующим образом:
if ( method === 'POST' ) {
let opt = reqObjPOST(
url,
data,
method,
Binance.options.APIKEY
);
opt.form.signature = signature;
proxyRequest( opt, callback );
}
К сожалению, у меня не получилось и даже провалил сделки. Я использую функцию вывода, как в примерах:
binance.withdraw("BTC", "1C5gqLRs96Xq4V2ZZAR1347yUCpHie7sa", 0.2)
Я тестировал все остальные вещи, такие как лимиты счета, настройки API, баланс монет и не менял код, но 4 дня бинанс go изменил коды для API, затем withdr aws начал выдавать ошибку. Разработчики binance предлагают изменить URL-адрес на sapi https://binance-docs.github.io/apidocs/spot/en/#withdraw -sapi , но это также привело к таким же сбоям:
signedRequest(sapi + 'v1/capital/withdraw/apply', params, callback, 'POST');
У меня нет проблем с представлением Trade, Orderbook и Balance с таким же подпись, только отзыв дает ошибку подписи.