Загрузка...

Script
How to connect a bot to Rukassa in tg?

Thread in Programming created by LilPeep Today at 2:03 PM. 49 views

  1. LilPeep
    LilPeep Topic starter Today at 2:03 PM Hate me
    Делал все по документации, пишет:

    Попробуй позже или напиши в поддержку.
    error shop_id or token

    Писал в поддержку, shop_id у них нельзя получить, переписал код чисто по токену, так же, дать код для примера не могу, дайте пример как вязали вы его к себе, если что, верификация есть на мерчанте
     
    1. LilPeep Topic starter
    2. ChatGPT
      avatarLilPeep , ошибка error shop_id or token означает, что Rukassa на этапе запроса не принимает один из обязательных реквизитов: либо shop_id, либо token, либо они передаются не в том формате / не туда.

      Если у них в текущей версии мерчанта реально всё завязано только на токен, то обычно проблема одна из этих:


      токен передаётся с лишними пробелами/переносом строки
      токен берётся не от того магазина
      ты отправляешь поле не с тем названием
      запрос уходит не в тот метод API
      в заголовках или body формат не тот, который ждёт API


      Что бы я проверил первым делом:


      trim() токена — очень частая проблема
      точное название полей в запросе из актуальной доки
      тип запроса: GET/POST
      куда именно кладётся токен: в body, headers или query
      не тестовый ли у тебя токен для другого окружения


      Примерно логика привязки к Telegram-боту обычно такая:


      Пользователь нажал "Оплатить"
      Бот создаёт счёт через API Rukassa
      Rukassa возвращает ссылку на оплату
      Бот отправляет пользователю эту ссылку
      После оплаты тебе приходит callback/webhook или ты сам проверяешь статус платежа
      Бот выдаёт товар/подтверждение


      Пример общего шаблона на Python, не как точная копия их API, а как схема:

      Python

      import requests

      TOKEN = "ТВОЙ_ТОКЕН"

      def create_invoice(amount, order_id):
      url = "https://...endpoint..." # точный URL из доки
      payload = {
      "amount": amount,
      "order_id": order_id,
      }
      headers = {
      "Authorization": f"Bearer {TOKEN}"
      }

      r = requests.post(url, json=payload, headers=headers, timeout=15)
      print(r.status_code)
      print(r.text)
      return r.json()
      Если же у них авторизация не через header, а через body, то уже так:

      Python

      import requests

      TOKEN = "ТВОЙ_ТОКЕН"

      def create_invoice(amount, order_id):
      url = "https://...endpoint..."
      payload = {
      "token": TOKEN,
      "amount": amount,
      "order_id": order_id
      }

      r = requests.post(url, json=payload, timeout=15)
      print(r.status_code)
      print(r.text)
      return r.json()
      А если они всё же требуют shop_id + token, то без shop_id запрос просто не пройдет, даже если саппорт пишет странно. Тогда запрос примерно такого вида:

      Python

      import requests

      SHOP_ID = "12345"
      TOKEN = "TOKEN"

      def create_invoice(amount, order_id):
      url = "https://...endpoint..."
      payload = {
      "shop_id": SHOP_ID,
      "token": TOKEN,
      "amount": amount,
      "order_id": order_id
      }

      r = requests.post(url, json=payload, timeout=15)
      print(r.status_code)
      print(r.text)
      return r.json()
      Самое важное: раз у тебя ответ сервера именно shop_id or token, значит проблема ещё до логики оплаты, то есть не в Telegram-боте как таковом, а в авторизации запроса к Rukassa.

      Чтобы быстро локализовать:

      сделай один минимальный запрос к API вообще вне бота
      через requests или Postman
      передай только обязательные поля из доки
      выведи response.text


      Если даже в Postman та же ошибка — значит проблема точно в реквизитах или в документации/актуальности метода.

      Если хочешь, я могу тебе собрать готовый шаблон именно для Telegram-бота на aiogram или pyTelegramBotAPI, где будет:

      кнопка оплаты
      создание счёта
      проверка оплаты
      выдача ответа пользователю


      И ещё лучше: скинь без секретов:

      язык, на котором пишешь
      какую библиотеку бота использу
  2. ilyxa05
    ilyxa05 Today at 2:50 PM
    Temporary file hosting
    1,200 Jul 17, 2022
    так у них есть же апи доки, чекни
     
    1. LilPeep Topic starter
      avatarilyxa05, никто не знает где брать shop_id
Loading...