我保证我已经尽了最大努力,但我就是没能让它发挥作用
以下是API网站上的python代码: https://exchange-docs.crypto.com/spot/index.html?python#digital-signature
import hmac
import hashlib
import json
import requests
import time
API_KEY = "API_KEY"
SECRET_KEY = "SECRET_KEY"
req = {
"id": 11,
"method": "private/get-order-detail",
"api_key": API_KEY,
"params": {
"order_id": "337843775021233500",
},
"nonce": int(time.time() * 1000)
};
# First ensure the params are alphabetically sorted by key
paramString = ""
if "params" in req:
for key in sorted(req['params']):
paramString += key
paramString += str(req['params'][key])
sigPayload = req['method'] + str(req['id']) + req['api_key'] + paramString + str(req['nonce'])
req['sig'] = hmac.new(
bytes(str(SECRET_KEY), 'utf-8'),
msg=bytes(sigPayload, 'utf-8'),
digestmod=hashlib.sha256
).hexdigest()
我不确定我是否有任何进展,但以下是我得到的但不起作用的东西——不幸的是,我一辈子都不能说出我错了什么,因为我只收到了一条一般性的错误消息。例如,我可能没有按照他们想要的方式格式化UNIX时间。。任何想法,请帮助
library(httr)
library(digest)
API_KEY <- "FOO"
SECRET_KEY <- "BAR"
base <- "https://api.crypto.com/v2/"
API.Balance <- function() {
method <- "private/get-account-summary"
hash<-paste0(method,11,API_KEY,"",ceiling(as.numeric(Sys.time())))
print(hash)
hash<-hmac(SECRET_KEY,hash,algo="sha256")
print(hash)
call1 <- paste0(base,method,"?api_key=",API_KEY,"&sig=",hash)
print(call1)
get.req <- GET(call1)
get.req.txt <- content(get.req, "text",encoding = "UTF-8")
return(fromJSON(get.req.txt, flatten = TRUE))
}
API.Balance()
这将返回:
[1] "private/get-account-summary11FOO5"
[1] "ed19ac611d5342f2cbd93a52c70ce884bbcdb9a4062572b013a494fd2c50fd03"
[1] "https://api.crypto.com/v2/private/get-account-summary?api_key=FOO&sig=ed19ac611d5342f2cbd93a52c70ce884bbcdb9a4062572b013a494fd2c50fd03"
$code
[1] "100001"
$msg
[1] "SYS_ERROR"
所以我给了它几个小时,但我只是挠头。我知道我错过了一些简单的东西。有人能帮我把Python方法翻译成R吗?多谢各位
好吧,我已经找到了答案,为了人类的利益,我想我会发布我的解决方案!完成排序参数
我使用的是GET而不是POST,我完全忘记了在计算“req”对象(以及其他一些小事情)之后将散列重新注入到“req”对象中。不管怎样,几个小时撕我的头发,所以你不必,你得到这个:
相关问题 更多 >
编程相关推荐