Ad Widget

Collapse

Получение данных в zabbix из ОФД Такском (такском-касса)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Pro100
    Junior Member
    • May 2020
    • 25

    #1

    Получение данных в zabbix из ОФД Такском (такском-касса)

    Нужна помощь в работе с API
    Есть настроенный Zabbix мониторим через сеть VPN компьютеры пользователей, сертификаты, доступность, службы и так далее, нужно из сервиса lk-cto.taxcom.ru получить данные об контрольно-кассовой техники есть мануал от разработчика https://lk-ofd.taxcom.ru/ApiHelp/, бери и делай, но как у нас нулевой уровень в этом деле, хотелось бы помощи, с чего начать и как действовать, ни чего подходящего для себя не нашел как сделать данное решение.. ПОМОГИТЕ..
  • Pro100
    Junior Member
    • May 2020
    • 25

    #2
    Установил curl на windows, начал экспериментировать с запросами.
    https://lk-ofd.taxcom.ru/ApiHelp/ - информация об индикации
    2. Базовые методы > 2.1. Аутентификация и авторизация
    2.1.2. Логин и пароль
    Делаю запрос

    curl https://api-lk-ofd.taxcom.ru/API/v2/Login --header "Content-Type: application/json"
    получаю ответ
    {"message":"The requested resource does not support http method 'GET'."}
    - - - - - - - - -
    HTTP-запрос:

    HTTP-Method: POST
    Адрес запроса (URI)
    https://<server>.taxcom.ru/API/v2/Login
    Заголовок запроса
    Integrator-ID ID интегратора
    Content-Type application/json
    Тело запроса
    Login_Request.jsonscheme (Приложение №1)
    В приложении 1
    {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "title": "Аутентификация и авторизация по логину и паролю",
    "description": "Аутентификация и авторизация по логину и паролю",
    "properties": {
    "sessionToken": {
    "type": "string",
    "title": "Маркер временного доступа"
    }
    },
    "required": [
    "sessionToken"
    ]
    }
    Вопрос как понять как протий индикацию по логину и паролю
    Куда что вставить чтобы получить результат?
    curl https://api-lk-ofd.taxcom.ru/API/v2/Login --header "Content-Type: application/json"

    Comment

    • Pro100
      Junior Member
      • May 2020
      • 25

      #3
      Почитав и посмотрев создаю строку
      curl -H "Accept: application/json" -X POST https://api-lk-ofd.taxcom.ru/core/connect/authorize -I
      Получаю ответ
      HTTP/1.1 411 Length Required
      Server: nginx/1.14.0
      Date: Sun, 15 Nov 2020 12:27:32 GMT
      Content-Type: text/html; charset=us-ascii
      Content-Length: 344
      Connection: keep-alive

      Не понимаю куда вставить и как строку индикации

      Comment

      • Pro100
        Junior Member
        • May 2020
        • 25

        #4
        Запрос
        curl -X GET -H "Authorization: TOKEN 0000000000000000000000" -H "Accept: application/json; indent=4" https://api-lk-ofd.taxcom.ru/core/connect/authorize
        Получаю ответ
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
        <title>404 - File or directory not found.</title>
        <style type="text/css">
        <!--
        body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
        fieldset{padding:0 15px 10px 15px;}
        h1{font-size:2.4em;margin:0;color:#FFF;}
        h2{font-size:1.7em;margin:0;color:#CC0000;}
        h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
        #header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
        background-color:#555555;}
        #content{margin:0 0 0 2%;position:relative;}
        .content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
        -->
        </style>
        </head>
        <body>
        <div id="header"><h1>Server Error</h1></div>
        <div id="content">
        <div class="content-container"><fieldset>
        <h2>404 - File or directory not found.</h2>
        <h3>The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.</h3>
        </fieldset></div>
        </div>
        </body>
        </html>

        Comment

        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #5
          Боюсь, что здесь тусуются люди, которые разбираются в системе Zabbix, в то время как Ваш вопрос относится исключительно к системе Такском-Касса. Какие там у них API, как с ними работать - это надо искать более подходящий по тематике форум.

          Из того, что я вижу, глянув мельком на их API по указанной Вами ссылочке, я понимаю, что при использовании метода Login нужно иметь:
          • имя и пароль, которые указываются в пересылаемом JSON-е;
          • некий "ID интегратора", для получения которого "необходимо обратиться с соответствующим запросом в техническую поддержку компании "Такском". Он у вас есть?
          • сам JSON с именем/паролем пересылать как тело запроса методом POST, а ID интегратора - в заголовке запроса.
          В ответ, если всё было сделано верно, вы должны получить маркер временного доступа, который будет указываться в последующих вызовах этой сессии.

          Таким образом, если Вы используете утилиту curl, то в скрипте на bash-е её вызов для первого шага будет выглядеть примерно так:
          Code:
          #полученный от техподдержки ID интегратора
          INTEGRATOR_ID='...'
          #формируем требуемый JSON
          JSON='{...}'
          #параметры [B]curl[/B], которые будем использовать для всех вызовов:
          #"--connect-timeout <seconds>" Maximum time in seconds that you allow the connection to the server to take.
          #"-k" (SSL) This option explicitly allows curl to perform "insecure" SSL connections and transfers.
          #"-f" Fail silently (no output at all) on server errors.
          #"--ipv4" Do not use IPv6.
          #"-s" Silent or quiet mode. Don't show progress meter or error messages.
          #"-S" When used with -s it makes curl show an error message if it fails.
          CURL_OPT="--connect-timeout 2 -k -f --ipv4 -s -S"
          #вызов curl с нужными опциями, результат сохраняем в переменно RESULT
          RESULT=$(curl $CURL_OPT --data-binary "$JSON" -H "Content-Type: application/json;charset=utf-8" \
            -H "Integrator-ID: $INTEGRATOR_ID" --url "https://api-lk-ofd.taxcom.ru/API/v2/Login")
          #сохраняем код завершения
          RC=$?
          #отладочный вывод
          echo "$RESULT"
          #дальше, если всё в порядке, то обрабатываем полученный JSON,
          #извлекая из него (например, с помощью утилиты jq) присланный
          #маркер временного доступа для использования в последующих вызовах
          if [ $RC = 0 ]; then
            TOKEN=$(jq '...' <<<"$RESULT")
          fi
          #дальнейшая обработка...
          Last edited by Kos; 17-11-2020, 11:17.

          Comment

          • Hamardaban
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • May 2019
            • 2713

            #6
            Коллега Kos совершенно правильно написал по сути вопроса.
            От себя добавлю что мне было бы интересно узнать о результатах Ваших изысканий т.к. тема офд касается многих.

            Comment

            • Pro100
              Junior Member
              • May 2020
              • 25

              #7
              Kos
              Большое спасибо, сейчас буду обработать Ваш ответ и сразу опишу результат..
              То что на других форумах, это да но на самом такскоме нет темы как начать и как обрабатывать запрос и ошибки, есть небольшие ошибки в самом api и его исправляют разработчики и в принцепе все..
              Спасибо, будем пребывать...

              Comment

              • Pro100
                Junior Member
                • May 2020
                • 25

                #8
                Сделал следующее
                RESULT=$(curl $CURL_OPT --data-binary "$JSON" -H "Content-Type: application/json;charset=utf-8" \
                -H "Integrator-ID: $INTEGRATOR_ID" --url "https://api-lk-ofd.taxcom.ru/core/connect/authorize")
                INTEGRATOR_ID - Свой токен полученный от ОФД

                Получил ответ
                % Total % Received % Xferd Average Speed Time Time Time Current
                Dload Upload Total Spent Left Speed
                100 1245 100 1245 0 0 1897 0 --:--:-- --:--:-- --:--:-- 1894

                Не до понимаю, ошибки нет дает ответ значит в правильном направлении?..



                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3404

                  #9
                  Sorry, при аутентификации по логину/паролю используется другой URL (/API/v2/Login, а не /core/connect/authorize).

                  При использовании опции "-s" curl, вроде, не должен выдавать прогресс-бар и статистику. У вас переменная CURL_OPT выставлена? В переменной JSON нужные данные тоже выставлены?

                  И самое главное: что потом видно-то в переменных RC и RESULT?

                  Comment

                  • Pro100
                    Junior Member
                    • May 2020
                    • 25

                    #10
                    Я так понимаю пошло..Integrator-ID не правильный, тех поддержка выдала мне токен, а не ID , запросил ID, ждем...
                    Запрос:
                    {"details":"Некорректное значение параметра Integrator-ID","apiErrorCode":2108,"commonDescription":"Оши бк а авторизации","httpErrorCode":401}

                    Жду данных от Такскома..

                    Comment

                    • Pro100
                      Junior Member
                      • May 2020
                      • 25

                      #11
                      Все же ID правильный запрос, что не так...

                      Comment

                      • Pro100
                        Junior Member
                        • May 2020
                        • 25

                        #12
                        Запрос
                        curl RESULT=$(curl $CURL_OPT --data-binary "$JSON" -H "Content-Type: application/json;charset=utf-8" \
                        -H "Integrator-ID: $55555555555555555555555" --url "https://api-lk-ofd.taxcom.ru/API/v2/Login")
                        echo "$RESULT"
                        Ответ
                        curl: (3) unmatched brace in URL position 8:
                        RESULT={"details":"Некорректное
                        ^
                        curl: (6) Could not resolve host: xn--80akafh1ac2f
                        curl: (6) Could not resolve host: xn--80aaat8apidr
                        curl: (3) URL using bad/illegal format or missing URL
                        curl: (3) unmatched close brace/bracket in URL position 44:
                        авторизации","httpErrorCode":401}

                        - - - - -
                        Запрос
                        RESULT=$(curl $CURL_OPT --data-binary "$JSON" -H "Content-Type: application/json;charset=utf-8" \
                        -H "Integrator-ID: $55555555555555555555555" --url "https://api-lk-ofd.taxcom.ru/API/v2/Login")
                        echo "$RESULT"
                        Ответ
                        {"details":"Некорректное значение параметра Integrator-ID","apiErrorCode":2108,"commonDescription":"Оши бк а авторизации","httpErrorCode":401}

                        - - -
                        Integrator-ID - Правильный дан Такскомом..
                        - - - - -


                        Попутно задал вопрос такскому вообще как выглядит запросы.., ждем..
                        Если есть еще варианты буду признателен..





                        Comment

                        • Kos
                          Senior Member
                          Zabbix Certified SpecialistZabbix Certified Professional
                          • Aug 2015
                          • 3404

                          #13
                          Originally posted by Pro100
                          Запрос
                          RESULT=$(curl $CURL_OPT --data-binary "$JSON" -H "Content-Type: application/json;charset=utf-8" \
                          -H "Integrator-ID: $55555555555555555555555" --url "https://api-lk-ofd.taxcom.ru/API/v2/Login")
                          echo "$RESULT"
                          Ответ
                          {"details":"Некорректное значение параметра Integrator-ID","apiErrorCode":2108,"commonDescription":"Оши бк а авторизации","httpErrorCode":401}

                          - - -
                          Integrator-ID - Правильный дан Такскомом..
                          - - - - -


                          Попутно задал вопрос такскому вообще как выглядит запросы.., ждем..
                          Если есть еще варианты буду признателен..
                          У вас значение Integrator-ID начинается со знака доллара? Повторите запрос, обрамив весь параметр не двойными кавычками, а одиночными апострофами, а то шелл считает его именем переменной:

                          неправильно:
                          Code:
                          -H "Integrator-ID: $55555555555555555555555"
                          правильно:
                          Code:
                          -H 'Integrator-ID: $55555555555555555555555'

                          Comment

                          • Pro100
                            Junior Member
                            • May 2020
                            • 25

                            #14
                            Почему то результат не изменился, сейчас просил проверить работоспособность такскома правильный ли ID прислали скриншот где авторизация проходит но в их программе, говорят что у них все в порядке..

                            Comment

                            • Pro100
                              Junior Member
                              • May 2020
                              • 25

                              #15
                              Купил обработку у 1с-ников
                              Взял несколько клиентов, выбрал работающих, все загружается в 1с, почитал на форумах, говорят нужен еще договор обязательно иначе не грузит, проверил в 1с действительно не грузит..
                              В запрос делаю еще параметры
                              RESULT=$(curl $CURL_OPT --data-binary "$JSON" -H "Content-Type: application/json;charset=utf-8" \
                              -H 'Integrator-ID: $555555555555555555555555', 'login: [email protected]', 'password: $777777777', 'agreementNumber: $5555555' --url "https://api-lk-ofd.taxcom.ru/API/v2/Login")
                              echo "$RESULT"
                              по итогу
                              {"details":"Некорректное значение параметра Integrator-ID","apiErrorCode":2108,"commonDescription":"Оши бк а авторизации","httpErrorCode":401}

                              Может какие то есть другие варианты запроса, через 1с все работает.. как еще можно сделать интеграцию.... ПОМОГИТЕ....

                              Comment

                              Working...