Загрузка...

Тинькофф не видит пару токена+ключа хотя она валид

Тема в разделе Python создана пользователем детектив 8 июн 2025. 167 просмотров

  1. детектив
    детектив Автор темы 8 июн 2025 elvis has left the building 261 19 ноя 2019
    ку форумчане. подключаю тинько в тг боте, юзаю боевой терминал, оплата проходит, деньги списываются, но при ручной проверке статуса (/v2/GetState) API возвращает ошибку:
    ⁡{'Success': False, 'ErrorCode': '204', 'Message': 'Неверные параметры.', 'Details': 'Неверный токен. Проверьте пару TerminalKey/SecretKey.'}

    В Init всё отрабатывает корректно, вот структура запроса (тело запроса POST /v2/Init):
    JS
    {
    "TerminalKey": "ид постояного терминала без ошибок ввожу",
    "Amount": 100,
    "OrderId": "ec1c11****02e46",
    "Description": "Тестовая подписка",
    "Token": "тут сгенерил ключ по sha256",
    "DATA": {
    "Phone": "+7...",
    "UserId": "123456"
    },
    "Receipt": {
    "Email": "user123456@marinago.club",
    "Phone": "+7...",
    "Taxation": "usn_income",
    "Items": [
    {
    "Name": "Тестовая подписка",
    "Price": 100,
    "Quantity": 1,
    "Amount": 100,
    "Tax": "none"
    }
    ]
    }
    }
    в ответ получаю Success: true, валидный PaymentId, и ссылку на оплату. оплата проходит, деньги списываются.
    но при ручной проверке статуса оплаты:
    JS
    {
    "TerminalKey": "17*****298",
    "OrderId": "...",
    "PaymentId": "...",
    "Token": "<SHA256: terminalKey + OrderId + PaymentId + SecretKey>"
    }
    уже делал:
    - ключи и токен точно из боевого терминала
    - терминал НЕ ДЕМО
    - пэймент ид точно же тот, что возвращается из Init
    - порядок и формат токена делал по документации

    сталкивался ли кто-то с такой проблемой? может ли быть, что в настройках терминала не активирована проверка токенов / подписей?
    или мб нужна доп активация ?
     
  2. ФРУТС
    ФРУТС 9 июн 2025 <3 jenna ortega E> 373 7 фев 2023
    а теб енахуя это?
     
    1. детектив Автор темы
      ФРУТС, в бот платежку интегрирую по т-банку
  3. moodduckk
    moodduckk 9 июн 2025 back-end dev | rust lang enjoyer 334 1 мар 2018
    Скинь код для генерации токена. В примере ты не в том порядке конкатинируеш его части
    https://www.tbank.ru/kassa/dev/payments/#section/Token
    Тоесть нужно либо написать функцию для генерации токена, либо вручную в правильном порядке конкатинировать
    Я так понял, что SecretKey - пароль? Тогда <SHA256: OrderId + Password + PaymentId + TerminalKey>
     
    9 июн 2025 Изменено
    1. moodduckk
      Вот более менее окей фунция для подписи
      Python
      def sign_data(data: dict, password: str) -> dict:
      fields = list(data.items())
      fields.append(("Password", password))
      fields.sort(key=lambda x: x[0])

      values = "".join([str(x[1]) for x in fields])
      token = hashlib.sha256(bytes(values, encoding="utf-8"))

      data["Token"] = token.hexdigest()

      return data
      Взял тут
Загрузка...
Top