<?php
session_start();
require_once 'conexao.php'; 

// Força o fuso horário correto para o cálculo das datas
date_default_timezone_set('America/Sao_Paulo');

// --- FUNÇÃO PARA GERAR CPF VÁLIDO AUTOMATICAMENTE PARA A API DO ASAAS ---
function gerarCPFValido() {
    $n1 = rand(0, 9); $n2 = rand(0, 9); $n3 = rand(0, 9);
    $n4 = rand(0, 9); $n5 = rand(0, 9); $n6 = rand(0, 9);
    $n7 = rand(0, 9); $n8 = rand(0, 9); $n9 = rand(0, 9);
    
    $d1 = $n9*2 + $n8*3 + $n7*4 + $n6*5 + $n5*6 + $n4*7 + $n3*8 + $n2*9 + $n1*10;
    $d1 = 11 - ($d1 % 11);
    if ($d1 >= 10) $d1 = 0;
    
    $d2 = $d1*2 + $n9*3 + $n8*4 + $n7*5 + $n6*6 + $n5*7 + $n4*8 + $n3*9 + $n2*10 + $n1*11;
    $d2 = 11 - ($d2 % 11);
    if ($d2 >= 10) $d2 = 0;
    
    return "{$n1}{$n2}{$n3}{$n4}{$n5}{$n6}{$n7}{$n8}{$n9}{$d1}{$d2}";
}

// --- DECODIFICAÇÃO DOS PARÂMETROS DA URL ---
$revB64 = $_GET['r'] ?? '';
$cliB64 = $_GET['c'] ?? '';

$revendedor = base64_decode($revB64);
$clienteUser = base64_decode($cliB64);

if (empty($revendedor) || empty($clienteUser)) {
    die("<!DOCTYPE html><html lang='pt-br'><head><meta charset='UTF-8'><title>Erro</title><link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'><style>body{background:#151521;color:#fff;display:flex;align-items:center;justify-content:center;height:100vh;text-align:center;}</style></head><body><div><h1 class='text-danger'>❌ Link Inválido</h1><p class='text-muted'>Parâmetros de renovação não encontrados.</p></div></body></html>");
}

// 1. BUSCA DADOS DO CLIENTE E IDENTIFICA SE É TESTE
$cliente = null;
$is_teste = false;

// Tenta achar em usuarios
try {
    $stmtCli = $connUser->prepare("SELECT * FROM usuario WHERE usuario = ? AND CadUser = ? LIMIT 1");
    $stmtCli->execute([$clienteUser, $revendedor]);
    $cliente = $stmtCli->fetch(PDO::FETCH_ASSOC);
} catch (Exception $e) {}

if (!$cliente) {
    try {
        $stmtCli = $connUser->prepare("SELECT * FROM usuario WHERE usuario = ? LIMIT 1");
        $stmtCli->execute([$clienteUser]);
        $cliente = $stmtCli->fetch(PDO::FETCH_ASSOC);
    } catch (Exception $ex) {}
}

// NOVO: Busca na tabela de testes caso não ache nos clientes normais
if (!$cliente) {
    try {
        $stmtCli = $connUser->prepare("SELECT * FROM teste WHERE usuario = ? LIMIT 1");
        $stmtCli->execute([$clienteUser]);
        $cliente = $stmtCli->fetch(PDO::FETCH_ASSOC);
        if ($cliente) {
            $is_teste = true;
        }
    } catch (Exception $ex) {}
}

if (!$cliente) {
    die("<!DOCTYPE html><html lang='pt-br'><head><meta charset='UTF-8'><title>Erro</title><link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'><style>body{background:#151521;color:#fff;display:flex;align-items:center;justify-content:center;height:100vh;text-align:center;}</style></head><body><div><h1 class='text-danger'>❌ Cliente Não Encontrado</h1><p class='text-muted'>Verifique as informações fornecidas no link de acesso.</p></div></body></html>");
}

// =========================================================================
// BUSCA INFORMAÇÕES VISUAIS DO PERFIL PARA EXIBIÇÃO NA TELA
// =========================================================================
$nome_perfil = '---'; $url_perfil = '---'; $porta_perfil = '---';
try {
    $stP = $connGeral->prepare("SELECT nome, url, porta FROM perfil WHERE id = ?");
    $stP->execute([$cliente['perfil']]);
    if($p = $stP->fetch(PDO::FETCH_ASSOC)) {
        $nome_perfil = $p['nome']; $url_perfil = $p['url']; $porta_perfil = $p['porta'];
    }
} catch(Exception $e){}
// =========================================================================

// 2. BUSCA DADOS FINANCEIROS DO REVENDEDOR (mp_revendedores)
$fin = [];
$dono_fin_atual = $revendedor;
$max_tentativas_fin = 5;

while ($max_tentativas_fin > 0 && !empty($dono_fin_atual)) {
    try {
        $stmtFin = $connUser->prepare("SELECT access_token, access_token_asaas, dados_bancarios FROM mp_revendedores WHERE usuario_revendedor = ? LIMIT 1");
        $stmtFin->execute([$dono_fin_atual]);
        $fin = $stmtFin->fetch(PDO::FETCH_ASSOC) ?: [];
        
        if (!empty($fin['access_token']) || !empty($fin['access_token_asaas']) || !empty($fin['dados_bancarios'])) {
            break;
        }
    } catch (Exception $e) {
        $fin = [];
    }

    try {
        $stmtPai = $connUser->prepare("SELECT id_dono, caduser, revendedor FROM rev WHERE usuario = ? LIMIT 1");
        $stmtPai->execute([$dono_fin_atual]);
        $pai = $stmtPai->fetch(PDO::FETCH_ASSOC);
        $proximoPai = $pai['id_dono'] ?? $pai['caduser'] ?? $pai['revendedor'] ?? '';
        if (empty($proximoPai) || $proximoPai === $dono_fin_atual) break;
        $dono_fin_atual = $proximoPai;
    } catch (Exception $e) {
        break;
    }
    $max_tentativas_fin--;
}

// 3. AJAX PARA VERIFICAR STATUS DO PAGAMENTO EM TEMPO REAL
if (isset($_GET['checar_status'])) {
    header('Content-Type: application/json');
    $id_pagamento = $_GET['checar_status'];
    
    try {
        $stmtSt = $connUser->prepare("SELECT status FROM pagamentos WHERE id_pagamento_mp = ? LIMIT 1");
        $stmtSt->execute([$id_pagamento]);
        $st = $stmtSt->fetchColumn();
        if ($st === 'approved') {
            echo json_encode(['status' => 'approved']);
            exit;
        }
    } catch (Exception $e) {}

    // Checa Mercado Pago
    if (!empty($fin['access_token'])) {
        $ch = curl_init("https://api.mercadopago.com/v1/payments/" . $id_pagamento);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . trim($fin['access_token'])]);
        $res = curl_exec($ch);
        curl_close($ch);
        $json = json_decode($res, true);
        
        if (isset($json['status']) && $json['status'] === 'approved') {
            renovarClientePagamento($connUser, $connGeral, $id_pagamento, $cliente, $is_teste);
            echo json_encode(['status' => 'approved']);
            exit;
        }
    }

    // Checa Asaas
    if (!empty($fin['access_token_asaas'])) {
        $ch = curl_init("https://www.asaas.com/api/v3/payments/" . $id_pagamento);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, ["access_token: " . trim($fin['access_token_asaas'])]);
        $res = curl_exec($ch);
        curl_close($ch);
        $json = json_decode($res, true);
        
        if (isset($json['status']) && ($json['status'] === 'RECEIVED' || $json['status'] === 'CONFIRMED')) {
            renovarClientePagamento($connUser, $connGeral, $id_pagamento, $cliente, $is_teste);
            echo json_encode(['status' => 'approved']);
            exit;
        }
    }
    
    echo json_encode(['status' => 'pending']);
    exit;
}

function renovarClientePagamento($connUser, $connGeral, $id_pagamento, $cliente, $is_teste = false) {
    $id_plano_session = $_SESSION['pix_plano_id_' . $id_pagamento] ?? 0;
    if ($id_plano_session > 0) {
        $stmtP = $connUser->prepare("SELECT * FROM planos_revenda WHERE id = ? LIMIT 1");
        $stmtP->execute([$id_plano_session]);
        $planoSel = $stmtP->fetch(PDO::FETCH_ASSOC);
        
        if ($planoSel) {
            $dias = (int)($planoSel['dias'] ?? 30);
            $venc_raw = $cliente['data_premio'];
            $atual_ts = is_numeric($venc_raw) ? (int)$venc_raw : strtotime(str_replace('/', '-', $venc_raw));
            $base = ($atual_ts > time()) ? $atual_ts : time();
            $nova_data = date('Y-m-d H:i:s', strtotime("+{$dias} days", $base));
            
            // SE FOR TESTE, CONVERTE PARA CLIENTE NA HORA DO PAGAMENTO
            if ($is_teste) {
                $email = $cliente['email'] ?? ''; 
                $whatsapp = $cliente['whatsapp'] ?? ''; 
                $sql_ins = "INSERT INTO usuario (CadUser, nome, usuario, senha, email, conexao, data_premio, perfil, bloqueado, data_cadastro, whatsapp) VALUES (?, ?, ?, ?, ?, 1, ?, ?, 'nao', NOW(), ?)";
                $connUser->prepare($sql_ins)->execute([$cliente['CadUser'], $cliente['nome'], $cliente['usuario'], $cliente['senha'], $email, $nova_data, $cliente['perfil'], $whatsapp]);
                $connUser->prepare("DELETE FROM teste WHERE id = ?")->execute([$cliente['id']]);
            } else {
                $connUser->prepare("UPDATE usuario SET data_premio = ?, bloqueado = 'nao' WHERE id = ?")->execute([$nova_data, $cliente['id']]);
            }
            
            try {
                // CORREÇÃO: Dá UPDATE no pagamento que já estava registrado como pending
                $connUser->prepare("UPDATE pagamentos SET status = 'approved' WHERE id_pagamento_mp = ?")->execute([$id_pagamento]);
                
                // =========================================================================
                // INTEGRAÇÃO WHATSAPP IDÊNTICA AO CLIENTES.PHP
                // =========================================================================
                $dono = $cliente['CadUser']; 
                $telefone = !empty($cliente['whatsapp']) ? preg_replace("/[^0-9]/", "", $cliente['whatsapp']) : '';

                if (!empty($telefone) && !empty($dono)) {
                    $stmtWpp = $connGeral->prepare("SELECT * FROM config_api_whatsapp WHERE usuario = ? LIMIT 1");
                    $stmtWpp->execute([trim($dono)]);
                    $conf = $stmtWpp->fetch(PDO::FETCH_ASSOC);

                    if ($conf && !empty($conf['api_url']) && !empty($conf['instancia'])) {
                        $msg = $conf['msg_renovacao'] ?? "✅ Sucesso! O seu plano foi renovado.\n\n👤 User: {usuario}\n📅 Novo Vencimento: {vencimento}";
                        
                        $msg = str_replace('{nome}', $cliente['nome'], $msg);
                        $msg = str_replace('{usuario}', $cliente['usuario'], $msg);
                        $msg = str_replace('{senha}', $cliente['senha'], $msg);
                        $msg = str_replace('{vencimento}', date('d/m/Y', strtotime($nova_data)), $msg);
                        
                        if (strlen($telefone) == 10 || strlen($telefone) == 11) { $telefone = "55" . $telefone; }
                        
                        if (strlen($telefone) >= 12) {
                            $curl = curl_init();
                            curl_setopt_array($curl, array(
                              CURLOPT_URL => rtrim($conf['api_url'], '/') . "/message/sendText/" . trim($conf['instancia']),
                              CURLOPT_RETURNTRANSFER => true,
                              CURLOPT_ENCODING => '',
                              CURLOPT_MAXREDIRS => 10,
                              CURLOPT_TIMEOUT => 0,
                              CURLOPT_FOLLOWLOCATION => true,
                              CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                              CURLOPT_CUSTOMREQUEST => 'POST',
                              CURLOPT_POSTFIELDS => json_encode([
                                  "number" => $telefone,
                                  "options" => ["delay" => 1200, "presence" => "composing", "linkPreview" => false],
                                  "textMessage" => ["text" => $msg]
                              ]),
                              CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'apikey: ' . trim($conf['api_key'])],
                              CURLOPT_SSL_VERIFYPEER => false,
                              CURLOPT_SSL_VERIFYHOST => false
                            ));
                            curl_exec($curl); 
                            curl_close($curl);
                        }
                    }
                }
            } catch(Exception $e){}
        }
    }
}

// 4. BUSCA HIERÁRQUICA DE PLANOS
$planos = [];
$dono_plano_atual = $revendedor;
$max_tentativas = 5;

while ($max_tentativas > 0 && !empty($dono_plano_atual)) {
    try {
        $stmtPlanos = $connUser->prepare("SELECT * FROM planos_revenda WHERE id_revendedor = ? ORDER BY dias ASC, valor ASC");
        $stmtPlanos->execute([$dono_plano_atual]);
        $planos = $stmtPlanos->fetchAll(PDO::FETCH_ASSOC);
        if (count($planos) > 0) break;
    } catch (Exception $e) {
        $planos = [];
    }

    try {
        $stmtPai = $connUser->prepare("SELECT id_dono, caduser, revendedor FROM rev WHERE usuario = ? LIMIT 1");
        $stmtPai->execute([$dono_plano_atual]);
        $pai = $stmtPai->fetch(PDO::FETCH_ASSOC);
        $proximoPai = $pai['id_dono'] ?? $pai['caduser'] ?? $pai['revendedor'] ?? '';
        if (empty($proximoPai) || $proximoPai === $dono_plano_atual) break;
        $dono_plano_atual = $proximoPai;
    } catch (Exception $e) {
        break;
    }
    $max_tentativas--;
}

// =========================================================================
// FILTRO DE PLANOS POR OPERADORA (USANDO AS LOGOS DO GERENCIAR_PLANOS.PHP)
// =========================================================================
if (!empty($planos) && $nome_perfil !== '---') {
    $planos_filtrados = [];
    
    $nome_perfil_low = strtolower($nome_perfil);
    $url_perfil_low = strtolower($url_perfil);
    
    // Identifica o Cliente pelo NOME DO PERFIL (mais seguro para evitar falsos positivos com URLs .net)
    $is_claro_client = (stripos($nome_perfil_low, 'claro') !== false || stripos($nome_perfil_low, 'sky') !== false || stripos($nome_perfil_low, 'vivo') !== false || stripos($nome_perfil_low, 'sat') !== false);
    
    // Para Net, busca a palavra exata "net" ou "cabo" no nome
    $is_net_client = (preg_match('/\bnet\b/i', $nome_perfil_low) || stripos($nome_perfil_low, 'cabo') !== false);

    // Só olha a URL se não achar nada no nome
    if (!$is_claro_client && !$is_net_client) {
        if (stripos($url_perfil_low, 'claro') !== false || stripos($url_perfil_low, 'sat') !== false) {
            $is_claro_client = true;
        }
        if (stripos($url_perfil_low, 'cabo') !== false) {
            $is_net_client = true;
        }
    }

    foreach ($planos as $pl) {
        $nome_plano_low = strtolower($pl['nome_plano']);
        $logo_plano = strtolower($pl['logo_perfil'] ?? ''); 
        
        // Se a logo for claro, sky ou vivo, é plano Claro.
        $is_claro_plan = in_array($logo_plano, ['claro.png', 'sky.png', 'vivo.png']) || stripos($nome_plano_low, 'claro') !== false || stripos($nome_plano_low, 'sat') !== false;
        
        // Se a logo for net.png, é plano Net.
        $is_net_plan = ($logo_plano === 'net.png') || preg_match('/\bnet\b/i', $nome_plano_low) || stripos($nome_plano_low, 'cabo') !== false;
        
        // Se a logo for iptv.png, serve para todo mundo
        $is_generico = ($logo_plano === 'iptv.png' || empty($logo_plano));

        if ($is_generico) {
            $planos_filtrados[] = $pl;
            continue;
        }

        if ($is_claro_client && !$is_net_client) {
            // Cliente Claro não vê plano Net
            if ($is_claro_plan) {
                $planos_filtrados[] = $pl;
            }
        } elseif ($is_net_client && !$is_claro_client) {
            // Cliente Net não vê plano Claro
            if ($is_net_plan) {
                $planos_filtrados[] = $pl;
            }
        } else {
            // Se não identificar o cliente, mostra tudo
            $planos_filtrados[] = $pl;
        }
    }
    $planos = $planos_filtrados;
}
// =========================================================================

$msg_erro = "";
$pix_copia_cola = "";
$pix_qr_code = "";
$id_pagamento_gerado = "";

// 5. GERAR PIX AUTOMÁTICO VIA MERCADO PAGO OU ASAAS
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['id_plano'])) {
    $id_plano = (int)$_POST['id_plano'];
    
    $stmtP = $connUser->prepare("SELECT * FROM planos_revenda WHERE id = ? LIMIT 1");
    $stmtP->execute([$id_plano]);
    $planoSel = $stmtP->fetch(PDO::FETCH_ASSOC);
    
    if ($planoSel) {
        $valorPlano = (float)$planoSel['valor'];
        $nomePlano = $planoSel['nome_plano'] ?? 'Plano Premium';
        
        if (!empty($fin['access_token'])) {
            $data_payload = [
                "transaction_amount" => $valorPlano,
                "description" => "Renovacao: " . $cliente['usuario'] . " - " . $nomePlano,
                "payment_method_id" => "pix",
                "payer" => [
                    "email" => !empty($cliente['email']) ? $cliente['email'] : "cliente" . time() . "@email.com",
                    "first_name" => $cliente['nome']
                ]
            ];

            $ch = curl_init("https://api.mercadopago.com/v1/payments");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data_payload));
            curl_setopt($ch, CURLOPT_HTTPHEADER, [
                "Authorization: Bearer " . trim($fin['access_token']),
                "Content-Type: application/json",
                "X-Idempotency-Key: " . uniqid()
            ]);
            $res = curl_exec($ch);
            curl_close($ch);
            
            $json = json_decode($res, true);
            
            if (isset($json['point_of_interaction']['transaction_data'])) {
                $pix_copia_cola = $json['point_of_interaction']['transaction_data']['qr_code'];
                $pix_qr_code = $json['point_of_interaction']['transaction_data']['qr_code_base64'];
                $id_pagamento_gerado = $json['id'];
                $_SESSION['pix_plano_id_' . $id_pagamento_gerado] = $id_plano;
                
                $connUser->prepare("INSERT INTO pagamentos (id_pagamento_mp, usuario_id, status, valor) VALUES (?, ?, 'pending', ?)")->execute([$id_pagamento_gerado, $cliente['usuario'], $valorPlano]);

            } else {
                $msg_erro = "Erro Mercado Pago: " . ($json['message'] ?? $json['cause'][0]['description'] ?? 'Verifique o Token Mercado Pago.');
            }
        } elseif (!empty($fin['access_token_asaas'])) {
            $token_asaas = trim($fin['access_token_asaas']);
            $email_cli = !empty($cliente['email']) ? $cliente['email'] : "cliente" . time() . "@email.com";
            
            $chCust = curl_init("https://www.asaas.com/api/v3/customers?email=" . urlencode($email_cli));
            curl_setopt($chCust, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($chCust, CURLOPT_HTTPHEADER, ["access_token: " . $token_asaas]);
            $resCust = curl_exec($chCust);
            curl_close($chCust);
            $jsonCust = json_decode($resCust, true);

            $asaas_customer_id = "";
            if (!empty($jsonCust['data'][0]['id'])) {
                $asaas_customer_id = $jsonCust['data'][0]['id'];
            } else {
                $cpf_gerado = gerarCPFValido();
                $chNewCust = curl_init("https://www.asaas.com/api/v3/customers");
                curl_setopt($chNewCust, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($chNewCust, CURLOPT_POST, true);
                curl_setopt($chNewCust, CURLOPT_POSTFIELDS, json_encode([
                    "name" => $cliente['nome'],
                    "email" => $email_cli,
                    "cpfCnpj" => $cpf_gerado,
                    "mobilePhone" => !empty($cliente['whatsapp']) ? preg_replace("/[^0-9]/", "", $cliente['whatsapp']) : null
                ]));
                curl_setopt($chNewCust, CURLOPT_HTTPHEADER, [
                    "access_token: " . $token_asaas,
                    "Content-Type: application/json"
                ]);
                $resNewCust = curl_exec($chNewCust);
                curl_close($chNewCust);
                $jsonNewCust = json_decode($resNewCust, true);
                $asaas_customer_id = $jsonNewCust['id'] ?? '';
            }

            if (!empty($asaas_customer_id)) {
                $data_payload = [
                    "customer" => $asaas_customer_id,
                    "billingType" => "PIX",
                    "value" => $valorPlano,
                    "dueDate" => date('Y-m-d', strtotime('+1 day')),
                    "description" => "Renovacao: " . $cliente['usuario'] . " - " . $nomePlano
                ];

                $ch = curl_init("https://www.asaas.com/api/v3/payments");
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_POST, true);
                curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data_payload));
                curl_setopt($ch, CURLOPT_HTTPHEADER, [
                    "access_token: " . $token_asaas,
                    "Content-Type: application/json"
                ]);
                $res = curl_exec($ch);
                curl_close($ch);
                $json = json_decode($res, true);

                if (isset($json['id'])) {
                    $id_pagamento_gerado = $json['id'];
                    $ch2 = curl_init("https://www.asaas.com/api/v3/payments/" . $id_pagamento_gerado . "/pixQrCode");
                    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($ch2, CURLOPT_HTTPHEADER, ["access_token: " . $token_asaas]);
                    $res2 = curl_exec($ch2);
                    curl_close($ch2);
                    $json2 = json_decode($res2, true);

                    if (isset($json2['payload'])) {
                        $pix_copia_cola = $json2['payload'];
                        $pix_qr_code = $json2['encodedImage'];
                        $_SESSION['pix_plano_id_' . $id_pagamento_gerado] = $id_plano;

                        $connUser->prepare("INSERT INTO pagamentos (id_pagamento_mp, usuario_id, status, valor) VALUES (?, ?, 'pending', ?)")->execute([$id_pagamento_gerado, $cliente['usuario'], $valorPlano]);
                        
                    } else {
                        $msg_erro = "Erro ao obter QR Code no Asaas.";
                    }
                } else {
                    $msg_erro = "Erro Asaas: " . ($json['errors'][0]['description'] ?? 'Falha ao criar cobrança.');
                }
            } else {
                $msg_erro = "Erro ao cadastrar cliente no Asaas: " . ($jsonNewCust['errors'][0]['description'] ?? 'Verifique a Chave de API.');
            }
        } else {
            $msg_erro = "Nenhuma API de pagamento automático está configurada. Utilize o PIX manual.";
        }
    } else {
        $msg_erro = "Plano não encontrado.";
    }
}

// LÓGICA DE CORREÇÃO DE DATA
$venc_raw = $cliente['data_premio'] ?? '';
$venc_ts_cli = is_numeric($venc_raw) ? (int)$venc_raw : strtotime(str_replace('/', '-', $venc_raw));
if (!$venc_ts_cli) $venc_ts_cli = time(); // fallback de segurança

$url_limpa = "checkout.php?r=" . urlencode($revB64) . "&c=" . urlencode($cliB64);

$tem_pix = (!empty($fin['access_token']) || !empty($fin['access_token_asaas']));
$tem_manual = (!empty($fin['dados_bancarios']));
?>
<!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>Checkout de Pagamento PIX</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <style>
        body { 
            background-color: #f4f6fb; 
            font-family: 'Segoe UI', sans-serif; 
            margin: 0; 
            padding: 0; 
            color: #333; 
        }

        /* --- Estilo do Topo Azul (Igual a Foto) --- */
        .top-bg { 
            background: linear-gradient(135deg, #0d47a1, #1976d2); 
            padding-bottom: 50px; 
            border-bottom-left-radius: 40px; 
            border-bottom-right-radius: 40px; 
        }
        
        .user-card { 
            background: rgba(0, 0, 0, 0.15); 
            backdrop-filter: blur(8px); 
            border-radius: 20px; 
            color: white; 
            padding: 25px; 
            margin: 0 20px; 
            position: relative; 
            border: 1px solid rgba(255,255,255,0.2); 
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
        }
        
        .operadoras-box { 
            background: rgba(255, 255, 255, 0.1); 
            border-radius: 12px; 
            padding: 12px; 
            margin-top: 15px; 
        }

        /* --- Estilo dos Cards Brancos de Plano (Igual a Foto) --- */
        .plan-card { 
            background: #fff; 
            border-radius: 20px; 
            padding: 30px 20px; 
            text-align: center; 
            box-shadow: 0 8px 25px rgba(0,0,0,0.05); 
            margin: 0 20px 25px 20px; 
            border: 1px solid #eee; 
        }
        
        .plan-logo { 
            width: 70px; 
            height: 70px; 
            object-fit: contain; 
            margin-bottom: 15px; 
            border-radius: 50%; 
        }
        
        .plan-title { 
            color: #6c757d; 
            font-size: 0.95rem; 
            font-weight: 600; 
            text-transform: uppercase; 
            letter-spacing: 1px; 
        }
        
        .plan-price { 
            color: #0d47a1; 
            font-size: 3rem; 
            font-weight: 800; 
            margin: 10px 0; 
        }
        
        .plan-days { 
            background: #e9ecef; 
            color: #495057; 
            border-radius: 30px; 
            padding: 6px 18px; 
            font-size: 0.85rem; 
            font-weight: 700; 
            display: inline-block; 
            margin-bottom: 25px; 
        }

        /* --- Estilo dos Botões (Igual a Foto) --- */
        .btn-action { 
            width: 100%; 
            padding: 14px; 
            border-radius: 12px; 
            font-weight: bold; 
            font-size: 1rem; 
            border: none; 
            transition: 0.2s; 
            margin-bottom: 12px; 
            display: flex; 
            align-items: center; 
            justify-content: center; 
        }
        
        .btn-disabled { 
            background: #e0e0e0; 
            color: #a1a1a1; 
            cursor: not-allowed; 
        }
        
        .btn-pix { 
            background: #00c853; 
            color: white; 
        }
        .btn-pix:hover { 
            background: #00b248; 
            color: white; 
        }
        
        .btn-manual { 
            background: #6c757d; 
            color: #fff; 
        }
        .btn-manual:hover { 
            background: #5c636a; 
            color: #fff; 
        }

        /* Botão Sair / Fechar no Header */
        .btn-fechar { 
            color: white; 
            text-decoration: none; 
            font-weight: bold; 
            font-size: 1.1rem; 
            opacity: 0.9;
        }
        .btn-fechar:hover { opacity: 1; color: white; }
    </style>
</head>
<body>

<!-- TOPO AZUL (IGUAL A FOTO) -->
<div class="top-bg">
    <div class="text-end pt-3 pe-4 pb-2">
        <a href="javascript:void(0)" onclick="window.close(); window.location.href='https://google.com';" class="btn-fechar">
            <i class="fas fa-sign-out-alt"></i> Sair
        </a>
    </div>
    
    <div class="user-card shadow-lg">
        <div class="text-center">
            <i class="fas fa-user-circle fa-3x mb-2"></i>
            <h3 class="fw-bold mb-0"><?= htmlspecialchars($cliente['nome'] ?? '---') ?></h3>
            <span class="text-white-50 small">User: <?= htmlspecialchars($cliente['usuario']) ?></span>
        </div>
        
        <div class="d-flex justify-content-center align-items-center mt-3 mb-2 gap-2">
            <i class="far fa-calendar-alt"></i>
            <span class="fw-bold">Vence: <?= date('d/m/Y', $venc_ts_cli) ?></span>
            
            <?php 
                if(date('Y-m-d', $venc_ts_cli) < date('Y-m-d')): 
            ?>
                <span class="badge bg-danger px-2 py-1 rounded">Vencido</span>
            <?php else: ?>
                <span class="badge bg-success px-2 py-1 rounded">Ativo</span>
            <?php endif; ?>
        </div>
        
        <div class="operadoras-box">
            <div class="text-center fw-bold small mb-2 text-white-50 border-bottom border-light border-opacity-25 pb-1">Operadoras Disponíveis</div>
            <div class="d-flex align-items-center justify-content-center gap-2 small text-light pb-1">
                <?php 
                    $logo_op = "fas fa-tv text-light";
                    $ident_vis = strtolower($nome_perfil . ' ' . $url_perfil);
                    if(stripos($ident_vis, 'claro') !== false || stripos($ident_vis, 'sat') !== false) $logo_op = "fas fa-satellite-dish text-danger";
                    if(stripos($ident_vis, 'net') !== false || stripos($ident_vis, 'cabo') !== false) $logo_op = "fas fa-network-wired text-info";
                ?>
                <i class="<?= $logo_op ?>"></i>
                <span>URL: <?= htmlspecialchars($url_perfil) ?> | Porta: <?= htmlspecialchars($porta_perfil) ?></span>
            </div>
        </div>
    </div>
</div>

<div style="margin-top: -20px; position: relative; z-index: 10;" id="painelPrincipal">

    <?php if(!empty($msg_erro)): ?>
        <div class="alert alert-danger text-center border-0 mb-4 shadow-sm p-3 mx-4" style="border-radius: 15px;">
            <i class="fas fa-exclamation-triangle fa-2x mb-2 d-block text-danger"></i>
            <strong>Erro!</strong> <?= $msg_erro ?>
        </div>
    <?php endif; ?>

    <?php if (!empty($pix_copia_cola)): ?>
        
        <!-- TELA DO PIX GERADO -->
        <div class="plan-card shadow-lg mt-4">
            <h4 class="text-primary fw-bold mb-2"><i class="fas fa-qrcode"></i> Pague com PIX</h4>
            <p class="text-muted small mb-4">Abra o app do seu banco e escaneie o QR Code ou copie o código abaixo.</p>
            
            <span class="badge bg-info p-2 mb-3 fs-6 w-100 rounded-pill"><i class="fas fa-spinner fa-spin me-1"></i> Aguardando Pagamento...</span>

            <?php if(!empty($pix_qr_code)): ?>
                <div class="text-center mb-4">
                    <img src="data:image/jpeg;base64,<?= $pix_qr_code ?>" class="img-fluid rounded border border-2 p-2 shadow-sm" style="max-width: 220px;">
                </div>
            <?php endif; ?>

            <div class="mb-3 text-start">
                <label class="small text-muted fw-bold d-block mb-1 ms-1">CÓDIGO PIX COPIA E COLA:</label>
                <input type="text" readonly id="pixInput" class="form-control text-center bg-light text-dark fw-bold p-3 border-secondary border-opacity-25" style="border-radius: 12px; font-size: 0.9rem;" value="<?= htmlspecialchars($pix_copia_cola) ?>">
            </div>

            <button type="button" class="btn-action btn-pix shadow-sm" onclick="copiarPix()">
                <i class="fas fa-copy me-2"></i> COPIAR CÓDIGO PIX
            </button>

            <a href="<?= $url_limpa ?>" class="btn-action btn-disabled text-decoration-none mt-2" onclick="fecharPix()">
                <i class="fas fa-times me-2"></i> CANCELAR / VOLTAR
            </a>
        </div>

        <script>
            let timerCheck = null;

            function copiarPix() {
                const copyText = document.getElementById("pixInput");
                copyText.select();
                document.execCommand("copy");
                alert("Código PIX Copiado com Sucesso!");
            }

            function fecharPix() {
                if (timerCheck) clearInterval(timerCheck);
            }

            const idPagamento = "<?= $id_pagamento_gerado ?>";
            const urlChecar = "checkout.php?r=<?= urlencode($revB64) ?>&c=<?= urlencode($cliB64) ?>&checar_status=" + idPagamento + "&t=" + new Date().getTime();

            timerCheck = setInterval(() => {
                fetch(urlChecar)
                .then(r => r.json())
                .then(data => {
                    if (data.status === 'approved') {
                        clearInterval(timerCheck);
                        
                        document.getElementById('painelPrincipal').innerHTML = `
                            <div class="plan-card shadow-lg mt-4 text-center py-5">
                                <i class="fas fa-check-circle text-success mb-3" style="font-size: 5rem;"></i>
                                <h3 class="text-dark fw-bold">Pagamento Aprovado!</h3>
                                <p class="text-muted fs-5">Seu acesso foi renovado com sucesso.</p>
                                
                                <div class="alert alert-success mt-4 border-0 shadow-sm fw-bold rounded-pill">
                                    <i class="fas fa-paper-plane me-2"></i> Comprovante enviado ao seu WhatsApp.
                                </div>

                                <a href="<?= $url_limpa ?>" class="btn-action btn-manual mt-4 text-decoration-none">
                                    <i class="fas fa-home me-2"></i> VOLTAR AO INÍCIO
                                </a>
                            </div>
                        `;
                    }
                })
                .catch(err => console.log('Aguardando...'));
            }, 3000);
        </script>

    <?php else: ?>

        <!-- TELA DOS PLANOS -->
        <?php if(empty($planos)): ?>
            <div class="plan-card">
                <i class="fas fa-exclamation-triangle fa-3x text-warning mb-3"></i>
                <h5 class="text-dark fw-bold mb-1">Nenhum Plano</h5>
                <p class="text-muted small mb-0">O revendedor ainda não configurou os planos de acesso.</p>
            </div>
        <?php else: ?>
            
            <form method="POST" action="<?= $url_limpa ?>">
                <?php foreach($planos as $pl): ?>
                    <div class="plan-card">
                        
                        <!-- Logo do Plano -->
                        <?php if(!empty($pl['logo_perfil'])): ?>
                            <img src="img/<?= htmlspecialchars($pl['logo_perfil']) ?>" class="plan-logo shadow-sm" onerror="this.src='img/default.png'">
                        <?php else: ?>
                            <div class="plan-logo shadow-sm d-flex align-items-center justify-content-center bg-light text-primary mx-auto"><i class="fas fa-tv fa-2x"></i></div>
                        <?php endif; ?>
                        
                        <!-- Nome e Valor -->
                        <div class="plan-title"><?= htmlspecialchars($pl['nome_plano']) ?></div>
                        <div class="plan-price">R$ <?= number_format((float)$pl['valor'], 2, ',', '.') ?></div>
                        
                        <!-- Badge Dias -->
                        <div class="plan-days shadow-sm">
                            <i class="fas fa-clock text-secondary me-1"></i> <?= $pl['dias'] ?> DIAS DE ACESSO
                        </div>

                        <!-- Botão PIX -->
                        <?php if($tem_pix): ?>
                            <button type="submit" name="id_plano" value="<?= $pl['id'] ?>" class="btn-action btn-pix shadow-sm">
                                <i class="fas fa-qrcode me-2"></i> PAGAR COM PIX
                            </button>
                        <?php else: ?>
                            <button type="button" class="btn-action btn-disabled shadow-sm" disabled>
                                <i class="fas fa-ban me-2"></i> Pagamento Indisponível
                            </button>
                        <?php endif; ?>

                        <!-- Botão Manual -->
                        <?php if($tem_manual): ?>
                            <button type="button" class="btn-action btn-manual shadow-sm" onclick="abrirManual()">
                                <i class="fas fa-university me-2"></i> DEPÓSITO MANUAL
                            </button>
                        <?php endif; ?>

                    </div>
                <?php endforeach; ?>
            </form>

        <?php endif; ?>

    <?php endif; ?>
</div>

<!-- MODAL PARA EXIBIR OS DADOS DO DEPÓSITO MANUAL -->
<div class="modal fade" id="modalManual" tabindex="-1">
  <div class="modal-dialog modal-dialog-centered">
    <div class="modal-content border-0" style="border-radius: 20px;">
      <div class="modal-header border-0 pb-0">
        <h5 class="modal-title fw-bold text-dark"><i class="fas fa-university text-primary me-2"></i> Dados para Depósito</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <div class="modal-body pt-2">
        <p class="small text-muted mb-3">Realize a transferência para os dados abaixo e envie o comprovante no WhatsApp do suporte.</p>
        <div class="p-3 bg-light rounded text-dark border border-secondary border-opacity-25" style="white-space: pre-line; font-size: 0.95rem;">
            <?= htmlspecialchars($fin['dados_bancarios'] ?? '') ?>
        </div>
      </div>
      <div class="modal-footer border-0 pt-0">
        <button type="button" class="btn-action btn-manual m-0 w-100 py-3 rounded-pill" data-bs-dismiss="modal">Fechar</button>
      </div>
    </div>
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
    function abrirManual() {
        var myModal = new bootstrap.Modal(document.getElementById('modalManual'));
        myModal.show();
    }
</script>
</body>
</html>
