Задать вопрос
@Turbomanfirst

Почему не работает один и тот же код при загрузке офлайн-конверсий API Яндекс метрики?

Столкнулся с интересной ситуацией при загрузке офлайн конверсий через API. Ситуация такова, что на тесте код работает и конверсии уходят в загрузку, а на основном домене прилетает :
{"errors":[{"error_type":"invalid_uploading","message":"Incorrect data format, error in line number 1"}],"code":400,"message":"Incorrect data format, error in line number 1"}


В чем может быть проблема, если код идентичен?

Вот сам код, в силу специфики параметр yclid прилетает от постбека get'ом:

$yclid_id = filter_input(INPUT_GET, 'yclid'); 


if($yclid_id != "") {

	function getInfoYa($url,$token,$data,$boundary){
    
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');	

  	curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host:api-metrika.yandex.net','Authorization: OAuth '.$token,"Content-Type: multipart/form-data; boundary=------------------------$boundary","Content-Length: " . strlen($data)));


    $response = array();
    $response['html']     = curl_exec($ch);
    $response['err']      = curl_errno($ch);
    $response['errmsg']   = curl_error($ch);
    $response['header']   = curl_getinfo($ch);
    


    curl_close($ch);		
    

    return $response;	


	}


    $token = "мойтокен";
    $orders = "Yclid,Target,DateTime".PHP_EOL;		

	global $yclid_id;

	$yaclid=$yclid_id;
    
    
    $orders .= "".$yaclid.",target,".time()."".PHP_EOL;


    $counterId = номер; //id счетчика
    $boundary = "7zDUQOAIAE9hEWoV";
    $filename = 'data.csv';

	$data = "--------------------------$boundary\x0D\x0A";
    $data .= "Content-Disposition: form-data; name=\"file\"; filename=\"$filename\"\x0D\x0A";
    $data .= "Content-Type: text/csv\x0D\x0A\x0D\x0A";
    $data .= $orders . "\x0A\x0D\x0A";
	$data .= "--------------------------$boundary--";


	$url = "https://api-metrika.yandex.net/management/v1/counter/".$counterId."/offline_conversions/upload?client_id_type=YCLID&oauth_token=".$token;
    $yaInfo = getInfoYa($url,$token,$data,$boundary);

	$yaInfo = json_decode($yaInfo["response"]["html"],true);

	?><pre><?print_r($yaInfo)?></pre><?
}
  • Вопрос задан
  • 538 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
bismoney
@bismoney
Тоже столкнулся на laravel.
Route был только get, надо или post или any.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
21 дек. 2024, в 06:04
15000 руб./за проект
21 дек. 2024, в 01:12
1000 руб./за проект
20 дек. 2024, в 22:55
1500 руб./за проект