- Модуль: seo
- Путь к файлу: ~/bitrix/modules/seo/lib/analytics/services/accountyandex.php
- Класс: BitrixSeoAnalyticsServicesAccountYandex
- Вызов: AccountYandex::getExpenses
public function getExpenses($accountId = null, Date $dateFrom = null, Date $dateTo = null)
{
// https://tech.yandex.ru/direct/doc/reports/example-docpage/
$result = new ResponseYandex();
$expenses = new Expenses();
// preload currency cause we can lost it if request after report
$this->getCurrency();
$result->setData(['expenses' => $expenses]);
$dateFrom = $dateFrom ?: new Date();
$dateTo = $dateTo ?: new Date();
$options = [
'params' => [
'SelectionCriteria' => [
'DateFrom' => $dateFrom->format('Y-m-d'),
'DateTo' => $dateTo->format('Y-m-d'),
],
'FieldNames' => [
'Impressions', 'Clicks', 'Conversions', 'Cost',
'AvgCpc',
//'AvgCpm'
],
'ReportType' => 'ACCOUNT_PERFORMANCE_REPORT',
'DateRangeType' => 'CUSTOM_DATE',
'ReportName' => 'Account Report',
'Format' => 'TSV',
'IncludeVAT' => 'YES',
'IncludeDiscount' => 'YES',
],
];
$profile = $this->getProfile();
if(empty($profile['NAME']))
{
return $result->addError(new Error("Can not find user name."));
}
$client = $this->getClient();
$client->setHeader('Client-Login', $profile['NAME']);
$client->setHeader('returnMoneyInMicros', 'false');
$client->setHeader('skipReportHeader', 'true');
//$client->setHeader('processingMode', 'online');
$response = $client->post(
$this->getYandexServerAdress() . 'reports',
Json::encode($options)
);
if($client->getStatus() != 200)
{
return $result->addError($this->getReportErrorByHttpStatus($client->getStatus()));
}
if($response)
{
$expenses->add($this->parseReportData($response));
}
else
{
return $result->addError(new Error('Empty report data'));
}
return $result;
}