Загрузка...

Tinkoff does not see a couple of token+key, although she is valid

Thread in Python created by детектив Jun 8, 2025. 170 views

  1. детектив
    детектив Topic starter Jun 8, 2025 elvis has left the building 261 Nov 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. ФРУТС
    ФРУТС Jun 9, 2025 <3 jenna ortega E> 474 Feb 7, 2023
    а теб енахуя это?
     
    1. детектив Topic starter
      ФРУТС, в бот платежку интегрирую по т-банку
  3. moodduckk
    moodduckk Jun 9, 2025 back-end dev | rust lang enjoyer 334 Mar 1, 2018
    Скинь код для генерации токена. В примере ты не в том порядке конкатинируеш его части
    https://www.tbank.ru/kassa/dev/payments/#section/Token
    Тоесть нужно либо написать функцию для генерации токена, либо вручную в правильном порядке конкатинировать
    Я так понял, что SecretKey - пароль? Тогда <SHA256: OrderId + Password + PaymentId + TerminalKey>
     
    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
      Взял тут
Loading...
Top