@Martin_Shelby

Как правильно сделать контрольную подпись?

Помогите пожалуйста разобраться. Недавно начал изучать API anypay.io и встрял на самом старте:) При воспроизведении кода:
import requests
import hashlib
from data import ANYPAY_API_ID, ANYPAY_API_KEY
import json

sign = hashlib.sha256(f'balance{ANYPAY_API_ID()}{ANYPAY_API_KEY()}'.encode())
responce = requests.get(f"https://anypay.io/api/balance/{ANYPAY_API_ID()}", params=str(sign))
print(responce.json())

я получаю ошибку 102:
{'error': {'code': '102', 'message': 'Invalid sign'}}

Исходя из документации(https://anypay.io/doc/api/errors) я выяснил, что проблема заключается в неверной контрольной подписи, но я уже всю голову сломал и не могу понять, где я допустил ошибку.
  • Вопрос задан
  • 547 просмотров
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Вы смотрели в консоли, что выведет str(hashlib.sha256(...)) ?
А выведет что-то типа: '<sha256 HASH object @ 0x6ffffebcc88>'
Как выше написали надо sign.digest() или sign.hexdigest(), смотря в каком виде апи хочет.

Ну и вряд ли голая подпись суется в POST, судя по доке, нужно что-то типа:
requests.get(..., params={"sign":sign.hexdigest()})


А может, там в json надо передавать параметры.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы