{此请求的签名无效}Binance提款错误



虽然github和这里也有类似的错误,但它们更老,我在脚本中通过API从二进制货币中提取硬币时遇到签名问题。错误导致的消息返回:

{Signature for this request is not valid}

我在脚本中使用节点二进制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天前binance更改了api的代码,然后提款开始出错。binance的开发者提出将url更改为sapihttps://binance-docs.github.io/apidocs/spot/en/#withdraw-sapi,但它也造成了同样的失败:

signedRequest(sapi + 'v1/capital/withdraw/apply', params, callback, 'POST');

我对相同签名的交易、订单和余额视图没有任何问题,只有提款会导致签名错误。

我注意到我的节点二进制api没有在上一个版本上运行,所以我更新并进行了修订,如下所示https://github.com/jaggedsoft/node-binance-api/issues/413然后使用原始

最新更新