connect_error) { die("Erro ao conectar: " . $conn->connect_error); } $msg = ""; // === FUNÇÃO PARA TESTAR CONECTIVIDADE === function testarConectividade($host, $port) { echo "
1. Resolvendo DNS: "; $ip = gethostbyname($host); if ($ip != $host) { echo "✅ $host → $ip
"; } else { echo "❌ Não foi possível resolver o DNS para $host"; return false; } // Teste 2: Ping básico (usando fsockopen) echo "2. Testando conectividade TCP: "; $timeout = 10; $socket = @fsockopen($host, $port, $errno, $errstr, $timeout); if ($socket) { echo "✅ Conexão estabelecida com $host:$port
"; fclose($socket); return true; } else { echo "❌ Falha ao conectar: [$errno] $errstr"; return false; } } // === SINCRONIZAR PRODUTOS === if (isset($_POST['sincronizar'])) { $url = "http://grupodm3.ddns.net:8030/webrunstudio/webRest.rule"; $host_test = "grupodm3.ddns.net"; $port_test = 8030; // Primeiro, testar conectividade if (!testarConectividade($host_test, $port_test)) { $msg = "❌ Não foi possível conectar ao servidor. Verifique se o servidor está online."; } else { // JSON que será enviado no body $postData = [ "appTipo" => "DM3", "token" => "1", "acao" => "5", "modelo" => "MOBILE", "perfil" => "PRODUTOS", "servico" => "PRODUTOS", "tokenImpressao" => "103B312E-2EAA-40F0-ABAF-276A8186ACAE", "serial" => "", "chave" => "98701771-4833-491F-8401-56856C652C10", "operationSystem" => "WIN", "tipoArquivo" => "JPG", "versao" => "3108", "dados" => "", "tipoConsulta" => "0", "grupo" => "", "grupoParticipante" => "", "offSet" => "0", "qtdeLista" => "0" ]; $jsonData = json_encode($postData); // === cURL com configurações aprimoradas === $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/json", "Content-Length: " . strlen($jsonData), "User-Agent: PHP-Script/1.0" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); // Configurações de timeout e SSL curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Timeout geral curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // Timeout de conexão curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Desabilitar verificação SSL curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Seguir redirects curl_setopt($ch, CURLOPT_VERBOSE, true); // Modo verboso para debug // Capturar informações detalhadas $verbose = fopen('php://temp', 'w+'); curl_setopt($ch, CURLOPT_STDERR, $verbose); $response = curl_exec($ch); $err = curl_error($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $info = curl_getinfo($ch); // Obter log verboso rewind($verbose); $verboseLog = stream_get_contents($verbose); fclose($verbose); curl_close($ch); // === DEPURAÇÃO DETALHADA === echo "URL: $url
"; echo "HTTP Status Code: $httpCode
"; echo "Tempo total: " . round($info['total_time'], 2) . "s
"; echo "Tempo de conexão: " . round($info['connect_time'], 2) . "s
"; echo "IP do servidor: " . $info['primary_ip'] . "
"; if ($err) { echo "❌ Erro cURL: $err
"; } if ($verboseLog) { echo "$verboseLog
" . htmlspecialchars($response) . "
" . htmlspecialchars($response) . ""; } else { if ($dados && isset($dados['produtos'])) { $contador = 0; foreach ($dados['produtos'] as $produto) { $codigo = $conn->real_escape_string($produto['codigo']); $descricao = $conn->real_escape_string($produto['descricao']); $unidade = $conn->real_escape_string($produto['unidade']); $ncm = $conn->real_escape_string($produto['ncm']); $preco = floatval($produto['preco']); $cfop = $conn->real_escape_string($produto['cfop']); $ean = $conn->real_escape_string($produto['ean']); $cstICMS = $conn->real_escape_string($produto['cstICMS']); $sql = " INSERT INTO produtos (codigo, descricao, unidade, ncm, preco, cfop, ean, cstICMS) VALUES ('$codigo', '$descricao', '$unidade', '$ncm', $preco, '$cfop', '$ean', '$cstICMS') ON DUPLICATE KEY UPDATE descricao='$descricao', unidade='$unidade', ncm='$ncm', preco=$preco, cfop='$cfop', ean='$ean', cstICMS='$cstICMS' "; if ($conn->query($sql)) { $contador++; } else { echo "
❌ Erro MySQL para produto $codigo: " . $conn->error . "
"; } } $msg = "✅ $contador produtos sincronizados com sucesso!"; } else { $msg = "❌ JSON válido, mas sem produtos encontrados. Estrutura: " . print_r(array_keys($dados), true); } } } else { $msg = "❌ Falha na requisição. HTTP Code: $httpCode | Erro: $err"; } } } // === LISTA PRODUTOS DO BANCO === $result = $conn->query("SELECT * FROM produtos ORDER BY descricao ASC"); ?>Código | Descrição | Unidade | Preço | NCM | EAN |
---|---|---|---|---|---|
= htmlspecialchars($row['codigo']) ?> | = htmlspecialchars($row['descricao']) ?> | = htmlspecialchars($row['unidade']) ?> | R$ = number_format($row['preco'], 2, ',', '.') ?> | = htmlspecialchars($row['ncm']) ?> | = htmlspecialchars($row['ean']) ?> |