if ($action === 'lead' && $_SERVER['REQUEST_METHOD'] === 'POST') { // 1. Определение IP пользователя $ip = $_SERVER['HTTP_CF_CONNECTING_IP'] ?? explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'] ?? '')[0] ?? $_SERVER['HTTP_X_REAL_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? ''; $ip = trim($ip); // Заглушка для локальных IP if (empty($ip) || in_array($ip, ['127.0.0.1', '::1']) || strpos($ip, '192.168.') === 0) { $ip = '95.215.211.113'; } // 2. Форматирование номера телефона (Buyo требует знак +) $rawPhone = trim($_POST['phone'] ?? ''); $digitsPhone = preg_replace('/[^0-9]/', '', $rawPhone); $formattedPhone = !empty($digitsPhone) ? '+' . $digitsPhone : ''; $subid = $_POST['subid'] ?? ''; if ($subid === '') { $subid = $_POST['clickid'] ?? $_POST['click_id'] ?? ''; } // 3. Формирование массива данных $payload = [ 'flow_id' => BUYO_FLOW_ID, 'ip' => $ip, 'name' => trim($_POST['name'] ?? ''), 'phone' => $formattedPhone, 'utm_source' => $_POST['utm_source'] ?? '', 'utm_medium' => $_POST['utm_medium'] ?? '', 'utm_campaign' => $_POST['utm_campaign'] ?? '', 'utm_term' => $_POST['utm_term'] ?? '', 'utm_content' => $_POST['utm_content'] ?? '', 'subid' => $subid, 'subid1' => $_POST['subid1'] ?? '', 'subid2' => $_POST['subid2'] ?? '', 'subid3' => $_POST['subid3'] ?? '', 'subid4' => $_POST['subid4'] ?? '', ]; $url = rtrim($buyo_backend_url, '/') . '/api/v1/leads'; $post_data = http_build_query($payload); $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => $post_data, CURLOPT_TIMEOUT => 15, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TCP_NODELAY => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', CURLOPT_HTTPHEADER => [ "Content-Type: application/x-www-form-urlencoded", buyo_auth_header(), ], ]); $body = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $curl_err = curl_error($ch); curl_close($ch); // 4. Выводим ошибки без генерации 502 HTTP статуса if ($curl_err) { file_put_contents(__DIR__ . '/curl_error.log', date('Y-m-d H:i:s') . ' Error: ' . $curl_err . PHP_EOL, FILE_APPEND); http_response_code(200); echo json_encode(["success" => false, "error" => "Ошибка cURL соединения: " . $curl_err], JSON_UNESCAPED_UNICODE); exit(); } if ($http_code !== 200) { http_response_code(200); $detail = json_decode($body, true); echo json_encode([ "success" => false, "error" => "Сервер Buyo вернул код $http_code", "backend_details" => $detail ?: $body, ], JSON_UNESCAPED_UNICODE); exit(); } http_response_code(200); echo $body; exit(); }