<?php
/**
 * Endpoint que simula el comportamiento de: https://api.pagopar.com/api/pedidos/1.1/traer
 * Para validación del Paso 3
 */

// Headers estándar
http_response_code(200);
header('Content-Type: application/json; charset=utf-8');

// Headers de tracing
if (isset($_SERVER['HTTP_TRACEPARENT'])) {
    header('traceparent: ' . $_SERVER['HTTP_TRACEPARENT']);
}
if (isset($_SERVER['HTTP_TRACESTATE'])) {
    header('tracestate: ' . $_SERVER['HTTP_TRACESTATE']);
}

$method = $_SERVER['REQUEST_METHOD'] ?? 'POST';
$numero_pedido = null;
$private_key = null;

if ($method === 'POST') {
    $input = file_get_contents('php://input');
    
    // Intentar JSON primero
    $data = json_decode($input, true);
    if ($data) {
        $numero_pedido = $data['numero_pedido'] ?? null;
        $private_key = $data['private_key'] ?? null;
    } else {
        // Si no es JSON, probar form-data
        parse_str($input, $post_data);
        $numero_pedido = $post_data['numero_pedido'] ?? $_POST['numero_pedido'] ?? null;
        $private_key = $post_data['private_key'] ?? $_POST['private_key'] ?? null;
    }
}

// Log detallado
$timestamp = date('Y-m-d H:i:s.u');
if (!is_dir('logs')) mkdir('logs', 0755, true);
file_put_contents('logs/api_pedidos_traer.log', 
    $timestamp . " - API PEDIDOS TRAER\n" . 
    "Method: " . $method . "\n" .
    "Numero Pedido: " . ($numero_pedido ?? 'NONE') . "\n" .
    "Private Key: " . ($private_key ? substr($private_key, 0, 8) . '...' : 'NONE') . "\n" .
    "Raw Input: " . $input . "\n" .
    str_repeat("=", 80) . "\n", 
    FILE_APPEND | LOCK_EX
);

// Validar private key (para simular validación real)
$private_key_correcto = 'bdefdf1d5d3afe40aa7260d38e125d69';

if (!$private_key || $private_key !== $private_key_correcto) {
    // Respuesta de error como PagoPar real
    echo json_encode([
        "respuesta" => false,
        "resultado" => "Token no corresponde."
    ]);
    exit();
}

if (!$numero_pedido) {
    echo json_encode([
        "respuesta" => false,
        "resultado" => "Número de pedido requerido."
    ]);
    exit();
}

// Pedidos conocidos de nuestros logs
$pedidos_conocidos = [
    '17775648' => [
        'pagado' => true,
        'monto' => '850000.00',
        'forma_pago' => 'Aqui Pago',
        'fecha_pago' => '2025-10-18 01:30:11',
        'forma_pago_identificador' => '2'
    ],
    '17776155' => [
        'pagado' => true,
        'monto' => '6371810.00',
        'forma_pago' => 'Wepa',
        'fecha_pago' => '2025-10-18 01:33:57',
        'forma_pago_identificador' => '22'
    ],
    '17776326' => [
        'pagado' => true,
        'monto' => '700000.00',
        'forma_pago' => 'Pago Express',
        'fecha_pago' => '2025-10-18 11:11:56',
        'forma_pago_identificador' => '3'
    ]
];

if (isset($pedidos_conocidos[$numero_pedido])) {
    $pedido = $pedidos_conocidos[$numero_pedido];
    
    $respuesta = [
        "respuesta" => true,
        "resultado" => [
            [
                "pagado" => $pedido['pagado'],
                "numero_comprobante_interno" => "API-" . $numero_pedido . "-" . time(),
                "ultimo_mensaje_error" => null,
                "forma_pago" => $pedido['forma_pago'],
                "fecha_pago" => $pedido['fecha_pago'],
                "monto" => $pedido['monto'],
                "fecha_maxima_pago" => date('Y-m-d H:i:s', strtotime('+7 days')),
                "hash_pedido" => "api_traer_" . $numero_pedido,
                "numero_pedido" => $numero_pedido,
                "cancelado" => false,
                "forma_pago_identificador" => $pedido['forma_pago_identificador'],
                "token" => "api_traer_token",
                "documento" => "123456",
                "entorno" => "desarrollo"
            ]
        ]
    ];
} else {
    $respuesta = [
        "respuesta" => false,
        "resultado" => "Pedido no encontrado."
    ];
}

echo json_encode($respuesta);
exit();
?>