Неверная контрольная подпись Python

Помогите пожалуйста разобраться. Недавно начал изучать 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) я выяснил, что проблема заключается в неверной контрольной подписи, но я уже всю голову сломал и не могу понять, где я допустил ошибку.


Ответы (2 шт):

Автор решения: D. Violet

Формирование подписи производится путем склеивания параметров через ":" и создания контрольной суммы MD5. Склеиваются параметры currency, amount, секретный ключ, merchant_id и pay_id.

и не понятно почему вы используете sha256

попробуйте так:

sign = hashlib.md5(b'currency:amount:secret_key:merchant_id:pay_id').encode()
print(sign.hexdigest())
→ Ссылка
Автор решения: MESQ

Решило проблему:

responce = requests.get(f"https://anypay.io/api/balance/{ANYPAY_API_ID()}", params={"sign":sign.hexdigest()})
→ Ссылка