######## pagaai.cadtech.com.br ######## FILES: . , .. , .env , .git , .gitignore , .next , .well-known , AGENTS.md , CLAUDE.md , README.md , check_users.ts , eslint.config.mjs , fix_sessions.ts , next-env.d.ts , next.config.ts , node_modules , package-lock.json , package.json , prisma , public , seed.ts , src , test.js , test_jwt.ts , test_prisma.js , tsconfig.json , upgrade_to_saas.ts ---- .env ---- DATABASE_URL="file:./dev.db" # Insira suas credenciais abaixo: MP_ACCESS_TOKEN="APP_USR-6684249455818074-102420-2bafe6fb494c5282bdc5712d93aa29aa-1933348384" EVOLUTION_API_URL="http://75.119.156.103:8080" EVOLUTION_API_KEY="PQVZ3A4F779NXHNNH7770BI447DRI7C0" # Defina a URL base pública do seu site quando hospedar para o webhook funcionar NEXT_PUBLIC_BASE_URL="https://pagaai.cadtech.com.br" ---- tsconfig.json ---- { "compilerOptions": { "target": "ES2017", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "react-jsx", "incremental": true, "plugins": [ { "name": "next" } ], "paths": { "@/*": ["./src/*"] } }, "include": [ "next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", ".next/dev/types/**/*.ts", "**/*.mts" ], "exclude": ["node_modules"] } SUBDIR src/lib: . , .. , prisma.ts , session.ts , whatsapp.ts ######## pagaairs.cadtech.com.br ######## FILES: . , .. , .env , .gitignore , .next , .user.ini , AGENTS.md , CLAUDE.md , MainWrapper.tsx , README.md , ServiceWorkerRegister.tsx , Sidebar.tsx , SidebarContext.tsx , check_users.js , check_users.ts , clean_page.js , ecosystem.config.cjs , eslint.config.mjs , fix_sessions.ts , globals.css , iniciar_projeto.bat , layout.tsx , manifest.ts , middleware.ts , next-env.d.ts , next.config.ts , node_modules , package-lock.json , package.json , page.module.css , page.tsx , prisma , prisma.ts , public , route.ts , seed.ts , session.ts , src , test.js , test_jwt.ts , test_prisma.js , tsconfig.json , tsconfig.tsbuildinfo , upgrade_to_saas.ts , whatsapp.ts ---- .env ---- DATABASE_URL="file:./dev.db" # Insira suas credenciais abaixo: MP_ACCESS_TOKEN="APP_USR-6684249455818074-102420-2bafe6fb494c5282bdc5712d93aa29aa-1933348384" EVOLUTION_API_URL="http://75.119.156.103:8080" EVOLUTION_API_KEY="PQVZ3A4F779NXHNNH7770BI447DRI7C0" # Defina a URL base pública do seu site quando hospedar para o webhook funcionar NEXT_PUBLIC_BASE_URL="https://pagaai.cadtech.com.br" ---- clean_page.js ---- const fs = require('fs'); const file = 'src/app/group/[id]/page.tsx'; let content = fs.readFileSync(file, 'utf8'); content = content.replace(/const \[newPlayerPosition, setNewPlayerPosition\] = useState\(''\);\n?/g, ''); content = content.replace(/const \[editPlayerPosition, setEditPlayerPosition\] = useState\(''\);\n?/g, ''); content = content.replace(/stars:\s*3,\s*position:\s*newPlayerPosition,?\n?/g, ''); content = content.replace(/setNewPlayerPosition\(''\);\n?/g, ''); content = content.replace(/setEditPlayerPosition\(player\.position \|\| ''\);\n?/g, ''); content = content.replace(/stars:\s*3,\s*position:\s*editPlayerPosition,?\n?/g, ''); content = content.replace(/
\n ... ---- whatsapp_api.php ---- 'Instância do WhatsApp não configurada. Conecte pelo painel.']; } // Tratamento de número com DDI 55 $numero = preg_replace('/[^0-9]/', '', (string)$numero); $numero = ltrim($numero, '0'); if (strlen($numero) <= 11) { $numero = '55' . $numero; } // Endpoint de envio de mensagem de texto na Evolution API v2 $url = $baseUrl . '/message/sendText/' . urlencode($instanceName); $ch = curl_init($url); // Payload no formato esperado pela Evolution API v2 $payload = json_encode([ 'number' => $numero, 'options' => [ 'delay' => 1200, 'presence' => 'composing', 'linkPreview' => false ], 'text' => $mensagem ]); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'apikey: ' . $apiKey, 'Content-Type: application/json' ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 8); curl_setopt($ch, CURLOPT_TIMEOUT, 15); // Ignorar verificação de SSL caso mude para HTTPS sem certificado válido curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $response = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if ($error) return ['error' => $error]; return json_decode($response, true); } ?> ---- whatsapp_api1.php ---- $numero, 'text' => $mensagem ]); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer ' . $apiKey, 'Content-Type: application/json' ]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); $response = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if ($error) return ['error' => $error]; return json_decode($response, true); } ?> SUBDIR api: . , .. , .adb.db , .bet_tmdb.db , .db.db , .db_ads.db , .db_bg.db , .db_logo.db , .htaccess , .qr.db , 1msg.php , add.php , ads.php , ads2.php , ads3.php , allads.php , allads1.php , allads2.php , arquivos originais , ativar.php , auth.php , backdrop.php , betstyle.css , bg.php , bloqueado.m3u , cache , cf.php , connection_log.json , contato.php , db , device_keys.json , dump.php , dump.py , edit_texto.php , esporte.php , evolution_api.php , evolution_config.json , getappuser.php , hub_db.php , hub_receiver.php , hub_worker.php , index.php , integracao , key.php , logo.php , m3u_padrao.json , m3u_proxy.php , main_movies.php , manual_ads.php , mercado_pago_gold , message.php , movies.php , movies_script.js , msg.php , music_manifest.json , pagamento.php , pagamento1.php , payment , play_msg.php , playlist.php , qr , qr.php , qrcode.php , renovar , salvar_mensagem.php , setting.php , sport.php , sportjr.php , test_exec.php , theme_change , tmdb.php , tmdb.php00 , update.php , vencido.php , video-ads.php , webview.php , webview2.php , webview3 (1).php , webview3.php , xc_proxy.php ---- api/connection_log.json ---- [ { "mac_address": "0F:EE:F7:F6:55:C4", "date": "2026-08-03 23:51:20", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=0F%3AEE%3AF7%3AF6%3A55%3AC4&username=151415&password=495667" }, { "mac_address": "0F:EE:F7:F6:55:C4", "date": "2026-08-03 23:51:20", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=0F%3AEE%3AF7%3AF6%3A55%3AC4&username=151415&password=495667" }, { "mac_address": "0F:EE:F7:F6:55:C4", "date": "2026-08-04 21:38:22", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=0F%3AEE%3AF7%3AF6%3A55%3AC4&username=6484650&password=2449974" }, { "mac_address": "0F:EE:F7:F6:55:C4", "date": "2026-08-04 21:38:22", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=0F%3AEE%3AF7%3AF6%3A55%3AC4&username=151415&password=495667" }, { "mac_address": "0F:EE:F7:F6:55:C4", "date": "2026-08-04 21:38:22", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=0F%3AEE%3AF7%3AF6%3A55%3AC4&username=151415&password=495667" }, { "mac_address": "89:DD:F9:48:ED:E8", "date": "2026-08-05 09:49:10", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=89%3ADD%3AF9%3A48%3AED%3AE8&username=6484650&password=2449974" }, { "mac_address": "89:DD:F9:48:ED:E8", "date": "2026-08-05 09:49:10", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=89%3ADD%3AF9%3A48%3AED%3AE8&username=356365&password=265033" }, { "mac_address": "89:DD:F9:48:ED:E8", "date": "2026-08-05 09:49:10", "url_accessed": "https:\/\/admhibrido.cadtech.com.br\/api\/m3u_proxy.php?mac=89%3ADD%3AF9%3A48%3AED%3AE8&username=356365&password=265033" }, { "mac_address": "89:DD:F9:48:ED:E8", ... ---- api/device_keys.json ---- { "": "d41d8cd9", "C4:AA:19:66:60:0C": "ebfd4cfa", "89:DD:F9:48:ED:E8": "0566b915", "0F:EE:F7:F6:55:C4": "21d841fc", "32:90:49:85:B6:F8": "fe79ac40", "89:AC:DF:5F:B0:A7": "acd9b5f5", "77:C1:81:4B:A0:BF": "cda6b70c", "58:D8:28:3D:33:44": "b7fcb93d" } ---- api/evolution_api.php ---- busyTimeout(5000); // Tabela de Tokens (Projetos permitidos) $db->exec("CREATE TABLE IF NOT EXISTS hub_tokens ( id INTEGER PRIMARY KEY AUTOINCREMENT, project_name TEXT NOT NULL, token TEXT NOT NULL UNIQUE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP )"); // Tabela de Fila de Mensagens $db->exec("CREATE TABLE IF NOT EXISTS hub_queue ( id INTEGER PRIMARY KEY AUTOINCREMENT, token_id INTEGER, phone_number TEXT NOT NULL, message TEXT NOT NULL, status TEXT DEFAULT 'pending', -- pending, processing, sent, failed response TEXT, retries INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (token_id) REFERENCES hub_tokens(id) )"); // Garante coluna retries em bancos antigos @$db->exec("ALTER TABLE hub_queue ADD COLUMN retries INTEGER DEFAULT 0"); // Destrava mensagens presas em 'processing' há mais de 3 minutos @$db->exec("UPDATE hub_queue SET status = 'pending', updated_at = CURRENT_TIMESTAMP WHERE status = 'processing' AND datetime(updated_at) <= datetime('now', '-3 minutes')"); // Reenfileira automaticamente mensagens das últimas 24h que falharam apenas por timeout/queda de socket (até 3 tentativas) @$db->exec("UPDATE hub_queue SET status = 'pending', retries = COALESCE(retries, 0) + 1, updated_at = CURRENT_TIMESTAMP WHERE status = 'failed' AND (response LIKE '%cURL Error%' OR response LIKE '%Connection Closed%' OR response LIKE '%timed out%') AND COALESCE(retries, 0) < 3 AND datetime(created_at) >= datetime('now', '-24 hours')"); return $db; } ?> ---- api/key.php ---- ---- api/pagamento.php ----
| Código | Desconto | Ação |
|---|