@ksandr_maykop

Почему ответ от сервера Яндекс Директа ошибочный (API, статистика, v5, песочница)?

Пытаюсь отправить запрос API к Яндекс Директу (песочница) для получения статистики по кампании. Получаю ответ:

<reports:reportdownloaderror xmlns:reports="http://api.direct.yandex.com/v5/reports">
<reports:apierror>
<reports:requestid>6057797371104602549</reports:requestid>
<reports:errorcode>1002</reports:errorcode>
<reports:errormessage>Ошибка операции</reports:errormessage></reports:apierror>
</reports:reportdownloaderror>


Собственно запрос формирую следующим образом:

function QueryToYandex( $service, $data ) {
	$tokenYandex = "........";
	$curl = curl_init();
	curl_setopt_array($curl, array(
		CURLOPT_URL => "https://api-sandbox.direct.yandex.com/v5/".$service,
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_POST => true,
		//CURLOPT_ENCODING => "",
		//CURLOPT_MAXREDIRS => 10,
		CURLOPT_TIMEOUT => 30,
		//CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		CURLOPT_CUSTOMREQUEST => "POST",
		CURLOPT_HTTPHEADER => array(
			"accept-language: ru",
			"authorization: Bearer ".$tokenYandex,
			"Client-Login: .....",
			"processingMode: online",
			"returnMoneyInMicros: false",
			"Content-Type: text/xml"
			),
		)
	);
	curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
	curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

	$res = curl_exec($curl);

	if(!$res){
		$error = curl_error($curl).'('.curl_errno($curl).')';
		$res = $error;
	}
	else
		curl_close($curl);
	return $res;
}

function custom_report( $IdCampaign , $DateRange ) {
	$service = "reports";

	$data ='<?xml version="1.0" encoding="UTF-8"?>
    <ReportDefinition xmlns="http://api.direct.yandex.com/v5/reports">
    	<SelectionCriteria>
    		<Filter>
    			<Field>CampaignId</Field>
    			<Operator>EQUALS</Operator>
    			<Values>191853</Values>
    		</Filter>
    	</SelectionCriteria>
    	<FieldNames>Date</FieldNames>
    	<FieldNames>Clicks</FieldNames>
    	<FieldNames>Cost</FieldNames>
    	<FieldNames>AdNetworkType</FieldNames>
    	<OrderBy>
    		<Field>Date</Field>
    	</OrderBy>
    	<ReportName>Campaign #191853</ReportName>
    	<ReportType>CUSTOM_REPORT</ReportType>
    	<DateRangeType>THIS_MONTH</DateRangeType>
    	<Format>TSV</Format>
    	<IncludeVAT>NO</IncludeVAT>
    	<IncludeDiscount>NO</IncludeDiscount>
    </ReportDefinition>';
   
return QueryToYandex( $service, $data );
}


XML скопирован из примера, в нем по идее ошибок не должно быть. Ума не приложу, что не так и что не нравится серверу в этом запросе.
  • Вопрос задан
  • 1078 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MrKMV34
Превозмогая трудности
Вы отправляет запрос в песочницу или на production api? Доменное имя должно совпадать и в ReportDefinition и в CURLOPT_URL
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы