g1k/yii2-direct-api

This package is abandoned and no longer maintained. No replacement package was suggested.
There is no license information available for the latest version (dev-master) of this package.

Yii2 Api Direct library

Installs: 229

Dependents: 0

Suggesters: 0

Security: 0

Stars: 4

Watchers: 1

Forks: 14

Type:yii2-extension

dev-master 2016-01-16 21:29 UTC

This package is not auto-updated.

Last update: 2020-10-30 21:40:32 UTC


README

yii2-direct-api обеспечивает работу с API Yandex.Direct для фреймворка Yii2. Является форком YiiDirectApi

Использование

Перед использованием данного расширения необходимо зарегистрировать приложение, которое будет работать с API Яндекс.Директа. После регистрации приложению будут присвоены id приложения и пароль приложения.

Установка и настройка расширения

Предпочтительный способ установить это расширение через composer.

$ php composer.phar require g1k/yii2-direct-api "dev-master"

или добавить

"g1k/yii2-direct-api": "dev-master"

в разделе require вашего composer.json файла.

В конфиге приложения добавьте компонент:

'components'=>[
		...
		'direct' => [
				'class' 		=> 'g1k\direct\DirectApi',
				'clientId'		=> 'ид приложения',
				'clientSecret'	=> 'секретный ключ приложения',
				'useSandbox'	=> true, # использовать ли песочницу. по умолчанию false — использует боевое API
				'locale'		=> 'ru', # на каком языке отдавать ответы. Если не указан, то используется язык приложения
				'responseType' 	=> 'code', # Тип ответа от яндекса при получении токена (code, token). Если не указан, то используется code. 
		]
],

Получение токена

Для получения токена необходимо отправить пользователя на страницу Яндекс.Директа. Ссылку на эту страницу можно получить следующим образом:

$link = Yii::$app->direct->getAuthorizeUrl();

В метод getAuthorizeUrl() можно передать также параметр $state, который будет возвращен в неизменном виде от Яндекса.

После того, как пользователь перейдет по сгенерированной ссылке и разрешит доступ, яндекс вернет на url, который был указан при регистрации приложения, код (и если был указан параметр state, то его в неизменном виде).

Для того, чтобы получить токен, нужно передать параметр code, который вернет Яндекс, методу getDirectToken($code)

$token = Yii::$app->direct->getDirectToken($code);

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

При получении токена через этот метод расширение его запомнит. Если приложение будет пользоваться доступом к данным Яндекс.Директа определенного аккаунта, тогда токен лучше сохранить в какое-нибудь постоянное хранилище.

Запросы к API

Запросы к API осуществляются через методы расширения, названия которых соответствуют названиям методов API Яндекс.Директа, но начинаются с маленькой буквы. Например, в API Яндекс.Директа есть метод GetBanners; сделать запрос к нему можно через метод расширения getBanners(). Каждый метод может принимать массив $param, который содержит в себе необходимые данные для выполнения метода. Для некоторых методов этот массив указывать не обязательно. Содержимое $param описано для каждого метода API Яндекс.Директа. Рассмотрим запрос к API на примере метода GetBanners:

$res = Yii::$app->direct->getBanners(array(
    'CampaignIDS' => array(100, 101, 123),
    'GetPhrases' => 'WithPrices'
));

Каждый метод возвращает ответ от Яндекса в случае успеха, или false в том случае, если произошла ошибка.

Обработка ошибок

Для того, чтобы получить информацию об ошибке, можно воспользоваться методами:

  • getError() - вернет код ошибки

  • getErrorStr() - вернет строку ошибки

Установка логина и токена, при получении данных из локального хранилища

Если мы храним токены и логины у себя, тогда перед работой их нужно передать расширению, чтобы можно было осуществлять запросы к API. Для этого есть методы setLogin и setToken.

Yii::$app->direct->setLogin('login')->setToken('token');

Поддерживаемые методы

Сейчас расширение не дает доступ ко всем методам API Яднекс.Директа. Но реализовано большинство. Не реализованы методы из группы "Метки объявлений", "Изображения в объявлениях", "Ретаргетинг" и "Финансовые операции".

Буду очень рад дополнениям. Спасибо.