Подписанный Allcoin POST запрос не удался - PullRequest
0 голосов
/ 24 апреля 2018

API, который я использую, требует шифрования MD5 для работы с запросами POST. Я пытаюсь сделать запрос userBalance к API, используя документацию https://www.allcoin.ca/api_market/market Но каждый раз он возвращает мне {'code': 1, 'msg': '签名 校验 失败'} (что означает проверка подписи не удалась). API запрашивает только 2 параметра: api_key и sign. Я тщательно следую указаниям документации, но API все еще отклоняет POST. Любые предложения, почему он не проходит проверку подписи? Я что-то упустил?

import hashlib
import keys
import requests

KEY = keys.allcoin["key"]
API_SECRET = keys.allcoin["secret"]

msg = "api_key='{}&secret_key={}".format(KEY, API_SECRET)
signature = hashlib.md5(msg.encode("utf-8")).hexdigest()

parameters = {
    "api_key": KEY,
    "sign": signature.upper(),
}

params = "&".join("{}={}".format(a, b) for a, b in parameters.items())
url = "http://www.allcoin.ca/Api_User/userBalance"
r = requests.post(
    headers={
        "Content-Type": "application/x-www-form-urlencoded",
        'user-agent': 'my-app/0.0.1'
    },
    url=url,
    params=parameters
)
print(r.json())

1 Ответ

0 голосов
/ 25 апреля 2018

Я думаю, вы хотите изменить params=parameters на params=params в вашем requests.post().

...