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

Aladex

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

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

  • Посещение

Репутация

0 Обычный

О Aladex

  • Звание
    Новичок
  1. Aladex

    Подскажите по работе Api

    Спасибо!UPD. Да, это работает. Я в программировании вообще не в зуб ногой ) А про пропущенный знак вообще бы не догадался.
  2. Aladex

    Подскажите по работе Api

    Судя по всему, мне на php проверять не придется. За меня вот уже проверили
  3. Aladex

    Подскажите по работе Api

    Честно говоря, я именно это и подумал. Странно только, что ответ приходит user_secret = '321321321321' url = 'https linenums:0'>import urllibimport base64import hmacimport hashlibimport requestsuser_key = '123123123123'user_secret = '321321321321'url = 'https://api.zadarma.com/v1/request/callback/'method = '/v1/request/callback/'params = {'from': '155494', 'to': '79658700517'}sorted_params = {}for i in sorted(params): sorted_params = paramsdef ksort(params): return [(k,params[k]) for k in sorted(params.keys())]ksort_params = ksort(params)params_str = urllib.urlencode(ksort_params)md5_sum = hashlib.md5()md5_sum.update(params_str)full_method = method + url + md5_sum.hexdigest()sign = base64.b64encode(hmac.new(user_secret,full_method,hashlib.sha1).hexdigest())header = user_key + ':' + signheaders = {'Authorization':header}url = url + params_str# ************* SEND THE REQUEST *************print '\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++'print 'Request URL = ' + urlr = requests.post(url, headers=headers)print '\nRESPONSE++++++++++++++++++++++++++++++++++++'print 'Response code: %d\n' % r.status_codeprint r.textВыдает ту же 401-ю. Вот что собралось: Строка после сортировки: from=155494&to=79658700517 Полный URL https://api.zadarma.com/v1/request/callback...;to=79658700517 full_method = method + params_str + md5_sum.hexdigest() Fullmethod: /v1/request/callback/from=155494&to=79658700517ewqrwefwedfwefwefwefwefr В общем, точно вижу, что где-то косячу. Скорее всего в строке отправки метода и параметров. Сегодня попробую сравнить с PHP
  4. Aladex

    Подскажите по работе Api

    Это работает и отдает баланс без проблем import urllib import base64 import hmac import hashlib import requests user_key = '123123123123' user_secret = '321321321321' url = 'https://api.zadarma.com/v1/info/balance/' method = '/v1/info/balance/' params = {} def ksort(params): return [(k,params[k]) for k in sorted(params.keys())] ksort_params = ksort(params) params_str = urllib.urlencode(ksort_params) md5_sum = hashlib.md5() md5_sum.update(params_str) full_method = method+params_str+md5_sum.hexdigest() sign = base64.b64encode(hmac.new(user_secret,full_method,hashlib.sha1).hexdigest()) header = user_key + ':' + sign headers = {'Authorization':header} #request_url = endpoint + '?' + canonical_querystring r = requests.get(url, headers=headers) print 'Response code: %d\n' % r.status_code print r.text А вот здесь не работает и смс не отправляет. Хотя вроде все правильно сделал. Параметры отсортировал, строку сформировал (получилось message=test&number=79658700517), сделал всё то же самое, но не работает, пишет 401. Чувствую, что накосячил в подписи. Но как? Правильно же вроде как все. import urllib import base64 import hmac import hashlib import requests user_key = '123123123123' user_secret = '321321321321' url = 'https://api.zadarma.com/v1/sms/send/' method = '/v1/sms/send/' params = {'number': '79658700517', 'message': 'test'} def ksort(params): return [(k,params[k]) for k in sorted(params.keys())] ksort_params = ksort(params) params_str = urllib.urlencode(ksort_params) md5_sum = hashlib.md5() md5_sum.update(params_str) full_method = method + params_str + md5_sum.hexdigest() sign = base64.b64encode(hmac.new(user_secret,full_method,hashlib.sha1).hexdigest()) headers = {'Authorization':user_key + ':' + sign} url = url + params_str # ************* SEND THE REQUEST ************* print '\nBEGIN REQUEST++++++++++++++++++++++++++++++++++++' print 'Request URL = ' + url r = requests.post(url, headers=headers) print '\nRESPONSE++++++++++++++++++++++++++++++++++++' print 'Response code: %d\n' % r.status_code print r.text
×
×
  • Создать...