<?php
// Conexão com banco de dados
require_once __DIR__ . '/../config/config_db.php';

// Obtém o QR Code e o código de "Copia e Cola" da URL
$qr_code_base64 = isset($_GET['qr_code_base64']) ? htmlspecialchars($_GET['qr_code_base64']) : null;
$qr_code = isset($_GET['qr_code']) ? htmlspecialchars($_GET['qr_code']) : null;
$valor_total = isset($_GET['valor_total']) ? floatval($_GET['valor_total']) : 0;
$transacao_id = isset($_GET['transacao_id']) ? intval($_GET['transacao_id']) : 0;

// FALLBACK: Se não veio ID na URL, mas veio o QR Code, busca no banco
if (!$transacao_id && ($qr_code || $qr_code_base64)) {
    try {
        // Tenta achar pelo QR Code texto ou Base64
        $sql_busca = "SELECT id FROM transacoes WHERE (qr_code = :qr OR qr_code_base64 = :base64) LIMIT 1";
        $stmt_busca = $pdo->prepare($sql_busca);
        $stmt_busca->execute([
            ':qr' => $qr_code,
            ':base64' => $qr_code_base64
        ]);
        
        if ($row_busca = $stmt_busca->fetch(PDO::FETCH_ASSOC)) {
            $transacao_id = intval($row_busca['id']);
            // Log para debug (pode remover depois)
            error_log("PIX: Recuperado transacao_id {$transacao_id} via QR Code (Fallback)");
        }
    } catch (PDOException $e) {
        error_log("Erro ao buscar transacao_id via QR Code: " . $e->getMessage());
        // Continua com $transacao_id = 0
    }
}

// Se ainda assim for 0, define como 0
$transacao_id = $transacao_id ?: 0;

// Puxando o ID do produto da URL (prioridade 1)
$produto_id = isset($_GET['produto_id']) ? (int)$_GET['produto_id'] : 0;

// FALLBACK: Se não veio produto_id na URL, mas temos transacao_id, buscar no banco (prioridade 2)
if ($produto_id === 0 && $transacao_id > 0) {
    try {
        $sql_produto = "SELECT produto_id FROM transacoes WHERE id = :transacao_id LIMIT 1";
        $stmt_produto = $pdo->prepare($sql_produto);
        $stmt_produto->execute([':transacao_id' => $transacao_id]);
        $row_produto = $stmt_produto->fetch(PDO::FETCH_ASSOC);
        if ($row_produto && isset($row_produto['produto_id']) && $row_produto['produto_id'] > 0) {
            $produto_id = (int)$row_produto['produto_id'];
            error_log("PIX: Recuperado produto_id {$produto_id} via transacao_id {$transacao_id} (Fallback)");
        }
    } catch (PDOException $e) {
        error_log("Erro ao buscar produto_id via transacao_id: " . $e->getMessage());
    }
}

// Verificando se o produto_id foi encontrado (URL ou banco)
if ($produto_id === 0) {
    error_log("PIX: produto_id não encontrado - GET['produto_id']: " . ($_GET['produto_id'] ?? 'não definido') . ", transacao_id: {$transacao_id}");
    echo "Produto não encontrado!";
    exit;
}

// Buscar tipo do produto para usar no JavaScript de redirecionamento
$tipo_produto_pix = 'digital';
try {
    $sql_tipo = "SELECT tipo_produto FROM produtos WHERE id = :produto_id LIMIT 1";
    $stmt_tipo = $pdo->prepare($sql_tipo);
    $stmt_tipo->execute([':produto_id' => $produto_id]);
    $row_tipo = $stmt_tipo->fetch(PDO::FETCH_ASSOC);
    if ($row_tipo && isset($row_tipo['tipo_produto'])) {
        $tipo_produto_pix = $row_tipo['tipo_produto'];
    }
} catch (PDOException $e) {
    error_log("PIX: Erro ao buscar tipo_produto: " . $e->getMessage());
}

// ============================================================
// CORREÇÃO DE EXIBIÇÃO: BUSCAR PREÇO DO BANCO (PRIORIDADE MÁXIMA)
// Sempre buscar do banco e FORÇAR uso do valor real para exibição
// ============================================================
if ($produto_id > 0) {
    try {
        $sql_preco_exibicao = "SELECT preco_atual, preco FROM produtos WHERE id = :produto_id LIMIT 1";
        $stmt_preco_exibicao = $pdo->prepare($sql_preco_exibicao);
        $stmt_preco_exibicao->execute([':produto_id' => $produto_id]);
        $row_preco_exibicao = $stmt_preco_exibicao->fetch(PDO::FETCH_ASSOC);
        
        if ($row_preco_exibicao) {
            // Priorizar preco_atual, se não tiver ou for 0, usar preco
            $preco_banco_exibicao = !empty($row_preco_exibicao['preco_atual']) && floatval($row_preco_exibicao['preco_atual']) > 0 
                ? floatval($row_preco_exibicao['preco_atual']) 
                : floatval($row_preco_exibicao['preco']);
            
            if ($preco_banco_exibicao > 0) {
                // FORÇAR: Usar preço do banco para exibição (IGNORAR valor da URL)
                $valor_total = round($preco_banco_exibicao, 2);
                error_log("PIX EXIBIÇÃO: Produto ID {$produto_id} - Valor da URL: R$ " . number_format(floatval($_GET['valor_total'] ?? 0), 2, ',', '.') . " | Valor do banco (USADO): R$ " . number_format($valor_total, 2, ',', '.'));
            } else {
                // Preço do banco está zerado, tentar buscar da transação
                if ($transacao_id > 0) {
                    try {
                        $sql_transacao_valor = "SELECT valor FROM transacoes WHERE id = :transacao_id LIMIT 1";
                        $stmt_transacao_valor = $pdo->prepare($sql_transacao_valor);
                        $stmt_transacao_valor->execute([':transacao_id' => $transacao_id]);
                        $row_transacao_valor = $stmt_transacao_valor->fetch(PDO::FETCH_ASSOC);
                        if ($row_transacao_valor && !empty($row_transacao_valor['valor']) && floatval($row_transacao_valor['valor']) > 0) {
                            $valor_total = round(floatval($row_transacao_valor['valor']), 2);
                            error_log("PIX EXIBIÇÃO: Produto ID {$produto_id} - Preço zerado no banco. Valor da transação (USADO): R$ " . number_format($valor_total, 2, ',', '.'));
                        } else {
                            error_log("PIX EXIBIÇÃO: Produto ID {$produto_id} encontrado, mas preço está zerado no banco e transação. Mantendo valor da URL: R$ " . number_format(floatval($_GET['valor_total'] ?? 0), 2, ',', '.'));
                        }
                    } catch (PDOException $e) {
                        error_log("PIX EXIBIÇÃO: Erro ao buscar valor da transação: " . $e->getMessage());
                    }
                }
            }
        } else {
            error_log("PIX EXIBIÇÃO: Produto ID {$produto_id} não encontrado na tabela produtos. Mantendo valor da URL: R$ " . number_format(floatval($_GET['valor_total'] ?? 0), 2, ',', '.'));
        }
    } catch (PDOException $e) {
        error_log("PIX EXIBIÇÃO: Erro ao buscar preço do produto: " . $e->getMessage() . " | Mantendo valor da URL: R$ " . number_format(floatval($_GET['valor_total'] ?? 0), 2, ',', '.'));
    }
}
// ============================================================

// Garantir que valor_total seja sempre válido (buscar do banco se ainda estiver zerado)
if ($valor_total <= 0) {
    error_log("PIX: ATENÇÃO! Valor total ainda é zero após todas as tentativas. produto_id: {$produto_id}, transacao_id: {$transacao_id}");
    
    // Última tentativa: buscar diretamente do banco usando produto_id
    if ($produto_id > 0) {
        try {
            $sql_final = "SELECT preco_atual, preco FROM produtos WHERE id = :produto_id LIMIT 1";
            $stmt_final = $pdo->prepare($sql_final);
            $stmt_final->execute([':produto_id' => $produto_id]);
            $row_final = $stmt_final->fetch(PDO::FETCH_ASSOC);
            
            if ($row_final) {
                $valor_total = !empty($row_final['preco_atual']) && floatval($row_final['preco_atual']) > 0 
                    ? floatval($row_final['preco_atual']) 
                    : floatval($row_final['preco']);
                error_log("PIX: Valor recuperado na última tentativa (busca direta): R$ " . number_format($valor_total, 2, ',', '.'));
            }
        } catch (PDOException $e) {
            error_log("PIX: Erro na última tentativa de buscar valor: " . $e->getMessage());
        }
    }
    
    // Se ainda estiver zerado após todas as tentativas, exibir erro ao invés de 0.01
    if ($valor_total <= 0) {
        error_log("PIX: ERRO CRÍTICO - Não foi possível determinar o valor. produto_id: {$produto_id}, transacao_id: {$transacao_id}");
        // Não definir 0.01 - deixar que o sistema trate o erro adequadamente
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Pagamento via Pix</title>
    
    <!-- Google tag (gtag.js) -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=AW-16455514874"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'AW-16455514874');
    </script>
    
    <!-- Event snippet for COMPRAR conversion page -->
    <script>
      gtag('event', 'conversion', {
          'send_to': 'AW-16455514874/YkpwCJaVtPYZEPr1zKY9',
          'value': 1.0,
          'currency': 'BRL',
          'transaction_id': '<?= $transacao_id; ?>'
      });
    </script>
    
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
    
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
            background: #0f0c29;
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 20px;
        }
        
        .checkout-container {
            background: white;
            border-radius: 20px;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
            max-width: 500px;
            width: 100%;
            padding: 40px;
            text-align: center;
        }
        
        .pix-logo {
            width: 80px;
            height: 80px;
            margin: 0 auto 20px;
            display: block;
        }
        
        h1 {
            color: #2d3748;
            font-size: 24px;
            font-weight: 700;
            margin-bottom: 10px;
        }
        
        .subtitle {
            color: #718096;
            font-size: 14px;
            margin-bottom: 30px;
        }
        
        .valor-total {
            background: #1a1a2e;
            color: white;
            padding: 20px;
            border-radius: 12px;
            margin-bottom: 30px;
        }
        
        .valor-total .label {
            font-size: 14px;
            opacity: 0.9;
            margin-bottom: 5px;
        }
        
        .valor-total .valor {
            font-size: 32px;
            font-weight: 700;
        }
        
        .qr-code-wrapper {
            background: #f7fafc;
            padding: 20px;
            border-radius: 12px;
            margin-bottom: 30px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        
        .qr-code-wrapper img {
            max-width: 250px;
            width: 100%;
            height: auto;
            border-radius: 8px;
        }
        
        .codigo-pix-section {
            margin-bottom: 30px;
        }
        
        .codigo-pix-section label {
            display: block;
            text-align: left;
            color: #2d3748;
            font-weight: 600;
            font-size: 14px;
            margin-bottom: 8px;
        }
        
        .input-group {
            display: flex;
            gap: 10px;
        }
        
        .input-group input {
            flex: 1;
            padding: 12px 16px;
            border: 2px solid #e2e8f0;
            border-radius: 8px;
            font-size: 14px;
            font-family: 'Courier New', monospace;
            transition: border-color 0.3s;
        }
        
        .input-group input:focus {
            outline: none;
            border-color: #667eea;
        }
        
        .btn-copy {
            padding: 12px 24px;
            background: #2d3748;
            color: white;
            border: none;
            border-radius: 8px;
            font-weight: 600;
            cursor: pointer;
            transition: background 0.3s;
            display: flex;
            align-items: center;
            gap: 8px;
            white-space: nowrap;
        }
        
        .btn-copy:hover {
            background: #1a202c;
        }
        
        .btn-copy.copied {
            background: #10b981;
        }
        
        .timer-section {
            background: #fff3cd;
            border: 2px solid #ffc107;
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 30px;
        }
        
        .timer-section .label {
            color: #856404;
            font-size: 14px;
            font-weight: 600;
            margin-bottom: 10px;
        }
        
        .timer-section .timer {
            color: #856404;
            font-size: 32px;
            font-weight: 700;
            font-family: 'Courier New', monospace;
        }
        
        .instrucoes {
            background: #f7fafc;
            border-radius: 12px;
            padding: 20px;
            margin-bottom: 30px;
            text-align: left;
        }
        
        .instrucoes h3 {
            color: #2d3748;
            font-size: 16px;
            font-weight: 700;
            margin-bottom: 15px;
            text-align: center;
        }
        
        .instrucoes ol {
            color: #4a5568;
            font-size: 14px;
            line-height: 1.8;
            padding-left: 20px;
        }
        
        .instrucoes li {
            margin-bottom: 8px;
        }
        
        .status-checking {
            color: #667eea;
            font-size: 14px;
            margin-top: 20px;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
        }
        
        .status-checking i {
            animation: spin 1s linear infinite;
        }
        
        @keyframes spin {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
        }
        
        .hidden {
            display: none;
        }
        
        #pix-code {
            display: none;
        }
        
        /* ============================================================
           CSS RESPONSIVO - MOBILE FIRST (PIX.PHP)
           ============================================================ */
        @media only screen and (max-width: 768px) {
            body {
                padding: 10px !important;
            }
            
            .checkout-container {
                padding: 25px 20px !important;
                max-width: 100% !important;
                width: 100% !important;
                border-radius: 15px !important;
                margin: 0 !important;
            }
            
            h1 {
                font-size: 20px !important;
            }
            
            .subtitle {
                font-size: 13px !important;
                margin-bottom: 20px !important;
            }
            
            .valor-total {
                padding: 18px !important;
                margin-bottom: 20px !important;
            }
            
            .valor-total .label {
                font-size: 13px !important;
            }
            
            .valor-total .valor {
                font-size: 28px !important;
            }
            
            .qr-code-wrapper {
                padding: 15px !important;
                margin-bottom: 20px !important;
            }
            
            .qr-code-wrapper img {
                max-width: 200px !important;
            }
            
            .codigo-pix-section {
                margin-bottom: 20px !important;
            }
            
            .codigo-pix-section label {
                font-size: 13px !important;
                margin-bottom: 10px !important;
            }
            
            .input-group {
                flex-direction: column !important;
                gap: 10px !important;
            }
            
            .input-group input {
                width: 100% !important;
                height: 50px !important;
                min-height: 50px !important;
                padding: 0 16px !important;
                font-size: 16px !important; /* Evita zoom automático no iOS */
                border-radius: 8px !important;
            }
            
            .btn-copy {
                width: 100% !important;
                height: 50px !important;
                min-height: 50px !important;
                padding: 12px !important;
                justify-content: center !important;
                font-size: 15px !important;
            }
            
            .timer-section {
                padding: 15px !important;
                margin-bottom: 20px !important;
            }
            
            .timer-section .label {
                font-size: 13px !important;
            }
            
            .timer-section .timer {
                font-size: 28px !important;
            }
            
            .instrucoes {
                padding: 15px !important;
                margin-bottom: 20px !important;
            }
            
            .instrucoes h3 {
                font-size: 15px !important;
                margin-bottom: 12px !important;
            }
            
            .instrucoes ol {
                font-size: 13px !important;
                line-height: 1.6 !important;
                padding-left: 18px !important;
            }
            
            .instrucoes li {
                margin-bottom: 8px !important;
            }
            
            .status-checking {
                font-size: 13px !important;
                margin-top: 15px !important;
            }
            
            .pix-logo {
                width: 60px !important;
                height: 60px !important;
                margin-bottom: 15px !important;
            }
        }
        
        /* Dispositivos muito pequenos */
        @media only screen and (max-width: 480px) {
            .checkout-container {
                padding: 20px 15px !important;
                border-radius: 0 !important;
            }
            
            h1 {
                font-size: 18px !important;
            }
            
            .valor-total .valor {
                font-size: 24px !important;
            }
            
            .qr-code-wrapper img {
                max-width: 180px !important;
            }
            
            .timer-section .timer {
                font-size: 24px !important;
            }
        }
    </style>
</head>
<body>
    <div class="checkout-container">
        <img src="/img/pix.svg" alt="Pix Logo" class="pix-logo" onerror="this.style.display='none';">
        
        <h1>Finalize seu pagamento</h1>
        <p class="subtitle">Escaneie o QR Code ou copie o código PIX</p>
        
        <div class="valor-total">
            <div class="label">Valor a pagar</div>
            <div class="valor">R$ <?= number_format(floatval($valor_total), 2, ',', '.'); ?></div>
        </div>
        
        <?php if ($qr_code_base64 && $qr_code): ?>
            <!-- QR Code -->
            <div class="qr-code-wrapper">
                <img src="data:image/png;base64,<?= $qr_code_base64; ?>" alt="QR Code Pix">
            </div>
            
            <!-- Código Copia e Cola -->
            <div class="codigo-pix-section">
                <label for="pix-code-input">Código PIX (Copiar e Colar)</label>
                <div class="input-group">
                    <input type="text" id="pix-code-input" value="<?= htmlspecialchars($qr_code); ?>" readonly>
                    <button class="btn-copy" onclick="copyPixCode()" id="btn-copy">
                        <i class="fas fa-copy"></i>
                        <span>Copiar</span>
                    </button>
                </div>
            </div>
            
            <!-- Código oculto para cópia -->
            <div id="pix-code"><?= htmlspecialchars($qr_code); ?></div>
            
            <!-- Cronômetro -->
            <div class="timer-section">
                <div class="label">Tempo restante</div>
                <div class="timer" id="timer">30:00</div>
            </div>
            
            <!-- Instruções -->
            <div class="instrucoes">
                <h3><i class="fas fa-info-circle"></i> Como pagar</h3>
                <ol>
                    <li>Copie o código PIX acima</li>
                    <li>Abra o app do seu banco</li>
                    <li>Entre na opção Pix</li>
                    <li>Escolha "Pix copia e cola"</li>
                    <li>Cole o código e confirme</li>
                </ol>
            </div>
            
            <!-- Status de verificação -->
            <div class="status-checking" id="status-checking">
                <i class="fas fa-sync-alt"></i>
                <span>Verificando pagamento...</span>
            </div>
        <?php else: ?>
            <div style="color: #e53e3e; padding: 20px;">
                <i class="fas fa-exclamation-triangle"></i>
                Não foi possível gerar o QR Code do Pix. Tente novamente.
            </div>
        <?php endif; ?>
    </div>
    
    <script>
        // Variáveis globais
        const transacaoId = <?= json_encode($transacao_id); ?>;
        let timerSeconds = 30 * 60; // 30 minutos em segundos
        let pollingInterval = null;
        let timerInterval = null;
        
        // Função auxiliar de log para console de debug (apenas console, não mostra na tela)
        function logDebug(msg) {
            // Log apenas no console do navegador (não mostra para o usuário)
            console.log('[PIX Debug]', msg);
        }
        
        // Função para copiar código PIX
        function copyPixCode() {
            const pixCode = document.getElementById('pix-code').innerText;
            const btnCopy = document.getElementById('btn-copy');
            
            navigator.clipboard.writeText(pixCode).then(() => {
                // Feedback visual
                btnCopy.classList.add('copied');
                btnCopy.innerHTML = '<i class="fas fa-check"></i> <span>Copiado!</span>';
                
                setTimeout(() => {
                    btnCopy.classList.remove('copied');
                    btnCopy.innerHTML = '<i class="fas fa-copy"></i> <span>Copiar</span>';
                }, 2000);
            }).catch(err => {
                alert('Falha ao copiar o código. Tente novamente.');
                console.error('Erro ao copiar:', err);
            });
        }
        
        // Função para atualizar cronômetro
        function updateTimer() {
            if (timerSeconds <= 0) {
                document.getElementById('timer').textContent = '00:00';
                return;
            }
            
            const minutes = Math.floor(timerSeconds / 60);
            const seconds = timerSeconds % 60;
            document.getElementById('timer').textContent = 
                `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
            
            timerSeconds--;
        }
        
        // Função para verificar status do pagamento
        async function checkPaymentStatus() {
            if (transacaoId <= 0) {
                logDebug("ERRO: transacaoId inválido ou zero");
                return; // Sem transacao_id, não faz polling
            }
            
            try {
                // Adiciona timestamp para evitar cache
                const url = `api/check_status.php?transacao_id=${transacaoId}&t=${Date.now()}`;
                logDebug("Consultando API: " + url);
                
                const response = await fetch(url);
                logDebug("Status HTTP: " + response.status + " " + response.statusText);
                
                if (!response.ok) {
                    logDebug("ERRO HTTP: " + response.status);
                    return; // Erro na resposta, tenta novamente no próximo intervalo
                }
                
                // Pega como texto primeiro para detectar erros de JSON
                const text = await response.text();
                logDebug("Resposta Bruta (primeiros 150 chars): " + text.substring(0, 150));
                
                let data;
                try {
                    data = JSON.parse(text);
                    logDebug("JSON parseado com sucesso. Status: " + (data.status || 'N/A'));
                } catch (e) {
                    // Se o JSON estiver quebrado, loga o erro e a resposta recebida
                    logDebug("ERRO JSON Parse: " + e.message);
                    logDebug("Resposta completa: " + text);
                    return; // Retorna para tentar novamente no próximo intervalo
                }
                
                // Verifica se status é 'Aprovado' (verifica múltiplas variações de forma mais robusta)
                if (data && data.status) {
                    const statusLower = String(data.status).toLowerCase().trim();
                    logDebug("Status recebido (lowercase): '" + statusLower + "'");
                    
                    const statusAprovado = (
                        statusLower === 'aprovado' || 
                        statusLower === 'approved' ||
                        statusLower === 'paid' ||
                        statusLower === 'concluded' ||
                        statusLower === 'completed'
                    );
                    
                    logDebug("Status é aprovado? " + statusAprovado);
                    
                    if (statusAprovado) {
                        logDebug("SUCESSO! Pagamento APROVADO detectado! Redirecionando...");
                        
                        // Parar polling imediatamente
                        if (pollingInterval) {
                            clearInterval(pollingInterval);
                            pollingInterval = null;
                        }
                        
                        // Parar timer também
                        if (timerInterval) {
                            clearInterval(timerInterval);
                        }
                        
                        // Redirecionar IMEDIATAMENTE (usar replace para não permitir voltar)
                        // Determinar URL baseado no tipo do produto
                        const tipoProdutoPix = '<?= htmlspecialchars($tipo_produto_pix, ENT_QUOTES, 'UTF-8'); ?>';
                        const redirectUrl = tipoProdutoPix === 'fisico' 
                            ? `../views/obrigado_fisico.php?transacao_id=${transacaoId}`
                            : `../views/obrigado.php?transacao_id=${transacaoId}`;
                        logDebug("URL de redirecionamento: " + redirectUrl);
                        window.location.replace(redirectUrl);
                        return;
                    } else {
                        logDebug("Aguardando aprovação... Status atual: " + data.status);
                    }
                } else {
                    logDebug("AVISO: Resposta sem campo 'status' ou vazia");
                }
            } catch (error) {
                logDebug("ERRO FETCH: " + error.message);
                // Continua tentando mesmo em caso de erro
            }
        }
        
        // Inicialização
        window.addEventListener('DOMContentLoaded', () => {
            logDebug("Sistema iniciado. TransacaoId: " + transacaoId);
            
            // Iniciar cronômetro (atualiza a cada segundo)
            updateTimer();
            timerInterval = setInterval(updateTimer, 1000);
            
            // Iniciar polling (verifica status a cada 2 segundos para resposta mais rápida)
            if (transacaoId > 0) {
                logDebug("Iniciando polling...");
                // Primeira verificação imediata (sem delay)
                checkPaymentStatus();
                
                // Polling contínuo a cada 2 segundos (mais rápido que antes)
                pollingInterval = setInterval(checkPaymentStatus, 2000);
            } else {
                logDebug("AVISO: transacaoId é zero ou inválido. Polling desabilitado.");
                // Sem transacao_id, esconder mensagem de verificação
                const statusChecking = document.getElementById('status-checking');
                if (statusChecking) {
                    statusChecking.classList.add('hidden');
                }
            }
        });
    </script>
    
    <!-- Debug Console (OCULTO para usuário final) -->
    <div id="debug-console" style="display: none;">
        DEBUG MODE ON...<br>
    </div>
</body>
</html>
