JSON

Примеры взаимодействия с API в формате JSON на Python.

Получение сведений о клиенте

Пример демонстрирует вызов метода GetClientInfo.

import json, urllib2

#адрес для отправки json-запросов
url = 'https://api.direct.yandex.ru/v4/json/'

#данные для OAuth-авторизации
token = 'e4d3b4d2a7444fa384a18cda5cd1c8d9'

#логин в Директе
login = 'agrom'

#структура входных данных (словарь)
data = {
   'method': 'GetClientInfo',
   'token': token,
   'locale': 'ru',
   'param': [login]
}

#конвертировать словарь в JSON-формат и перекодировать в UTF-8
jdata = json.dumps(data, ensure_ascii=False).encode('utf8')

#выполнить запрос
response = urllib2.urlopen(url,jdata)

#вывести результат
print response.read().decode('utf8')

Вызов финансовых методов

При вызове финансовых методов необходимо дополнительно указывать финансовый токен и номер финансовой операции (см. Доступ к финансовым методам).

Для примера вызовем метод CreateInvoice, который создает счет на оплату. Ниже показано формирование финансового токена. Исходными данными являются: мастер-токен (получают в интерфейсе Яндекс.Директа), номер финансовой операции, название метода, логин пользователя.

import hashlib

masterToken  = 'AEgchkX2M3FBL8lU'
operationNum = 119
usedMethod   = 'CreateInvoice'
login        = 'agrom'

financeToken = hashlib.sha256(masterToken + str(operationNum) + usedMethod + login).hexdigest()
print financeToken

Создается финансовый токен для однократного вызова метода CreateInvoice от имени пользователя agrom. Ниже показан пример токена.

7215f95e84a766971d8ec4eb5a39ae96505b3a5529a91e5a03e5943565a6e6c7

Финансовый токен и номер финансовой операции включают в структуру входных данных, как показано ниже.

#структура входных данных (словарь)
data = {
   'method': 'GetCreditLimits',
   'token': token,
   'finance_token': financeToken,
   'operation_num': operationNum,
   'param': ['agrom'],
   'locale': 'ru'
}