@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><?
}
  • Вопрос задан
  • 446 просмотров
Пригласить эксперта
Ответы на вопрос 1
bismoney
@bismoney
Тоже столкнулся на laravel.
Route был только get, надо или post или any.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы