Tinkoff Kassa API python
хотел бы создать интеграцию с Tinkoff Kassa API, но не сильно получается - выдает 400 ошибку. Хотел бы понять, в чем проблема
Ссылка на документацию - https://www.tinkoff.ru/kassa/develop/api/payments/init-description/
Код, который я пытался использовать:
import requests
headers = {'content-type': 'application/json', 'Accept-Encoding': 'gzip, deflate, br', 'host': 'securepay.tinkoff.ru', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0}', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection': 'keep-alive'}
api_request = requests.post('https://securepay.tinkoff.ru/v2/Init', headers=headers, data={'TerminalKey': 'TerminalKey(убрал, но он есть)', 'Amount': 100, 'OrderId': 0})
Ответы (2 шт):
Автор решения: Fedos
→ Ссылка
В ваших параметрах не хватает поля "token". Подбронее про процедуру получения токена => тык
Для Python я реализовал следующий алгоритм получения токена:
r = {
"TerminalKey": terminalkey,
"Amount": 1000,
"OrderId": "1",
"Password": password
}
t = []
for key, value in r.items():
t.append({key: value})
t = sorted(t, key=lambda x: list(x.keys())[0])
t = "".join(str(value) for item in t for value in item.values())
sha256 = hashlib.sha256()
sha256.update(t.encode('utf-8'))
t = sha256.hexdigest()
r["Token"] = t
Автор решения: Pybyte
→ Ссылка
Необходимо добавить поле 'Token'
>> Пример работы с t-kassa на python здесь
Вот общее решение для нахождение токена:
from hashlib import sha256
def generate_token(
payload: dict,
password: str
) -> str:
token_data = {**payload, "Password": password}
token_str = ''.join(
[str(token_data[key]) for key in sorted(token_data.keys())
if not isinstance(token_data[key], dict)]
)
return sha256(token_str.encode("utf-8")).hexdigest()