🔍 Diagnóstico WhatsApp API

"; // 1. Verificar configuraciones echo "

📋 Configuración Actual

"; $config_items = [ 'WHATSAPP_TOKEN' => WHATSAPP_TOKEN, 'WHATSAPP_PHONE_NUMBER_ID' => WHATSAPP_PHONE_NUMBER_ID, 'WHATSAPP_API_URL' => WHATSAPP_API_URL, 'WEBHOOK_VERIFY_TOKEN' => WEBHOOK_VERIFY_TOKEN ]; foreach ($config_items as $key => $value) { $status = ''; if ($key === 'WHATSAPP_TOKEN') { $display_value = substr($value, 0, 20) . '...'; $status = ($value !== 'TU_TOKEN_DE_WHATSAPP_AQUI' && !empty($value)) ? "✅ Configurado" : "❌ No configurado"; } elseif ($key === 'WHATSAPP_PHONE_NUMBER_ID') { $display_value = $value; $status = ($value !== 'TU_PHONE_ID_AQUI' && !empty($value)) ? "✅ Configurado" : "❌ No configurado"; } else { $display_value = $value; $status = !empty($value) ? "✅ Configurado" : "❌ No configurado"; } echo ""; } echo "
ParámetroValorEstado
$key$display_value$status
"; // 2. Verificar conexión a base de datos echo "

🗄️ Base de Datos

"; try { $db = Database::getInstance(); echo "

✅ Conexión a base de datos exitosa

"; // Verificar tabla system_config try { $configs = $db->fetchAll("SELECT config_key, config_value FROM system_config WHERE config_key IN ('whatsapp_token', 'whatsapp_phone_number_id', 'whatsapp_api_url')"); if (!empty($configs)) { echo "

Configuración en BD:

"; echo ""; echo ""; foreach ($configs as $config) { $display = ($config['config_key'] === 'whatsapp_token') ? substr($config['config_value'], 0, 20) . '...' : $config['config_value']; echo ""; } echo "
ClaveValor
" . htmlspecialchars($config['config_key']) . "" . htmlspecialchars($display) . "
"; } else { echo "

⚠️ No hay configuración de WhatsApp en la base de datos

"; } } catch (Exception $e) { echo "

⚠️ Tabla system_config no encontrada: " . $e->getMessage() . "

"; } } catch (Exception $e) { echo "

❌ Error de base de datos: " . $e->getMessage() . "

"; } echo "
"; // 3. Probar conectividad con Facebook Graph API echo "

🌐 Conectividad Facebook Graph API

"; if (WHATSAPP_TOKEN !== 'TU_TOKEN_DE_WHATSAPP_AQUI' && WHATSAPP_PHONE_NUMBER_ID !== 'TU_PHONE_ID_AQUI') { // Prueba 1: Verificar el Phone Number ID echo "

📞 Verificación del Phone Number ID

"; $ch = curl_init(); $url = WHATSAPP_API_URL . WHATSAPP_PHONE_NUMBER_ID; $headers = [ 'Authorization: Bearer ' . WHATSAPP_TOKEN, 'Content-Type: application/json' ]; curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_TIMEOUT => 15, CURLOPT_SSL_VERIFYPEER => true ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); echo "

URL: $url

"; echo "

HTTP Code: $httpCode

"; if ($error) { echo "

❌ Error cURL: $error

"; } else { $decoded = json_decode($response, true); if ($httpCode === 200) { echo "

✅ Phone Number ID válido

"; echo "

Información del número:

"; echo "
" . json_encode($decoded, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "
"; } else { echo "

❌ Phone Number ID inválido o sin permisos

"; echo "

Respuesta de la API:

"; echo "
" . json_encode($decoded, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "
"; if (isset($decoded['error'])) { echo "
"; echo "

Detalles del error:

"; echo "

Mensaje: " . htmlspecialchars($decoded['error']['message'] ?? 'N/A') . "

"; echo "

Tipo: " . htmlspecialchars($decoded['error']['type'] ?? 'N/A') . "

"; echo "

Código: " . htmlspecialchars($decoded['error']['code'] ?? 'N/A') . "

"; if (isset($decoded['error']['error_subcode'])) { echo "

Subcódigo: " . htmlspecialchars($decoded['error']['error_subcode']) . "

"; } echo "
"; } } } // Prueba 2: Verificar permisos del token echo "

🔑 Verificación de permisos del token

"; $ch = curl_init(); $debugUrl = "https://graph.facebook.com/debug_token?input_token=" . WHATSAPP_TOKEN . "&access_token=" . WHATSAPP_TOKEN; curl_setopt_array($ch, [ CURLOPT_URL => $debugUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15, CURLOPT_SSL_VERIFYPEER => true ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); if (!$error && $httpCode === 200) { $decoded = json_decode($response, true); if (isset($decoded['data'])) { echo "

Información del token:

"; echo "
" . json_encode($decoded['data'], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "
"; } } else { echo "

⚠️ No se pudo verificar el token: $error

"; } } else { echo "

❌ Token o Phone Number ID no configurados correctamente

"; } echo "
"; // 4. Recomendaciones echo "

💡 Recomendaciones y Soluciones

"; $recommendations = []; if (WHATSAPP_TOKEN === 'TU_TOKEN_DE_WHATSAPP_AQUI') { $recommendations[] = "❌ Configure el token de WhatsApp: Vaya a la configuración del sistema y ingrese su token de WhatsApp Business API."; } if (WHATSAPP_PHONE_NUMBER_ID === 'TU_PHONE_ID_AQUI') { $recommendations[] = "❌ Configure el Phone Number ID: Vaya a la configuración del sistema y ingrese su Phone Number ID."; } if (WHATSAPP_PHONE_NUMBER_ID === '858157464051987') { $recommendations[] = "⚠️ Phone Number ID problemático: El ID '858157464051987' está generando errores. Verifique que: "; } $recommendations[] = "✅ Verificar en Meta for Developers: "; $recommendations[] = "🔧 Pasos para resolver el error:
  1. Verifique que el Phone Number ID sea correcto
  2. Asegúrese de que el token tenga permisos para el número
  3. Verifique que la aplicación esté aprobada para producción
  4. Compruebe que el número esté verificado en Meta Business
"; foreach ($recommendations as $rec) { echo "
$rec
"; } echo "
"; echo "

🛠️ Acciones Rápidas

⚙️ Ir a Configuración 📱 Configurar WhatsApp 🧪 Probar API
"; echo "
"; ?>