https://www.tinkoff.ru/kassa/dev/payments/#tag/Sta...
Видимо таки какие-то параметры не те указываешь.
Вот, как на самом деле формируется токен:
https://www.tinkoff.ru/kassa/dev/payments/#section...
Перед выполнением запроса MAPI проверяет, можно ли доверять его инициатору. Для этого сервер проверяет подпись запроса. В MAPI используется механизм подписи с помощью токена. Мерчант должен добавлять токен с каждому запросу, где это требуется.
Токен - это не просто конкатенация. Это конкатенация + хэширование
Она направила на документацию и на этот сайт https://tokentcs.web.app/
Этот сайт как раз демонстрирует, как происходит генерация токена исходя из пароля и параметров запроса
Вот прям пошаговый алгоритм:
1. Собрать массив передаваемых данных в виде пар Ключ-Значения. В массив нужно добавить только параметры корневого объекта. Вложенные объекты и массивы не участвуют в расчете токена.
В нашем случае это TerminalKey и PaymentId
2. Добавить в массив пару {Password, Значение пароля}. Пароль можно найти в личном кабинете Мерчанта
3. Отсортировать массив по алфавиту по ключу
У нас получается Password, PaymentId, TerminalKey
4. Конкатенировать только значения пар в одну строку
У нас получается
Password + PaymentID + TerminalKey
ВАЖНО! payment_id нужно брать именно такой, какой тебе пришёл из API. Лишние или недостающие нули - всё сразу пойдёт по сам-знаешь-какому месту.
5.
Применить к строке хеш-функцию SHA-256
В питоне для этого можно использовать
hashlib
Я хз каким образом без этого у
belkinark заработало. Мб он что-то напутал.
6. Добавить получившийся результат в значение параметра Token в тело запроса и отправить запрос