Перейти к содержимому


Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 19

#1 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 24 Июль 2016 - 19:37

Как хэшировать - понятно, не понятно чего :(.
 
Вот имеется задача посмотреть баланс.
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....1/info/balance/
 
и получаю ответ:
{"status":"error","message":"Not authorized"}
 
Чего не так? Может чего не то подставляю для хеширования в самом начале?
Если кто поможет огромное СПС.
 


#2 Igor

Igor

    Продвинутый участник

  • Главные администраторы
  • 4 894 сообщений

Отправлено 24 Июль 2016 - 23:22

К сожалению я не разработчик, но быть может вам поможет библиотека на PHP?

 

https://github.com/zadarma/user-api-v1



#3 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 25 Июль 2016 - 07:41

СПС.

Это но это немного не то.

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



#4 Igor

Igor

    Продвинутый участник

  • Главные администраторы
  • 4 894 сообщений

Отправлено 25 Июль 2016 - 23:09

Тогда напишите пожалуйста заявку в поддержку (именно заявку) и вам ответят разработчики.



#5 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 26 Июль 2016 - 14:04

ОК. СПС.

Ещё денёк подожду и обращусь в суппорт.

Беспокоить их не хотелось по такому вопросу.



#6 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 29 Июль 2016 - 11:01

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


#7 pbx.gal.cv.ua

pbx.gal.cv.ua

    Продвинутый участник

  • Пользователи
  • 183 сообщений
  • Пол:Мужчина

Отправлено 29 Июль 2016 - 12:58

Может, вам подойдет эзешник под виндовс? Тогда бесплатно, ссылка вот.

Если на коммерческой основе, могу и под другую ос сваять.



#8 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 30 Июль 2016 - 18:39

Может, вам подойдет эзешник под виндовс? Тогда бесплатно, ссылка вот.

Если на коммерческой основе, могу и под другую ос сваять

 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....1/info/balance/
 

Сообщение отредактировал petun: 30 Июль 2016 - 18:55


#9 pbx.gal.cv.ua

pbx.gal.cv.ua

    Продвинутый участник

  • Пользователи
  • 183 сообщений
  • Пол:Мужчина

Отправлено 30 Июль 2016 - 19:18

У меня с вашими кредитами тоже, not authorized. Может, ключ с секретом местами попутали?



#10 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 30 Июль 2016 - 20:14

У меня с вашими кредитами тоже, not authorized. Может, ключ с секретом местами попутали?

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

Я Вам реальные пришлю.



#11 Igor

Igor

    Продвинутый участник

  • Главные администраторы
  • 4 894 сообщений

Отправлено 31 Июль 2016 - 00:07

 

Есть коммерческое предложение по этому вопросу.
Так как я устал с этим API трахаться, то готов оплатить в частном порядке разумную сумму

 

Честно говоря не понимаю, зачем сюда повторно писать и предлагать еще деньги? Создать заявку в поддержку я так понимаю религия не позволяет? :)

Да, разработчиков мы редко грузим вопросами поддержки, но в данном случае кроме разработчика вам никто и не поможет.



#12 petun

petun

    Новичок

  • Пользователи
  • 7 сообщений

Отправлено 31 Июль 2016 - 00:23

Решено. Разобрался.  Спасибо за помощь.

 

$ 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
и т.д. 


#13 Igor

Igor

    Продвинутый участник

  • Главные администраторы
  • 4 894 сообщений

Отправлено 31 Июль 2016 - 14:05

Спасибо за описание и пожелание, передам.



#14 Clevelus

Clevelus

    Продвинутый участник

  • Пользователи
  • 1 044 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Программирование, администрирование, финансы. Подробнее на clevelus.ru

Отправлено 22 Октябрь 2016 - 09:55

У вас везде в примерах (в личном кабинете) пример кода:

<?php if (isset($_GET['zd_echo'])) exit($_GET['zd_echo']); ?> 

Но данный код уязвим к атакам XSS.

 

Проверьте, и замените код в примерах, например на этот.

<?php if (isset($_GET['zd_echo'])) exit(htmlspecialchars($_GET['zd_echo'])); ?> 

Хотя, еще лучше использовать тернарный оператор.

 

ЗЫ: не люблю PHP, так этот код по умолчанию на C# не будет уязвим.



#15 SergAxt

SergAxt

    Бывалый

  • Пользователи
  • 28 сообщений

Отправлено 01 Февраль 2018 - 00:51

Может, вам подойдет эзешник под виндовс? Тогда бесплатно, ссылка вот.

Если на коммерческой основе, могу и под другую ос сваять.

Привет!

Прикольный экзешник.

Было бы еще прикольнее передавать key и secret в коммандной строке. А то  аккаунтов много, на всех папок не насоздаешься....



#16 Igor

Igor

    Продвинутый участник

  • Главные администраторы
  • 4 894 сообщений

Отправлено 10 Февраль 2018 - 18:27

А зачем создавать много аккаунтов?



#17 pbx.gal.cv.ua

pbx.gal.cv.ua

    Продвинутый участник

  • Пользователи
  • 183 сообщений
  • Пол:Мужчина

Отправлено 11 Февраль 2018 - 13:21

Было бы еще прикольнее передавать key и secret в коммандной строке.

 
Такая возможность предусмотрена, любые параметры можно задавать и в командной строке, и в файле конфигурации.
 

А зачем создавать много аккаунтов?


Мультивалютные прайсы.
Или, разные организации на обслуживании со своими балансами.

#18 SergAxt

SergAxt

    Бывалый

  • Пользователи
  • 28 сообщений

Отправлено 13 Февраль 2018 - 13:27

А зачем создавать много аккаунтов?

Разные прайсы для разных направлений звонков. По России мне выгодно звонить с безлимита, по Казахстану, Армении, и пр. -  со стандарта с посекундной тарификацией... Мы с вами уже на эту тему лет пять назад общались...

И, насколько помню - вы сказали что невозможно обьединить внешние номера с других аккаунтов - в один.


Сообщение отредактировал SergAxt: 13 Февраль 2018 - 13:27


#19 Igor

Igor

    Продвинутый участник

  • Главные администраторы
  • 4 894 сообщений

Отправлено 13 Февраль 2018 - 14:47

Да я и считаю что в сумме использовать несколько аккаунтов для разных прайсов не очень выгодно :) Но тут уж только вам решать.

 

 



#20 ms2002

ms2002

    Новичок

  • Пользователи
  • 5 сообщений

Отправлено 21 Февраль 2019 - 05:40

Тогда напишите пожалуйста заявку в поддержку (именно заявку) и вам ответят разработчики.

Ничего вразумительного они не отвечают






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей