代码之家  ›  专栏  ›  技术社区  ›  Matt

kraken私有API BASH、curl和openssl

  •  0
  • Matt  · 技术社区  · 7 年前

    当我尝试添加订单时,得到的答复是:

    {"error":["EGeneral:Invalid arguments"]}
    

    当我使用相同的代码来寻找平衡点时,我不会出错。

    我使用的URL如下所示: https://api.kraken.com/0/private/AddOrder?pair=XXBTZUSD&type=buy&ordertype=limit&price=6000&volume=1&userref=1537588642&validate=1

    FUNC="AddOrder"
    FN="/tmp/kraken$FUNC.json"
    
    # URL
    PRICE=$1
    VOL=$2
    ORDERTYPE=limit
    ID=`date +%s`
    URLPATH="/0/private/$FUNC"
    URLPATH="$URLPATH?pair=XXBTZUSD&type=buy&ordertype=$ORDERTYPE&price=$PRICE&volume=$VOL&userref=$ID&validate=1"
    echo $URLPATH
    curlPost $URLPATH $FUNC $FN
    
    curlPost(){
      # API Key:
      APIKEY=`cat creds.key`
      # Private Key:
      PRIVATEKEY=`cat creds.private`
    
      URLHOST="https://api.kraken.com"
      NONCE=$(date +%s%N)
      echo ${1}
      echo -n "${1}" > /tmp/kraken.$2.bin
      echo -n "${NONCE}nonce=${NONCE}" | openssl sha256 -binary >> /tmp/kraken.$2.bin
    
      PRIVATEKEYHEX=$(echo -n "${PRIVATEKEY}" | base64 -d | hexdump -v -e '/1 "%02X"');
    
       cat /tmp/kraken.$2.bin | openssl sha512 -binary -mac HMAC -macopt hexkey:${PRIVATEKEYHEX} > sign.$2.bin
      APISIGN=$(cat sign.$2.bin | base64 -w 0)
      curl -X POST -H "Accept: application/json" -H "API-Key: ${APIKEY}" -H "API-Sign: ${APISIGN}" -d "nonce=$NONCE" ${URLHOST}${URLPATH}  > $3
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Matt    7 年前

    我已经想出了解决办法。curl argumnet-d表示数据,如下所示:

    URLPATH="/0/private/$FUNC"
    DATA="pair=XXBTZUSD&type=buy&ordertype=$ORDERTYPE&price=$PRICE&volume=$VOL&userref=$ID&validate=1"
    
      if [ -z "$DATA" ]; then
        curl -X POST -H "Accept: application/json" -H "API-Key: ${APIKEY}" -H "API-Sign: ${APISIGN}" -d "nonce=$NONCE" "${URLHOST}${URLPATH}"
      else
        curl -d ${DATA} -X POST -H "Accept: application/json" -H "API-Key: ${APIKEY}" -H "API-Sign: ${APISIGN}" -d "nonce=$NONCE" "${URLHOST}${URLPATH}"
      fi