2

我可以获得帐户详细信息,因此我的身份验证显示正确,但在尝试修改该代码以创建订单时,它返回代码 401“msg”:“Invalid KC-API-SIGN”。修改涉及添加方法和有效负载并将端点(/api/vi/accounts)更改为端点2(/api/v1/orders)

function kucoinTest5()
{

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("xxxxx");
  var key = sheet.getRange("xx").getValue()
  var secret = sheet.getRange("xx").getValue();
  var passphrase = sheet.getRange("xx").getValue();
    
  var host = 'https://openapi-sandbox.kucoin.com';
  //var endpoint ='/api/v1/accounts';
  var endpoint2 ='/api/v1/orders';

  var timestamp = ''+ new Date().getTime();
  var strForSign = timestamp + 'GET' + endpoint2;

  var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, strForSign, secret);
  var encodedPass = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, passphrase, secret);

  var url= host + endpoint2
  var requestOptions = {

  'method': "POST",
  
  'headers': {
      'KC-API-KEY': key,
      'KC-API-TIMESTAMP': timestamp,
      'KC-API-SIGN': Utilities.base64Encode(signature),
      'KC-API-KEY-VERSION': '2',
      'KC-API-PASSPHRASE': Utilities.base64Encode(encodedPass),   
    },

  'payload': {
    'clientOid': 'test1',
    'side': 'buy',
    'symbol': 'BTC-USDT',
    'type': 'market',
    'tradeType': 'TRADE',
    'funds': 100
  },    
  

  muteHTTPExceptions: true,

};

var httpRequest= UrlFetchApp.fetch(url, requestOptions);
//var getContext= httpRequest.getContentText();
Logger.log(httpRequest);
}
4

1 回答 1

2

解决上述问题的是在 KuCoin 上发布购买订单的代码:

  function kuCoinTest5()
  {

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("xxxx");
  var key = sheet.getRange("xx").getValue()
  var secret = sheet.getRange("xx").getValue();
  var passphrase = sheet.getRange("xx").getValue();

  var payload = {
    'clientOid':"UUID",
    'side':"buy",
    'symbol':"BTC-USDT",
    'type':"market",
    'tradeType':"TRADE",
    'funds':"100"
  };

  var data = JSON.stringify(payload);
 //Logger.log(data);

  var host = 'https://openapi-sandbox.kucoin.com';

  var timeStamp = ''+ new Date().getTime();
  //var nowStr = "" + nowDate;

  var endpoint ='/api/v1/accounts';
  var endpoint2 ='/api/v1/orders';

  var strForSign = timeStamp + "POST" + endpoint2 + data;
  //Logger.log(strForSign);


  var signature = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, strForSign, secret);
  var encodedPass = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_256, passphrase, secret);

  var url= host + endpoint2;
 //Logger.log(url);  


var options = {
"method":"POST",
  
'headers' : {
'KC-API-KEY': key,
'KC-API-TIMESTAMP': timeStamp,
'KC-API-SIGN': Utilities.base64Encode(signature),
'KC-API-KEY-VERSION': '2',
'KC-API-PASSPHRASE': Utilities.base64Encode(encodedPass)

},

"contentType":"application/json",
"payload":data,

//'payload' : {'clientOid':"45234524625",
    //'side':"buy",
    //'symbol':"BTC-USDT",
    //'type':"market",
    //'tradeType':"TRADE",
    //'funds':"100"},


"muteHttpExceptions":true,
}


 var result = UrlFetchApp.getRequest(url, options);
        Logger.log(result) // a better way to debug
        var result = UrlFetchApp.fetch(url, options); // works perfectly in my case
        Logger.log(result)



}
于 2021-06-14T13:45:39.973 回答