<?php
/**
 * TechShop Perú - Proceso de Compra (Checkout)
 * 
 * Facturación (Boleta/Factura), Yape/Plin, Transferencia, Vouchers y WhatsApp.
 */
define('SECURE_ACCESS', true);
require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/database.php';
require_once __DIR__ . '/../includes/functions.php';

require_login();
$db = db();
$error = '';
$success_pedido = null;

// Cargar usuario
$stmt = $db->prepare('SELECT * FROM usuarios WHERE id = ?');
$stmt->execute([$_SESSION['usuario_id']]);
$user = $stmt->fetch();

// Cargar ítems del carrito
$stmt = $db->prepare('
    SELECT c.cantidad, p.id AS producto_id, p.nombre, p.precio, p.precio_oferta 
    FROM carrito c 
    JOIN productos p ON c.producto_id = p.id 
    WHERE c.usuario_id = ? AND p.activo = 1
');
$stmt->execute([$_SESSION['usuario_id']]);
$items = $stmt->fetchAll();

if (empty($items) && $_SERVER['REQUEST_METHOD'] !== 'POST' && !isset($_GET['exito'])) {
    redirect('pages/carrito.php');
}

$subtotal = 0;
foreach ($items as $it) {
    $subtotal += precio_final($it) * (int)$it['cantidad'];
}

// Aplicar cupón de descuento si existe
$cuponDescuento = 0;
$cuponCodigo = null;
if (!empty($_SESSION['cupon']) && $subtotal > 0) {
    $cupon = $_SESSION['cupon'];
    $cuponCodigo = $cupon['codigo'];
    if ($cupon['tipo'] === 'porcentaje') {
        $cuponDescuento = round(($subtotal * $cupon['valor']) / 100, 2);
    } else {
        $cuponDescuento = min((float)$cupon['valor'], $subtotal);
    }
}

$subtotalConDescuento = max(0, $subtotal - $cuponDescuento);

// Procesar formulario POST
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['btn_confirmar_pedido'])) {
    if (!csrf_verify()) {
        $error = 'Token de seguridad inválido. Por favor intenta de nuevo.';
    } else {
        $tipo_comprobante = sanitize($_POST['tipo_comprobante'] ?? 'boleta');
        $num_documento = sanitize($_POST['num_documento'] ?? '');
        $razon_social = sanitize($_POST['razon_social'] ?? '');
        $direccion = sanitize($_POST['direccion'] ?? '');
        $departamento = sanitize($_POST['departamento'] ?? '');
        $ciudad = sanitize($_POST['ciudad'] ?? '');
        $metodo_pago = sanitize($_POST['metodo_pago'] ?? 'yape');
        $notas = sanitize($_POST['notas'] ?? '');

        if (empty($direccion) || empty($departamento) || empty($ciudad) || empty($num_documento)) {
            $error = 'Por favor completa todos los campos requeridos de envío y documento.';
        } elseif ($tipo_comprobante === 'factura' && empty($razon_social)) {
            $error = 'Para emitir una Factura es obligatorio ingresar la Razón Social.';
        } else {
            // Manejo de carga de voucher de pago (para Yape / Plin / Transferencia)
            // Validación centralizada en save_uploaded_image (extensión, 5MB, getimagesize, nombre seguro).
            $voucherPath = null;
            if (isset($_FILES['voucher_imagen']) && $_FILES['voucher_imagen']['error'] !== UPLOAD_ERR_NO_FILE) {
                $subida = save_uploaded_image($_FILES['voucher_imagen'], 'vouchers', 'voucher', 5 * 1024 * 1024, ['jpg', 'jpeg', 'png', 'webp'], 'voucher');
                if (!$subida['ok']) {
                    $error = $subida['error'];
                } else {
                    $voucherPath = $subida['path'];
                }
            }

            if (!$error) {
                // Calcular costo de envío según departamento
            $envio = (strtolower($departamento) === 'lima' || strtolower($departamento) === 'callao') ? 15.00 : 25.00;
            $igv = round($subtotalConDescuento * (IGV_PORCENTAJE / 100), 2);
            $total = $subtotalConDescuento + $envio;
            $numero_pedido = 'PED-' . strtoupper(bin2hex(random_bytes(4)));

            try {
                $db->beginTransaction();

                $stmt = $db->prepare('
                    INSERT INTO pedidos 
                    (usuario_id, numero_pedido, estado, tipo_comprobante, num_documento, razon_social, subtotal, descuento, igv, envio, total, direccion_envio, ciudad_envio, departamento_envio, metodo_pago, voucher_imagen, cupon_codigo, notas) 
                    VALUES (?, ?, "pendiente", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
                ');
                $stmt->execute([
                    $_SESSION['usuario_id'],
                    $numero_pedido,
                    $tipo_comprobante,
                    $num_documento,
                    $razon_social,
                    $subtotal,
                    $cuponDescuento,
                    $igv,
                    $envio,
                    $total,
                    $direccion,
                    $ciudad,
                    $departamento,
                    $metodo_pago,
                    $voucherPath,
                    $cuponCodigo,
                    $notas
                ]);

                $pedido_id = $db->lastInsertId();

                // Insertar detalles del pedido
                $stmtDetalle = $db->prepare('
                    INSERT INTO detalles_pedido 
                    (pedido_id, producto_id, nombre_producto, precio_unitario, cantidad, subtotal) 
                    VALUES (?, ?, ?, ?, ?, ?)
                ');
                
                foreach ($items as $it) {
                    $precioFinal = precio_final($it);
                    $subTotalItem = $precioFinal * (int)$it['cantidad'];
                    $stmtDetalle->execute([
                        $pedido_id,
                        $it['producto_id'],
                        $it['nombre'],
                        $precioFinal,
                        $it['cantidad'],
                        $subTotalItem
                    ]);

                    // Descontar stock
                    $db->prepare('UPDATE productos SET stock = GREATEST(0, stock - ?) WHERE id = ?')->execute([$it['cantidad'], $it['producto_id']]);
                }

                // Limpiar carrito y sesión de cupón
                $db->prepare('DELETE FROM carrito WHERE usuario_id = ?')->execute([$_SESSION['usuario_id']]);
                unset($_SESSION['cupon']);

                // Incrementar uso del cupón si se usó
                if ($cuponCodigo) {
                    $db->prepare('UPDATE cupones SET usos_actuales = usos_actuales + 1 WHERE codigo = ?')->execute([$cuponCodigo]);
                }

                $db->commit();

                // Enviar correo de confirmación (aislado para evitar interrumpir la compra si falla la red/SMTP)
                try {
                    require_once __DIR__ . '/../includes/mail_functions.php';
                    send_order_confirmation_email($pedido_id);
                } catch (Throwable $mailEx) {
                    error_log("Error no crítico enviando correo: " . $mailEx->getMessage());
                }

                redirect('pages/checkout.php?exito=' . $numero_pedido);

            } catch (Exception $e) {
                if ($db->inTransaction()) {
                    $db->rollBack();
                }
                $error = 'Ocurrió un error al procesar el pedido: ' . $e->getMessage();
            }
            } // fin: si hubo error de voucher, no se crea el pedido
        }
    }
}

// Cargar información de pedido exitoso
$numeroExito = sanitize($_GET['exito'] ?? '');
if (!empty($numeroExito)) {
    $stmtExito = $db->prepare('SELECT * FROM pedidos WHERE numero_pedido = ? AND usuario_id = ?');
    $stmtExito->execute([$numeroExito, $_SESSION['usuario_id']]);
    $success_pedido = $stmtExito->fetch();
}

$page_title = $success_pedido ? '¡Pedido Confirmado!' : 'Finalizar Compra';
require_once __DIR__ . '/../includes/header.php';
?>

<section class="page-header"><div class="container"><h1><?= e($page_title) ?></h1></div></section>

<section class="py-5">
    <div class="container">
        <?php if ($success_pedido): ?>
            <!-- PANTALLA DE ÉXITO DE PEDIDO -->
            <div class="checkout-steps">
                <div class="step-item done"><span class="step-dot"><i class="bi bi-cart-fill"></i></span>Carrito</div>
                <div class="step-sep done"></div>
                <div class="step-item done"><span class="step-dot"><i class="bi bi-check-lg"></i></span>Datos y Pago</div>
                <div class="step-sep done"></div>
                <div class="step-item active"><span class="step-dot"><i class="bi bi-check-lg"></i></span>Confirmación</div>
            </div>
            <div class="row justify-content-center">
                <div class="col-md-8 text-center">
                    <div class="card border-0 shadow-sm p-4 p-md-5">
                        <div class="success-icon mb-4"><i class="bi bi-check-lg"></i></div>
                        <h2 class="fw-bold mb-2">¡Gracias por tu compra, <?= e($_SESSION['usuario_nombre']) ?>!</h2>
                        <p class="text-muted fs-5">Tu pedido <b>#<?= e($success_pedido['numero_pedido']) ?></b> ha sido registrado con éxito.</p>
                        <div class="alert alert-info d-inline-block text-start mb-4">
                            <div><b>Comprobante solicitado:</b> <?= strtoupper(e($success_pedido['tipo_comprobante'])) ?> (Doc: <?= e($success_pedido['num_documento']) ?>)</div>
                            <div><b>Método de Pago:</b> <?= strtoupper(str_replace('_', ' ', e($success_pedido['metodo_pago']))) ?></div>
                            <div><b>Monto Total:</b> <?= format_precio((float)$success_pedido['total']) ?></div>
                        </div>
                        <br>
                        <?php
                        $msgWsp = "Hola TechShop Perú, acabo de realizar el pedido #" . $success_pedido['numero_pedido'] . " por un total de " . format_precio((float)$success_pedido['total']) . ". Adjunto consulta sobre mi envío.";
                        $urlWsp = "https://wa.me/" . preg_replace('/[^0-9]/', '', TIENDA_WHATSAPP) . "?text=" . urlencode($msgWsp);
                        ?>
                        <div class="d-flex flex-wrap justify-content-center gap-3">
                            <a href="<?= $urlWsp ?>" target="_blank" class="btn btn-success btn-lg">
                                <i class="bi bi-whatsapp me-2"></i>Confirmar por WhatsApp
                            </a>
                            <a href="<?= url('pages/cuenta.php?tab=pedidos') ?>" class="btn btn-outline-primary btn-lg">
                                <i class="bi bi-box-seam me-2"></i>Ver mis Pedidos
                            </a>
                        <script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.3/dist/confetti.browser.min.js"></script>
                        <script>
                            document.addEventListener('DOMContentLoaded', function() {
                                if (typeof confetti !== 'undefined') {
                                    confetti({
                                        particleCount: 100,
                                        spread: 70,
                                        origin: { y: 0.6 }
                                    });
                                }
                            });
                        </script>
                    </div>
                </div>
            </div>
        <?php else: ?>
            <!-- FORMULARIO DE CHECKOUT -->
            <?php if (!empty($error)): ?>
                <div class="alert alert-danger mb-4"><i class="bi bi-exclamation-triangle-fill me-2"></i><?= e($error) ?></div>
            <?php endif; ?>

            <form method="POST" enctype="multipart/form-data">
                <?= csrf_field() ?>
                <div class="checkout-steps">
                    <div class="step-item done"><span class="step-dot"><i class="bi bi-cart-fill"></i></span>Carrito</div>
                    <div class="step-sep done"></div>
                    <div class="step-item active"><span class="step-dot"><i class="bi bi-credit-card-fill"></i></span>Datos y Pago</div>
                    <div class="step-sep"></div>
                    <div class="step-item"><span class="step-dot"><i class="bi bi-check-lg"></i></span>Confirmación</div>
                </div>
                <div class="row g-4">
                    <div class="col-lg-7">
                        <!-- 1. COMPROBANTE Y DOCUMENTO -->
                        <div class="card checkout-section-card mb-4">
                            <div class="section-head">
                                <span class="section-num">1</span>
                                <h5 class="fw-bold mb-0"><i class="bi bi-receipt text-primary me-2"></i>Tipo de Comprobante</h5>
                            </div>
                            <div class="card-body">
                                <div class="row g-3 mb-3">
                                    <div class="col-6">
                                        <div class="form-check card pay-option p-3" id="card_boleta">
                                            <input class="form-check-input" type="radio" name="tipo_comprobante" id="comp_boleta" value="boleta" checked onclick="toggleComprobante('boleta'); highlightComprobante()">
                                            <label class="form-check-label fw-bold" for="comp_boleta">Boleta de Venta</label>
                                            <small class="text-muted d-block">Para personas naturales (DNI / CE)</small>
                                        </div>
                                    </div>
                                    <div class="col-6">
                                        <div class="form-check card pay-option p-3" id="card_factura">
                                            <input class="form-check-input" type="radio" name="tipo_comprobante" id="comp_factura" value="factura" onclick="toggleComprobante('factura'); highlightComprobante()">
                                            <label class="form-check-label fw-bold" for="comp_factura">Factura Electrónica</label>
                                            <small class="text-muted d-block">Para empresas (RUC 10/20)</small>
                                        </div>
                                    </div>
                                </div>
                                <div class="row g-3">
                                    <div class="col-md-6">
                                        <label id="lbl_num_doc" class="form-label fw-medium">DNI / Documento *</label>
                                        <input type="text" name="num_documento" id="num_documento" class="form-control" placeholder="Número de DNI" required>
                                    </div>
                                    <div class="col-md-6" id="box_razon_social" style="display:none;">
                                        <label class="form-label fw-medium">Razón Social *</label>
                                        <input type="text" name="razon_social" id="razon_social" class="form-control" placeholder="Nombre de la empresa">
                                    </div>
                                </div>
                            </div>
                        </div>

                        <!-- 2. DATOS DE ENVÍO -->
                        <div class="card checkout-section-card mb-4">
                            <div class="section-head">
                                <span class="section-num">2</span>
                                <h5 class="fw-bold mb-0"><i class="bi bi-truck text-primary me-2"></i>Dirección de Envío a Nivel Nacional</h5>
                            </div>
                            <div class="card-body">
                            <div class="row g-3">
                                <div class="col-md-6">
                                    <label class="form-label fw-medium">Departamento *</label>
                                    <select name="departamento" class="form-select" required>
                                        <option value="Lima" selected>Lima</option>
                                        <option value="Arequipa">Arequipa</option>
                                        <option value="Cusco">Cusco</option>
                                        <option value="La Libertad">La Libertad</option>
                                        <option value="Piura">Piura</option>
                                        <option value="Lambayeque">Lambayeque</option>
                                        <option value="Junín">Junín</option>
                                        <option value="Ica">Ica</option>
                                        <option value="Cajamarca">Cajamarca</option>
                                        <option value="Áncash">Áncash</option>
                                        <option value="Puno">Puno</option>
                                        <option value="Loreto">Loreto</option>
                                        <option value="San Martín">San Martín</option>
                                        <option value="Tacna">Tacna</option>
                                        <option value="Ayacucho">Ayacucho</option>
                                        <option value="Huánuco">Huánuco</option>
                                        <option value="Ucayali">Ucayali</option>
                                        <option value="Moquegua">Moquegua</option>
                                        <option value="Apurímac">Apurímac</option>
                                        <option value="Huancavelica">Huancavelica</option>
                                        <option value="Pasco">Pasco</option>
                                        <option value="Tumbes">Tumbes</option>
                                        <option value="Amazonas">Amazonas</option>
                                        <option value="Madre de Dios">Madre de Dios</option>
                                    </select>
                                </div>
                                <div class="col-md-6">
                                    <label class="form-label fw-medium">Provincia / Ciudad *</label>
                                    <input type="text" name="ciudad" class="form-control" value="<?= e($user['ciudad'] ?? '') ?>" required>
                                </div>
                                <div class="col-12">
                                    <label class="form-label fw-medium">Dirección Exacta y Referencia *</label>
                                    <input type="text" name="direccion" class="form-control" value="<?= e($user['direccion'] ?? '') ?>" required>
                                </div>
                            </div>
                            </div>
                        </div>

                        <!-- 3. MÉTODOS DE PAGO Y VOUCHER -->
                        <div class="card checkout-section-card">
                            <div class="section-head">
                                <span class="section-num">3</span>
                                <h5 class="fw-bold mb-0"><i class="bi bi-wallet2 text-primary me-2"></i>Método de Pago</h5>
                            </div>
                            <div class="card-body">
                            <div class="form-check pay-option mb-3 p-3" id="card_pago_yape">
                                <input class="form-check-input" type="radio" name="metodo_pago" id="pago_yape" value="yape" checked onclick="toggleVoucher(true); togglePaypal(false); highlightPago()">
                                <label class="form-check-label fw-bold" for="pago_yape">
                                    Yape / Plin <span class="badge bg-success-subtle text-success border border-success-subtle ms-1">Recomendado</span>
                                </label>
                                <div class="small text-muted mt-1">Yapea al <b><?= TIENDA_WHATSAPP ?></b> a nombre de TechShop Perú S.A.C.</div>
                            </div>
                            <div class="form-check pay-option mb-3 p-3" id="card_pago_banco">
                                <input class="form-check-input" type="radio" name="metodo_pago" id="pago_banco" value="transferencia" onclick="toggleVoucher(true); togglePaypal(false); highlightPago()">
                                <label class="form-check-label fw-bold" for="pago_banco">Transferencia Bancaria (BCP / BBVA / Interbank)</label>
                                <div class="small text-muted mt-1">Cuenta Corriente BCP: <b>193-98765432-0-11</b> | CCI: <b>00219300987654320114</b></div>
                            </div>
                            <div class="form-check pay-option mb-3 p-3" id="card_pago_entrega">
                                <input class="form-check-input" type="radio" name="metodo_pago" id="pago_entrega" value="contra_entrega" onclick="toggleVoucher(false); togglePaypal(false); highlightPago()">
                                <label class="form-check-label fw-bold" for="pago_entrega">Pago Contra Entrega (Solo Lima)</label>
                                <div class="small text-muted mt-1">Pagas en efectivo o tarjeta POS al recibir tu producto.</div>
                            </div>
                            <div class="form-check pay-option mb-3 p-3" id="card_pago_paypal">
                                <input class="form-check-input" type="radio" name="metodo_pago" id="pago_paypal" value="paypal" onclick="toggleVoucher(false); togglePaypal(true); highlightPago()">
                                <label class="form-check-label fw-bold d-flex align-items-center justify-content-between" for="pago_paypal">
                                    <span>Tarjeta / PayPal <span class="badge bg-primary-subtle text-primary border border-primary-subtle ms-1">Pago Instantáneo</span></span>
                                    <i class="bi bi-paypal fs-4 text-primary"></i>
                                </label>
                                <div class="small text-muted mt-1">Procesado de forma 100% segura por PayPal.</div>
                            </div>

                            <div id="box_upload_voucher" class="voucher-box mt-3 p-3">
                                <label class="form-label fw-bold text-primary"><i class="bi bi-upload me-1"></i>Adjuntar Comprobante de Yape/Transferencia (Opcional)</label>
                                <input type="file" name="voucher_imagen" class="form-control" accept="image/*">
                                <small class="text-muted">Formatos permitidos: JPG, PNG, WEBP (Máx. 5MB)</small>
                            </div>
                            </div>
                        </div>
                    </div>

                    <!-- RESUMEN -->
                    <div class="col-lg-5">
                        <div class="card order-summary-sticky p-4 sticky-top" style="top: 90px;">
                            <h5 class="fw-bold mb-3"><i class="bi bi-bag-check text-primary me-2"></i>Resumen de la Orden</h5>
                            <div class="cart-items-mini mb-3" style="max-height: 250px; overflow-y: auto;">
                                <?php foreach ($items as $it): 
                                    $pFinal = precio_final($it);
                                ?>
                                <div class="cart-mini-item d-flex justify-content-between align-items-center mb-2 small">
                                    <div>
                                        <div class="fw-bold text-dark"><?= e($it['nombre']) ?></div>
                                        <small class="text-muted">Cant: <?= $it['cantidad'] ?></small>
                                    </div>
                                    <div class="fw-bold"><?= format_precio($pFinal * $it['cantidad']) ?></div>
                                </div>
                                <?php endforeach; ?>
                            </div>

                            <div class="d-flex justify-content-between mb-2"><span>Subtotal</span><span><?= format_precio($subtotal) ?></span></div>
                            <?php if ($cuponDescuento > 0): ?>
                            <div class="d-flex justify-content-between mb-2 text-success"><span>Descuento (<?= e($cuponCodigo) ?>)</span><span>- <?= format_precio($cuponDescuento) ?></span></div>
                            <?php endif; ?>
                            <div class="d-flex justify-content-between mb-2"><span>Envío</span><span id="txt_envio">S/ 15.00</span></div>
                            <hr class="my-3">
                            <div class="summary-total-row d-flex justify-content-between align-items-center fw-bold fs-4 mb-3"><span>Total a Pagar</span><span id="txt_total" class="text-primary"><?= format_precio($subtotalConDescuento + 15.00) ?></span></div>

                            <div id="btn_submit_normal">
                                <button type="submit" name="btn_confirmar_pedido" class="btn btn-primary btn-lg w-100 py-3 btn-confirm">
                                    <i class="bi bi-shield-lock-fill me-2"></i>Confirmar y Realizar Pedido
                                </button>
                            </div>
                            <small class="text-muted d-block text-center mt-3"><i class="bi bi-shield-check me-1"></i>Compra protegida · Datos cifrados SSL</small>
                            <div id="paypal-button-container" style="display:none;" class="mt-3"></div>
                        </div>
                    </div>
                </div>
            </form>
        <?php endif; ?>
    </div>
</section>

<script>
function toggleComprobante(tipo) {
    const lbl = document.getElementById('lbl_num_doc');
    const inputDoc = document.getElementById('num_documento');
    const boxRazon = document.getElementById('box_razon_social');
    
    if (tipo === 'factura') {
        lbl.innerText = 'RUC (11 dígitos) *';
        inputDoc.placeholder = 'Número de RUC';
        boxRazon.style.display = 'block';
    } else {
        lbl.innerText = 'DNI / Documento *';
        inputDoc.placeholder = 'Número de DNI';
        boxRazon.style.display = 'none';
    }
}

function toggleVoucher(show) {
    document.getElementById('box_upload_voucher').style.display = show ? 'block' : 'none';
}

function togglePaypal(show) {
    document.getElementById('btn_submit_normal').style.display = show ? 'none' : 'block';
    document.getElementById('paypal-button-container').style.display = show ? 'block' : 'none';
}

/* Resaltar la opción de comprobante seleccionada */
function highlightComprobante() {
    ['boleta', 'factura'].forEach(function(t) {
        const box = document.getElementById('card_' + t);
        const input = document.getElementById('comp_' + t);
        if (box) box.classList.toggle('has-check', input.checked);
    });
}

/* Resaltar el método de pago seleccionado */
function highlightPago() {
    ['yape', 'banco', 'entrega', 'paypal'].forEach(function(t) {
        const box = document.getElementById('card_pago_' + t);
        const input = document.getElementById('pago_' + t);
        if (box) box.classList.toggle('has-check', input.checked);
    });
}

/* Micro-interacción del botón de confirmar pedido.
   Se escucha el submit del FORM (no el click del botón) para no
   bloquear el envío: un botón deshabilitado no dispara el submit. */
document.addEventListener('DOMContentLoaded', function() {
    const form = document.querySelector('.btn-confirm')?.closest('form');
    if (form) {
        form.addEventListener('submit', function(e) {
            // Guard: si PayPal está seleccionado, el pedido NO debe crearse por
            // submit normal (el botón está oculto pero Enter en un input lo
            // dispararía). El pago PayPal se procesa por su propio botón.
            if (document.getElementById('pago_paypal')?.checked) {
                e.preventDefault();
                alert('Para pagar con PayPal usa el botón de PayPal. Selecciona otro método de pago para continuar.');
                return;
            }
            const btn = form.querySelector('.btn-confirm');
            if (!btn || btn.disabled) return;
            btn.disabled = true;
            btn.innerHTML = '<span class="spinner-border spinner-border-sm me-2"></span>Procesando pedido...';
        });
    }
    highlightComprobante();
    highlightPago();
});
</script>

<?php if (defined('PAYPAL_CLIENT_ID') && PAYPAL_CLIENT_ID !== ''): ?>
<script src="https://www.paypal.com/sdk/js?client-id=<?= e(PAYPAL_CLIENT_ID) ?>&currency=USD"></script>
<script>
if (typeof paypal !== 'undefined') {
    paypal.Buttons({
        createOrder: function(data, actions) {
            // Calcular monto equivalente aproximado en USD (tasa centralizada en PHP)
            const totalSoles = <?= (float)($subtotalConDescuento + 15.00) ?>;
            const usdRate = <?= (float) (defined('PAYPAL_USD_RATE') ? PAYPAL_USD_RATE : 3.75) ?>;
            const totalUSD = (totalSoles / usdRate).toFixed(2);

            return actions.order.create({
                purchase_units: [{
                    amount: {
                        value: totalUSD
                    }
                }]
            });
        },
        onApprove: function(data) {
            // NO capturar aquí: el servidor es quien captura y verifica el pago
            // con la API de PayPal (Orders v2 / capture). Así, si la verificación
            // falla, el cliente NO ha sido cobrado y no se crea ningún pedido.
            const payload = {
                paypal_order_id: data.orderID,
                csrf_token: document.querySelector('meta[name="csrf-token"]')?.content || '',
                tipo_comprobante: document.querySelector('input[name="tipo_comprobante"]:checked')?.value || 'boleta',
                num_documento: document.getElementById('num_documento')?.value || '',
                razon_social: document.getElementById('razon_social')?.value || '',
                departamento: document.querySelector('select[name="departamento"]')?.value || 'Lima',
                ciudad: document.querySelector('input[name="ciudad"]')?.value || 'Lima',
                direccion: document.querySelector('input[name="direccion"]')?.value || '',
                notas: ''
            };

            // Enviar a nuestro backend (el servidor captura y verifica con PayPal)
            fetch('<?= url("api/verify-paypal.php") ?>', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify(payload)
            })
                .then(res => res.json())
                .then(res => {
                    if (res.success && res.redirect) {
                        window.location.href = res.redirect;
                    } else {
                        alert(res.message || 'Ocurrió un error procesando la orden');
                    }
                })
                .catch(err => {
                    console.error(err);
                    alert('Error de conexión con el servidor.');
                });
            });
        }
    }).render('#paypal-button-container');
}
</script>
<?php endif; ?>

<?php require_once __DIR__ . '/../includes/footer.php'; ?>
