false, 'message' => 'Método no permitido']); exit(); } $input = json_decode(file_get_contents('php://input'), true); $reserva_id = isset($input['id']) ? (int)$input['id'] : 0; if ($reserva_id <= 0) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'ID de reserva inválido']); exit(); } // Solo se puede marcar como pagada si está en estado pendiente_pago $stmt = $pdo->prepare("SELECT id, referencia_bizum FROM reservas WHERE id = :id AND estado = 'pendiente_pago' LIMIT 1"); $stmt->execute([':id' => $reserva_id]); $reserva = $stmt->fetch(); if (!$reserva) { http_response_code(400); echo json_encode(['success' => false, 'message' => 'Reserva no encontrada o no está pendiente de pago']); exit(); } // Cambiar estado a pagada_pendiente_aprobacion $stmt = $pdo->prepare("UPDATE reservas SET estado = 'pagada_pendiente_aprobacion' WHERE id = :id"); $stmt->execute([':id' => $reserva_id]); echo json_encode([ 'success' => true, 'message' => 'Pago verificado. La reserva está pendiente de aprobación final.', 'referencia_bizum' => $reserva['referencia_bizum'] ]); } catch (PDOException $e) { http_response_code(500); echo json_encode([ 'success' => false, 'message' => 'Error en el servidor', 'error' => $e->getMessage() ]); } ?>