Задать вопрос
@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><?
}
  • Вопрос задан
  • 679 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия 1С-программист
    8 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
bismoney
@bismoney
Тоже столкнулся на laravel.
Route был только get, надо или post или any.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽
ITK academy Краснодар
от 220 000 до 300 000 ₽