Кракен приват API, BASH, curl и openssl - PullRequest
       15

Кракен приват API, BASH, curl и openssl

0 голосов
/ 22 сентября 2018

Я использую bash и curl для работы с Kraken API.

Когда я пытаюсь добавить AddOrder, я получаю ответ:

{"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

Код выглядит так (с окончательной командой openssl и curl на самомконец):

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 Ответ

0 голосов
/ 22 сентября 2018

Я разработал решение.Аргумент curl -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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...