biplane/yandex-direct

PHP library for Yandex.Direct API


Keywords
sdk, yandex, yandex.direct, ЯндСкс.Π”ΠΈΡ€Π΅ΠΊΡ‚
License
MIT

Documentation

Yandex.Direct API PHP Client

Package version Build Status License

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 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 Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΆΡƒΡ€Π½Π°Π», Π½ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логирования Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ, успСх ΠΈΠ»ΠΈ ошибка.

Response Log level
OK DEBUG
Error ERROR

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ сСрвисы API

БСрвис ДокумСнтация
V4\YandexAPIService API Live 4 doc
V5\AdExtensions Doc
V5\AdGroups Doc
V5\AdImages Doc
V5\Ads Doc
V5\AgencyClients Doc
V5\AudienceTargets Doc
V5\BidModifiers Doc
V5\Bids Doc
V5\Campaigns Doc
V5\Changes Doc
V5\Clients Doc
V5\Dictionaries Doc
V5\DynamicTextAdTargets Doc
V5\Feeds Doc
V5\KeywordBids Doc
V5\Keywords Doc
V5\KeywordsResearch Doc
V5\Leads Doc
V5\NegativeKeywordSharedSets Doc
V5\RetargetingLists Doc
V5\Sitelinks Doc
V5\SmartAdTargets Doc
V5\Strategies Doc
V5\TurboPages Doc
V5\VCards Doc
V5\Reports Doc

License

This package is licensed using the MIT License.