Перейти к публикации

petun

Пользователи
  • Публикации

    7
  • Зарегистрирован

  • Посещение

Все публикации пользователя petun

  1. petun

    Api Как Использовать

    Решено. Разобрался. Спасибо за помощь. $ bash zadarma.sh /v1/info/balance/ #!/bin/bash # $1 это сюда запрос помещается /v1/info/balance/ declare -r key="мой ключ" declare -r secret="мой секрет" declare signature="" declare -r baseurl="https://api.zadarma.com" signature=`echo -n '' |openssl dgst -md5 | cut -d" " -f2` #echo "md5 = $signature" signature=`echo -n "$1$signature" | openssl dgst -sha1 -hmac "$secret" -hex | cut -d" " -f2` #echo "sha1 = $signature" signature=`echo -n "$signature" | openssl enc -base64 | cut -d" " -f2` #echo "base64 = $signature" #echo ""Authorization: $key:$signature"" "$baseurl""$1" curl -H "Authorization: $key:$signature" "$baseurl""$1" А вот в описании API на сайте https://zadarma.com/ru/support/api/ Не дурственно логику хеширования расписать. Пример на PHP - это хорошо. Но на PHP мир клином не сошёлся. Сиди тут и вычитывай, чего и как эта функция выделывает. Пример может по-шаговый привести по логике. типа. Ключ: 00332be6e9aae9ecad6d Секрет: 3ae4987babc9c8fbd808 1. Запрос без параметров /v1/info/balance/ 2. Значит md5 от пустоы. Оно всегда будет: d41d8cd98f00b204e9800998ecf8427e 3. Хэшируем в SHA1 в режиме вывода HEX в нижнем регистре, с использованием нашего секрета т.е. создаём хэш строки "/v1/info/balance/d41d8cd98f00b204e9800998ecf8427e" используя наш секрет 3ae4987babc9c8fbd808 и т.д.
  2. petun

    Api Как Использовать

    приводил ключи для примера. Как-то не хочется их выкладывать в общее обозрение. :) Напишите мне на мыло petunpetun0 at gmail.com Я Вам реальные пришлю.
  3. petun

    Api Как Использовать

    Linux или win. В win и curl.exe и openssl.exe - тоже есть. Просто xNIX нативнее. НЕ СКРИПТ, и тем более не lib или bin, а просто по-шагово. Как вверху писал, но чтобы работало. Если интересно мыло petunpetun0 AT gmail.com key: e13273e3af178fa6a0c4 secret: 4773b5d096c625a9b532 GET /v1/info/balance/ Далее по шагово, но чтобы оно заработало. У меня не работает md5 echo -n '' |openssl dgst -md5 d41d8cd98f00b204e9800998ecf8427e sha1 echo -n '/v1/info/balance/d41d8cd98f00b204e9800998ecf8427e4773b5d096c625a9b532' | openssl dgst -sha1 523f299bebf732104b8b6fe48aac78d1bacc8077 base64 echo -n '523f299bebf732104b8b6fe48aac78d1bacc8077' | openssl enc -base64 NTIzZjI5OWJlYmY3MzIxMDRiOGI2ZmU0OGFhYzc4ZDFiYWNjODA3Nw== curl -H "Authorization: e13273e3af178fa6a0c4:NTIzZjI5OWJlYmY3MzIxMDRiOGI2ZmU0OGFhYzc4ZDFiYWNjODA3Nw==" https://api.zadarma.com/v1/info/balance/
  4. petun

    Api Как Использовать

    Посмотрел чего выдаёт php hash_hmac('sha1', '/v1/info/balance/', md5(''), 'секретный код') Выдаёт sha1 в binary, сделал sha1 в бинари, результат тотже {"status":"error","message":"Not authorized"} Есть коммерческое предложение по этому вопросу. Так как я устал с этим API трахаться, то готов оплатить в частном порядке разумную сумму xNIX-ту за пошаговое решение этого примера на утилитах xNIX. Делов здесь на пять минут. Скрипт не нужен. Если это подходит, то могу дать своё мыло и реальную пару ключ-секрет. Деньги могу скинуть на номер телефона, карточку и т.д.
  5. petun

    Api Как Использовать

    ОК. СПС. Ещё денёк подожду и обращусь в суппорт. Беспокоить их не хотелось по такому вопросу.
  6. petun

    Api Как Использовать

    СПС. Это но это немного не то. Физически как делать, как кодить я понимаю. Я не понимаю что брать за параметры. Сам физ. поцесс.
  7. petun

    Api Как Использовать

    Как хэшировать - понятно, не понятно чего . Вот имеется задача посмотреть баланс. GET /v1/info/balance/ Базовый URL https://api.zadarma.com ключи для примера, не реальные. Key: e13343e3aр178fa6a0c4 Secret: 5063b5d096c625a9b532 далее по инструкции https://zadarma.com/ru/support/api/ " массив из передаваемых параметров (GET, POST, PUT, DELETE) сортируется по названию ключа по алфавиту;" в моем случае параметров нет, сортировать нечего и значит он пустой. Так? "из полученного массива формируется строка запроса (например, функция http_build_query в PHP), пример "from=DATEFROM&to=DATETO…"; значит и строка пустая. Так? "и далее - соединяется по формуле: строка = имя_метода + строка_запроса + md5( строка_запроса ), где "имя_метода" - строка запроса, начиная от домена (с указанием версии АПИ), до начала перечисления параметров, например - /v1/sip/" беру md5 от "пустоты", получаю d41d8cd98f00b204e9800998ecf8427e да? имя_метода="/v1/info/balance/" строка_запроса="" md5( строка_запроса ) d41d8cd98f00b204e9800998ecf8427e получаю строку /v1/info/balance/d41d8cd98f00b204e9800998ecf8427e "полученная строка хешируется по алгоритму sha1 с секретным ключом пользователя: хеш = hash( строка, секретный_ключ )" т.е. я хеширую своим секретным ключом 5063b5d096c625a9b532 строку /v1/info/balance/d41d8cd98f00b204e9800998ecf8427e да? echo -n '/v1/info/balance/d41d8cd98f00b204e9800998ecf8427e'|openssl dgst -sha1 -hmac "5063b5d096c625a9b532" получаю f0fbedf8ce31cd404054fbf0e950c9fe42e2a51a "и далее хеш кодируется в base64 подпись = base64_encode( хеш )" кодирую: echo -n 'f0fbedf8ce31cd404054fbf0e950c9fe42e2a51a' | base64 получаю: ZjBmYmVkZjhjZTMxY2Q0MDQwNTRmYmYwZTk1MGM5ZmU0MmUyYTUxYQ== "Каждый запрос, который нуждается в авторизации, сопровождается дополнительным заголовком, вида: "Authorization: ключ_пользователя: подпись" Ключи для авторизации необходимо получить в личном кабинете." Формирую запрос: curl -H "Authorization: e13273e3af178fa6a0c4 : ZjBmYmVkZjhjZTMxY2Q0MDQwNTRmYmYwZTk1MGM5ZmU0MmUyYTUxYQ==" https://api.zadarma.com/v1/info/balance/ и получаю ответ: {"status":"error","message":"Not authorized"} Чего не так? Может чего не то подставляю для хеширования в самом начале? Если кто поможет огромное СПС.
×
×
  • Создать...