<?php
/**
 * Script de prueba para verificar la conectividad con KamiPay API
 * Ejecutar desde línea de comandos o navegador para verificar configuración
 */

require_once '../configs.php';
require_once 'KamiPayAPI.php';

echo "<h1>KamiPay API Test</h1>\n";
echo "<pre>\n";

// Test 1: Verificar configuración
echo "=== TEST 1: CONFIGURACIÓN ===\n";
echo "Modo: " . ($kamipay_mode == 0 ? 'DESARROLLO' : 'PRODUCCIÓN') . "\n";
echo "Base URL: " . ($kamipay_mode == 0 ? 'https://devnakamotoapi2.kamipay.io' : 'https://api2.kamipay.io') . "\n";
echo "Wallet Address: " . $kamipay_wallet_address . "\n";
echo "Webhook URL: " . $kamipay_webhook_url . "\n\n";

// Test 2: Instanciar KamiPay API
echo "=== TEST 2: INSTANCIACIÓN ===\n";
try {
    $kamiPay = new KamiPayAPI($kamipay_mode == 0);
    echo "✅ KamiPayAPI instanciado correctamente\n\n";
} catch (Exception $e) {
    echo "❌ Error instanciando KamiPayAPI: " . $e->getMessage() . "\n\n";
    exit();
}

// Test 3: Autenticación
echo "=== TEST 3: AUTENTICACIÓN ===\n";
$authResult = $kamiPay->authenticate();
if ($authResult) {
    echo "✅ Autenticación exitosa\n";
} else {
    echo "❌ Error en autenticación\n";
    echo "Verificar credenciales en configs.php y KamiPayAPI.php\n\n";
}

// Test 4: Oracle (cotización)
echo "=== TEST 4: ORACLE (COTIZACIÓN) ===\n";
try {
    $oracle = $kamiPay->getOracle('USDTBRL', 'charge', 10.0);
    if ($oracle) {
        echo "✅ Oracle funcionando correctamente\n";
        echo "Cotización para $10 USD:\n";
        echo "- Total BRL: R$ " . number_format($oracle['total_brl'], 2, ',', '.') . "\n";
        echo "- Total USDT: " . $oracle['total_usdt'] . "\n";
        echo "- Rate: " . $oracle['rate'] . "\n";
        echo "- Timeout: " . $oracle['timeout'] . " segundos\n\n";
    } else {
        echo "❌ Error obteniendo cotización\n\n";
    }
} catch (Exception $e) {
    echo "❌ Error en Oracle: " . $e->getMessage() . "\n\n";
}

// Test 5: Crear QR PIX de prueba (opcional)
echo "=== TEST 5: CREAR QR PIX (PRUEBA) ===\n";
if ($authResult && isset($oracle) && $oracle) {
    try {
        echo "⚠️  NOTA: Esto creará un QR PIX real en modo desarrollo\n";
        echo "¿Continuar? Descomenta la línea siguiente si estás seguro\n";
        
        // Descomenta la siguiente línea para crear QR de prueba
        // $pixData = $kamiPay->createPixQR($kamipay_wallet_address, 15.0, 300, 'TEST_' . time());
        
        if (isset($pixData) && $pixData) {
            echo "✅ QR PIX creado exitosamente\n";
            echo "- Operation ID: " . $pixData['operation_id'] . "\n";
            echo "- Amount BRL: R$ " . number_format($pixData['amount_brl'], 2, ',', '.') . "\n";
            echo "- Amount USDT: " . $pixData['amount_usdt'] . "\n";
            echo "- EMV Code: " . substr($pixData['emv'], 0, 50) . "...\n";
            echo "- Expiration: " . date('Y-m-d H:i:s', $pixData['expiration']) . "\n\n";
        } else {
            echo "ℹ️  Creación de QR PIX omitida (descomenta para probar)\n\n";
        }
    } catch (Exception $e) {
        echo "❌ Error creando QR PIX: " . $e->getMessage() . "\n\n";
    }
} else {
    echo "⏭️  Saltando test de QR PIX (autenticación o oracle falló)\n\n";
}

// Test 6: Verificar base de datos
echo "=== TEST 6: BASE DE DATOS ===\n";
try {
    // Verificar tablas
    $tables = ['kamipay_transactions', 'kamipay_webhook_logs'];
    
    foreach ($tables as $table) {
        $stmt = $pdo->prepare("SHOW TABLES LIKE ?");
        $stmt->execute([$table]);
        
        if ($stmt->rowCount() > 0) {
            echo "✅ Tabla '$table' existe\n";
            
            // Contar registros
            $stmt = $pdo->prepare("SELECT COUNT(*) as count FROM $table");
            $stmt->execute();
            $count = $stmt->fetch(PDO::FETCH_ASSOC)['count'];
            echo "   - Registros: $count\n";
        } else {
            echo "❌ Tabla '$table' NO existe\n";
            echo "   - Ejecutar: kamipay/database.sql\n";
        }
    }
    echo "\n";
} catch (PDOException $e) {
    echo "❌ Error verificando base de datos: " . $e->getMessage() . "\n\n";
}

// Test 7: Verificar archivos y permisos
echo "=== TEST 7: ARCHIVOS Y PERMISOS ===\n";
$files = [
    'KamiPayAPI.php',
    'pix_payment.php',
    'check_status.php',
    'webhook.php',
    '../kamipay_log.txt',
    '../kamipay_webhook.log'
];

foreach ($files as $file) {
    if (file_exists($file)) {
        $perms = fileperms($file);
        $readable = is_readable($file) ? '✅' : '❌';
        $writable = is_writable($file) ? '✅' : '❌';
        echo "$readable$writable $file\n";
    } else {
        if (strpos($file, '.log') !== false) {
            // Intentar crear archivos de log
            if (touch($file)) {
                echo "✅📝 $file (creado)\n";
            } else {
                echo "❌ $file (no se pudo crear)\n";
            }
        } else {
            echo "❌ $file (no existe)\n";
        }
    }
}

echo "\n=== RESUMEN ===\n";
echo "1. Verificar que todos los tests pasen ✅\n";
echo "2. Configurar credenciales reales en configs.php\n";
echo "3. Configurar webhook URL con KamiPay\n";
echo "4. Cambiar a modo producción cuando esté listo\n";
echo "5. Monitorear logs inicialmente\n\n";

echo "Test completado: " . date('Y-m-d H:i:s') . "\n";
echo "</pre>\n";
?>
