R GDAX-API 删除请求

R GDAX-API Delete Request

我在 R 中处理 DELETE 请求时遇到问题。我已使用以下代码成功发出 GETPOST 请求。任何帮助/指点将不胜感激。

它需要来自 GDAX 的 api.keysecretpassphrase 才能工作。

这是我的函数:

library(RCurl)
library(jsonlite)
library(httr)
library(digest)

cancel_order <- function(api.key,
                         secret,
                         passphrase) {
  api.url <- "https://api.gdax.com"

  #get url extension----
  req.url <- "/orders/"

  #define method----
  method = "DELETE"

  url <- paste0(api.url, req.url)

  timestamp <-
    format(as.numeric(Sys.time()), digits = 13) # create nonce
  key <- base64Decode(secret, mode = "raw") # encode api secret

  #create final end point----
  what <- paste0(timestamp, method, req.url)

  #create encoded signature----
  sign <-
    base64Encode(hmac(key, what, algo = "sha256", raw = TRUE)) # hash

  #define headers----
  httpheader <- list(
    'CB-ACCESS-KEY' = api.key,
    'CB-ACCESS-SIGN' = sign,
    'CB-ACCESS-TIMESTAMP' = timestamp,
    'CB-ACCESS-PASSPHRASE' = passphrase,
    'Content-Type' = 'application/json'
  )
  ##------------------------------------------------
  response <- getURL(
    url = url,
    curl = getCurlHandle(useragent = "R"),
    httpheader = httpheader
  )
  print(rawToChar(response)) #rawToChar only on macOS and not on Win
}

我得到的错误是 "{\"message\":\"invalid signature\"}",即使相同的命令将编码和签名将适用于 GET & POST

参考: GDAX API DOCs

只是猜测,因为我不熟悉 API,但也许您错过了 'order-id' ...

看:https://docs.gdax.com/?javascript#cancel-an-order

好的。我接受了@mrflick 的建议并将我的连接指向 requestbin based on his feedback on a .

仔细检查后,我意识到我的请求由于某种原因被视为 POST 请求而不是 DELETE 请求。所以我决定用 RCurl 中的另一个更高级别的函数替换 getURL 函数以使其工作。

response <- httpDELETE(
  url = url,
  curl = getCurlHandle(useragent = "R"),
  httpheader = httpheader
)

其他一切都保持不变。显然签名从来没有问题。

我现在已将此功能添加到我的非官方包装器中 rgdax

编辑::
非官方的包装器现在是官方的并且在 CRAN 上。