biplane / yandex-direct
PHP library for Yandex.Direct API
Installs: 134 818
Dependents: 1
Suggesters: 0
Security: 0
Stars: 44
Watchers: 10
Forks: 23
Open Issues: 1
Requires
- php-64bit: ^7.2 || ^8.0
- ext-libxml: *
- ext-soap: *
- php-http/discovery: ^1.14
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- symfony/event-dispatcher: ^4.4 || ^5.0 || ^6.0 || ^7.0
- symfony/options-resolver: ^4.0 || ^5.0 || ^6.0 || ^7.0
- symfony/serializer: ^4.4 || ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- allejo/php-vcr-sanitizer: ^1.0.9
- doctrine/coding-standard: ^9.0
- nyholm/psr7: ^1.4
- php-http/httplug: ^2.2
- php-vcr/php-vcr: ^1.5.2
- phpunit/phpunit: ^7.5 || ^9.5
- psalm/plugin-phpunit: ^0.17.0
- psr/log: ^1.1
- symfony/http-client: ^4.4 || ^5.0
- vimeo/psalm: 4.30.0
- dev-master / 5.x-dev
- 5.13.1
- 5.13.0
- 5.12.0
- 5.11.0
- 5.10.0
- 5.9.0
- 5.8.1
- 5.8.0
- 5.7.1
- 5.7.0
- 5.6.0
- 5.5.0
- 5.4.1
- 5.4.0
- 5.3.0
- 5.2.0
- 5.1.1
- 5.1.0
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 5.0.0-beta4
- 5.0.0-beta3
- 5.0.0-beta2
- 5.0.0-beta1
- 4.x-dev
- 4.22.0
- 4.21.0
- 4.20.0
- 4.19.0
- 4.18.0
- 4.17.0
- 4.16.0
- 4.15.0
- 4.14.1
- 4.14.0
- 4.13.0
- 4.12.0
- 4.11.0
- 4.10.0
- 4.9.1
- 4.9.0
- 4.8.0
- 4.7.1
- 4.7.0
- 4.6.1
- 4.6.0
- 4.5.0
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.0
- 4.1.1
- 4.1.0
- 4.1.0-beta2
- 4.1.0-beta1
- 4.0.1
- 4.0
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 2.x-dev
- 2.0.0
- 1.0.0
This package is auto-updated.
Last update: 2024-10-22 13:27:17 UTC
README
Библиотека для работы с API Директа.
Формат взаимодействия: SOAP
NOTE: Библиотека совместима только с 64-битной версией PHP.
Установка
Проще всего установить с помощью менеджера пакетов - composer.
$ composer require biplane/yandex-direct
Дополнительно для работы с сервисом Reports
Для работы с сервисом Reports нужен HTTP-клиент,
совместимый с PSR-18.
В зависимостях не указана какая-то конкретная реализация. Вместо этого используется
php-http/discovery
для поиска подходящей реализации
среди установленных пакетов, как стратегия по умолчанию.
Примеры использования
Получение данных по объявлениям
Данный пример отражает взаимодействие с сервисом Ads для получения списка объявлений.
<?php use Biplane\YandexDirect\ApiServiceFactory; use Biplane\YandexDirect\Api\V5\Ads; use Biplane\YandexDirect\Api\V5\Contract; use Biplane\YandexDirect\ConfigBuilder; $serviceFactory = new ApiServiceFactory(); $config = ConfigBuilder::create() ->setAccessToken('<INSERT_ACCESS_TOKEN>') ->setClientLogin('agrom') ->setLocale('ru') ->getConfig(); $service = $serviceFactory->createService($config, Ads::class); $campaignsIds = [123]; $criteria = Contract\AdsSelectionCriteria::create() ->setCampaignIds($campaignsIds) ->setStates([ Contract\StateEnum::ON, ]); $request = Contract\GetAdsRequest::create() ->setSelectionCriteria($criteria) ->setFieldNames([ Contract\AdFieldEnum::AD_CATEGORIES, Contract\AdFieldEnum::AGE_LABEL, Contract\AdFieldEnum::AD_GROUP_ID, Contract\AdFieldEnum::ID, Contract\AdFieldEnum::STATUS, ]); $response = $service->get($request); foreach ($response->getAds() ?? [] as $item) { // Здесь $item будет являться экземпляром `Biplane\YandexDirect\Api\V5\Contract\AdGetItem` // Например, получение информации о возрастной метке: // $item->getAgeLabel(); }
Получение отчета
В данном примере делается запрос на подготовку отчета, ожидаем его готовность, загружаем и сохраняем в файл.
use Biplane\YandexDirect\Api\V5\Reports; use Biplane\YandexDirect\ConfigBuilder; use Biplane\YandexDirect\ReportServiceFactory; $serviceFactory = new ReportServiceFactory(); $config = ConfigBuilder::create() ->setAccessToken('<INSERT_ACCESS_TOKEN>') ->setClientLogin('agrom') ->setLocale('ru') ->getConfig(); $service = $serviceFactory->createService($config); $reportDefinition = Reports\ReportDefinition::create() ->setReportName('demo') ->setReportType(Reports\ReportTypeEnum::CAMPAIGN_PERFORMANCE_REPORT) ->setDateRangeType(Reports\DateRangeTypeEnum::LAST_7_DAYS) ->setFieldNames([ Reports\FieldEnum::CAMPAIGN_ID, Reports\FieldEnum::CAMPAIGN_NAME, Reports\FieldEnum::IMPRESSIONS, Reports\FieldEnum::CLICKS, Reports\FieldEnum::COST, ]) ->setIncludeVAT(false); $request = Reports\ReportRequestBuilder::create() ->setReportDefinition($reportDefinition) ->returnMoneyInMicros(false) ->skipReportHeader(true) ->getReportRequest(); $result = $service->getReady($request); $result->saveToFile('/path/to/file.tsv');
Логирование
Для логирования запросов к API можно реализовать интерфейс Biplane\YandexDirect\Log\SoapLogger
.
Либо использовать адаптер для psr/log
:
use Biplane\YandexDirect\ApiServiceFactoryBuilder; use Biplane\YandexDirect\Log\SoapLogger\PsrLogger; $serviceFactory = ApiServiceFactoryBuilder::create() ->setLogger(new PsrLogger($psrLogger)) ->getFactory(); // ...
В данной конфигурации все запросы к API будут записываться в журнал, но уровень логирования будет определяться ответом, успех или ошибка.
Поддерживаемые сервисы API
License
This package is licensed using the MIT License.