<?php
declare(strict_types=1);
session_start();
require_once __DIR__ . '/paytr_config.php';

paytr_ensure_data_dir();

/**
 * Sonuç belgesi paketleri yalnızca bu sunucu tarafındaki listeden okunur.
 * Formdan fiyat veya hak sayısı gönderilmez; böylece kullanıcı fiyatı değiştiremez.
 */
$packages = [
    'pdf_1' => [
        'code' => 'pdf_1',
        'name' => '1 Sonuç Belgesi',
        'short_name' => '1 Sonuç Belgesi',
        'pdf_limit' => 1,
        'price_tl' => 200.00,
        'description' => '1 Sonuç Belgesi üzerinden sınırsız soru sorma ve tercih listesi hazırlama hakkınız var.',
        'badge' => 'Bireysel',
    ],
    'pdf_50' => [
        'code' => 'pdf_50',
        'name' => '50 Sonuç Belgesi',
        'short_name' => '50 Sonuç Belgesi',
        'pdf_limit' => 50,
        'price_tl' => 2500.00,
        'description' => '50 farklı Sonuç Belgesi yükleme hakkı. Her belge için sınırsız soru sorma ve tercih listesi hazırlama hakkınız var.',
        'badge' => 'Avantajlı',
    ],
    'pdf_200' => [
        'code' => 'pdf_200',
        'name' => '200 Sonuç Belgesi',
        'short_name' => '200 Sonuç Belgesi',
        'pdf_limit' => 200,
        'price_tl' => 7500.00,
        'description' => '200 farklı Sonuç Belgesi yükleme hakkı. Her belge için sınırsız soru sorma ve tercih listesi hazırlama hakkınız var.',
        'badge' => 'Profesyonel',
    ],
    'pdf_500' => [
        'code' => 'pdf_500',
        'name' => '500 Sonuç Belgesi',
        'short_name' => '500 Sonuç Belgesi',
        'pdf_limit' => 500,
        'price_tl' => 12500.00,
        'description' => '500 farklı Sonuç Belgesi yükleme hakkı. Her belge için sınırsız soru sorma ve tercih listesi hazırlama hakkınız var.',
        'badge' => 'Kurumsal',
    ],
];

$error = '';
$token = '';
$order = null;

$activationDatabaseError = '';
$activationDatabaseReady = function_exists('paytr_activation_database_ready')
    && paytr_activation_database_ready($activationDatabaseError);

function paytr_safe_update_order_local(string $merchant_oid, array $changes): void
{
    try {
        paytr_update_order($merchant_oid, $changes);
    } catch (Throwable $e) {
        error_log('PayTR order update hata: ' . $e->getMessage());
    }
}

function paytr_format_tl(float $price): string
{
    $hasKurus = abs($price - round($price)) > 0.00001;
    return number_format($price, $hasKurus ? 2 : 0, ',', '.') . ' TL';
}

function payment_cookie_is_secure(): bool
{
    return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
        || ((string)($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https');
}

/**
 * Üyelik olmadan hakları aynı tarayıcıya bağlayacak anonim müşteri anahtarı.
 * Ödeme callback dosyası, sipariş içindeki customer_key alanını kullanarak hak tanımlayabilir.
 */
$customerKey = trim((string)($_COOKIE['tr_pdf_customer'] ?? ''));
if (!preg_match('/^[a-f0-9]{64}$/', $customerKey)) {
    $customerKey = bin2hex(random_bytes(32));
    setcookie('tr_pdf_customer', $customerKey, [
        'expires' => time() + (86400 * 365 * 5),
        'path' => '/',
        'secure' => payment_cookie_is_secure(),
        'httponly' => true,
        'samesite' => 'Lax',
    ]);
    $_COOKIE['tr_pdf_customer'] = $customerKey;
}
$_SESSION['tr_pdf_customer'] = $customerKey;

if (empty($_SESSION['paytr_payment_csrf'])) {
    $_SESSION['paytr_payment_csrf'] = bin2hex(random_bytes(32));
}
$csrfToken = (string)$_SESSION['paytr_payment_csrf'];

$requestedPackageCode = trim((string)($_POST['package_code'] ?? $_GET['paket'] ?? 'pdf_1'));
if (!isset($packages[$requestedPackageCode])) {
    $requestedPackageCode = 'pdf_1';
}
$selectedPackage = $packages[$requestedPackageCode];

$step1 = $_SESSION['step1'] ?? [];
$sessionName = trim((string)($step1['full_name'] ?? $step1['ad_soyad'] ?? $step1['adsoyad'] ?? $step1['adi_soyadi'] ?? ''));

$formValues = [
    'user_name' => trim((string)($_POST['user_name'] ?? $sessionName)),
    'email' => trim((string)($_POST['email'] ?? '')),
    'user_phone' => trim((string)($_POST['user_phone'] ?? '')),
    'user_address' => trim((string)($_POST['user_address'] ?? 'Türkiye')),
];

$legalAccepted = (string)($_POST['legal_accept'] ?? '') === '1';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $postedCsrf = (string)($_POST['csrf_token'] ?? '');

    if (!hash_equals($csrfToken, $postedCsrf)) {
        $error = 'Form güvenlik doğrulaması başarısız oldu. Sayfayı yenileyip tekrar deneyin.';
    } elseif (!$legalAccepted) {
        $error = 'Ödemeye devam etmek için KVK Aydınlatma Ve Açık Rıza Formu ile Mesafeli Satış Sözleşmesi’ni okuyup kabul etmelisiniz.';
    } elseif (!$activationDatabaseReady) {
        $error = 'Aktivasyon veritabanı hazır olmadığı için ödeme başlatılamadı. '
            . ($activationDatabaseError !== '' ? $activationDatabaseError : 'Lütfen sistem yöneticisine bildirin.');
    } elseif (!PAYTR_FREE_PAYMENT_TEST && !paytr_config_ready()) {
        $error = 'PayTR API bilgileri paytr_config.php içine yazılmamış.';
    } elseif (!PAYTR_FREE_PAYMENT_TEST && !function_exists('curl_init')) {
        $error = 'Sunucuda PHP cURL eklentisi kapalı. PayTR token almak için cURL gerekli.';
    } else {
        $packageCode = trim((string)($_POST['package_code'] ?? ''));
        if (!isset($packages[$packageCode])) {
            $error = 'Geçersiz paket seçimi yapıldı.';
        } else {
            $selectedPackage = $packages[$packageCode];
            $requestedPackageCode = $packageCode;

            $userName = $formValues['user_name'];
            $email = $formValues['email'];
            $userPhone = preg_replace('/[^0-9+]/', '', $formValues['user_phone']) ?? '';
            $userAddress = $formValues['user_address'] !== '' ? $formValues['user_address'] : 'Türkiye';

            if ($userName === '') {
                $error = 'Ad soyad yazın.';
            } elseif ($email === '' || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $error = 'Geçerli bir e-posta adresi yazın.';
            } elseif ($userPhone === '' || mb_strlen($userPhone, 'UTF-8') < 10) {
                $error = 'Geçerli bir telefon numarası yazın.';
            } else {
                $merchantOid = paytr_new_oid();
                $priceTl = (float)$selectedPackage['price_tl'];
                $pdfLimit = (int)$selectedPackage['pdf_limit'];
                $productName = 'Tercih Robotu - ' . (string)$selectedPackage['name'];
                $paymentAmount = paytr_price_kurus($priceTl);
                $userIp = paytr_get_user_ip();

                if ($paymentAmount < 100) {
                    $error = 'PayTR işlem tutarı en az 1 TL olmalıdır.';
                }

                $basketJson = $error === '' ? json_encode([
                    [$productName, number_format($priceTl, 2, '.', ''), 1],
                ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : false;

                if ($error === '' && $basketJson === false) {
                    $error = 'Ödeme sepeti oluşturulamadı.';
                } else {
                    $userBasket = base64_encode($basketJson);
                    $merchantOkUrl = paytr_base_url() . '/paytr_basarili.php?oid=' . rawurlencode($merchantOid);
                    $merchantFailUrl = paytr_base_url() . '/paytr_basarisiz.php';

                    $hashStr = PAYTR_MERCHANT_ID
                        . $userIp
                        . $merchantOid
                        . $email
                        . $paymentAmount
                        . $userBasket
                        . PAYTR_NO_INSTALLMENT
                        . PAYTR_MAX_INSTALLMENT
                        . PAYTR_CURRENCY
                        . (PAYTR_TEST_MODE ? '1' : '0');

                    $paytrToken = base64_encode(hash_hmac(
                        'sha256',
                        $hashStr . PAYTR_MERCHANT_SALT,
                        PAYTR_MERCHANT_KEY,
                        true
                    ));

                    $postVals = [
                        'merchant_id' => PAYTR_MERCHANT_ID,
                        'user_ip' => $userIp,
                        'merchant_oid' => $merchantOid,
                        'email' => $email,
                        'payment_amount' => $paymentAmount,
                        'paytr_token' => $paytrToken,
                        'user_basket' => $userBasket,
                        'debug_on' => PAYTR_DEBUG_ON ? 1 : 0,
                        'no_installment' => PAYTR_NO_INSTALLMENT,
                        'max_installment' => PAYTR_MAX_INSTALLMENT,
                        'user_name' => mb_substr($userName, 0, 60, 'UTF-8'),
                        'user_address' => mb_substr($userAddress, 0, 400, 'UTF-8'),
                        'user_phone' => mb_substr($userPhone, 0, 20, 'UTF-8'),
                        'merchant_ok_url' => $merchantOkUrl,
                        'merchant_fail_url' => $merchantFailUrl,
                        'timeout_limit' => PAYTR_TIMEOUT_LIMIT,
                        'currency' => PAYTR_CURRENCY,
                        'test_mode' => PAYTR_TEST_MODE ? 1 : 0,
                        'lang' => 'tr',
                    ];

                    if (PAYTR_IFRAME_V2) {
                        $postVals['iframe_v2'] = 1;
                        $postVals['iframe_v2_dark'] = PAYTR_IFRAME_V2_DARK ? 1 : 0;
                    }

                    $order = [
                        'merchant_oid' => $merchantOid,
                        'status' => 'token_isteniyor',
                        'package_code' => $packageCode,
                        'package_name' => (string)$selectedPackage['name'],
                        'product_name' => $productName,
                        'pdf_limit' => $pdfLimit,
                        'pdf_rights_to_grant' => $pdfLimit,
                        'price_tl' => $priceTl,
                        'payment_amount' => $paymentAmount,
                        'currency' => PAYTR_CURRENCY,
                        'customer_key' => $customerKey,
                        'rights_granted' => 0,
                        'user_name' => $userName,
                        'email' => $email,
                        'user_phone' => $userPhone,
                        'user_ip' => $userIp,
                        'test_mode' => PAYTR_TEST_MODE ? 1 : 0,
                        'free_payment_test' => PAYTR_FREE_PAYMENT_TEST ? 1 : 0,
                        'legal_accepted' => 1,
                        'legal_accepted_at' => date('Y-m-d H:i:s'),
                        'legal_kvk_title' => 'KVK Aydınlatma Ve Açık Rıza Formu',
                        'legal_sales_title' => 'Mesafeli Satış Sözleşmesi',
                        'created_at' => date('Y-m-d H:i:s'),
                    ];

                    /*
                     | Ödeme formundaki ad, e-posta ve telefonu ayrı müşteri
                     | tablosuna kaydet. Kayıt başarısızsa PayTR işlemini başlatma.
                     */
                    try {
                        if (!function_exists('paytr_save_customer_contact')) {
                            throw new RuntimeException(
                                'Müşteri bilgileri kayıt fonksiyonu bulunamadı.'
                            );
                        }

                        paytr_save_customer_contact([
                            'customer_key' => $customerKey,
                            'merchant_oid' => $merchantOid,
                            'ad_soyad' => $userName,
                            'email' => $email,
                            'telefon' => $userPhone,
                            'package_code' => $packageCode,
                            'package_name' => (string)$selectedPackage['name'],
                            'price_tl' => $priceTl,
                            'payment_status' => 'payment_started',
                            'legal_accepted' => 1,
                            'legal_accepted_at' => (string)$order['legal_accepted_at'],
                            'ip' => $userIp,
                            'user_agent' => (string)($_SERVER['HTTP_USER_AGENT'] ?? ''),
                        ]);
                    } catch (Throwable $e) {
                        error_log(
                            'PayTR müşteri bilgileri kayıt hatası: '
                            . $e->getMessage()
                        );
                        $error = 'Ad, e-posta ve telefon bilgileriniz veritabanına '
                            . 'kaydedilemedi. Ödeme başlatılmadı. '
                            . 'Lütfen tekrar deneyin.';
                    }

                    if ($error === '' && !PAYTR_FREE_PAYMENT_TEST) {
                        try {
                            $order = paytr_create_order($order);
                        } catch (Throwable $e) {
                            error_log('PayTR order create hata: ' . $e->getMessage());
                            $error = 'Sipariş kaydı oluşturulamadı. Lütfen tekrar deneyin.';
                        }
                    } elseif ($error === '' && PAYTR_FREE_PAYMENT_TEST) {
                        // Testte hiçbir sipariş/ödeme JSON dosyasına ihtiyaç yoktur.
                        $_SESSION['paytr_test_order'] = $order;
                    }

                    /*
                     | Ücretsiz akış testi:
                     | PayTR'ye gitmeden sipariş başarılı kabul edilir ve hak tanımlanır.
                     | Aynı sipariş numarası tekrar işlense bile paytr_grant_pdf_rights
                     | mükerrer hak eklemez.
                     */
                    if ($error === '' && PAYTR_FREE_PAYMENT_TEST) {
                        try {
                            $grant = paytr_grant_pdf_rights($customerKey, $pdfLimit, $merchantOid);
                            if (empty($grant['ok'])) {
                                throw new RuntimeException((string)($grant['error'] ?? 'Hak tanımlanamadı.'));
                            }

                            $balance = paytr_sync_pdf_rights_to_session($customerKey);

                            $_SESSION['paytr_last_oid'] = $merchantOid;
                            $_SESSION['paytr_last_success_oid'] = $merchantOid;
                            $_SESSION['paytr_payment_success_notice'] = true;
                            $_SESSION['paytr_test_order']['status'] = 'success';
                            $_SESSION['paytr_test_order']['rights_balance_after'] = $balance;
                            unset($_SESSION['paytr_pending_package']);

                            // Testte bekleme ekranı yok: hak tanımlanır tanımlanmaz PDF yükleme alanına gider.
                            header('Location: /ia-step1.php?odeme=basarili');
                            exit;
                        } catch (Throwable $e) {
                            error_log('Ücretsiz ödeme testi hak tanımlama hatası: ' . $e->getMessage());
                            $error = 'Test hakkı tanımlanamadı. Tarayıcı çerezlerinin ve PHP oturumunun açık olduğundan emin olun.';
                            $_SESSION['paytr_test_order_error'] = $e->getMessage();
                        }
                    }

                    if ($error === '' && !PAYTR_FREE_PAYMENT_TEST) {
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL, 'https://www.paytr.com/odeme/api/get-token');
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_setopt($ch, CURLOPT_POST, true);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $postVals);
                        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
                        curl_setopt($ch, CURLOPT_TIMEOUT, 20);
                        $result = curl_exec($ch);
                        $curlError = curl_error($ch);
                        curl_close($ch);

                        if ($result === false || $result === '') {
                            $error = 'PayTR bağlantı hatası: ' . $curlError;
                            paytr_safe_update_order_local($merchantOid, [
                                'status' => 'token_baglanti_hatasi',
                                'error' => $error,
                            ]);
                        } else {
                            $decoded = json_decode((string)$result, true);
                            if (is_array($decoded)
                                && ($decoded['status'] ?? '') === 'success'
                                && !empty($decoded['token'])) {
                                $token = (string)$decoded['token'];
                                $_SESSION['paytr_last_oid'] = $merchantOid;
                                $_SESSION['paytr_pending_package'] = [
                                    'merchant_oid' => $merchantOid,
                                    'package_code' => $packageCode,
                                    'package_name' => (string)$selectedPackage['name'],
                                    'pdf_limit' => $pdfLimit,
                                    'price_tl' => $priceTl,
                                    'customer_key' => $customerKey,
                                    'user_name' => $userName,
                                    'email' => $email,
                                    'legal_accepted' => 1,
                                    'legal_accepted_at' => date('Y-m-d H:i:s'),
                                ];

                                paytr_safe_update_order_local($merchantOid, [
                                    'status' => 'token_alindi',
                                    'iframe_token_created_at' => date('Y-m-d H:i:s'),
                                ]);
                            } else {
                                $reason = is_array($decoded)
                                    ? (string)($decoded['reason'] ?? 'Bilinmeyen PayTR hatası')
                                    : 'PayTR JSON cevabı okunamadı: '
                                        . mb_substr((string)$result, 0, 300, 'UTF-8');
                                $error = 'PayTR token hatası: ' . $reason;
                                paytr_safe_update_order_local($merchantOid, [
                                    'status' => 'token_hatasi',
                                    'error' => $reason,
                                ]);
                            }
                        }
                    }
                }
            }
        }
    }
}
?>
<!doctype html>
<html lang="tr">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Sonuç Belgesi Satın Al | Tercih Robotu</title>
  <style>
    :root{
      --navy:#0a2540;
      --orange:#f97316;
      --orange-dark:#ea580c;
      --text:#172033;
      --muted:#667085;
      --line:#dfe5ec;
      --soft:#f6f8fb;
      --white:#fff;
    }
    *{box-sizing:border-box}
    body{
      margin:0;
      min-height:100vh;
      padding:24px 14px 42px;
      background:#f4f6f9;
      color:var(--text);
      font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
    }
    .page{width:min(900px,100%);margin:0 auto}
    .back{
      display:inline-block;
      margin-bottom:16px;
      color:var(--navy);
      font-size:14px;
      font-weight:800;
      text-decoration:none;
    }
    .box{
      overflow:hidden;
      border:1px solid var(--line);
      border-radius:20px;
      background:var(--white);
      box-shadow:0 12px 35px rgba(15,23,42,.08);
    }
    .head{
      padding:27px 28px 22px;
      border-bottom:1px solid var(--line);
      text-align:center;
    }
    .head h1{margin:0;font-size:31px;line-height:1.15;letter-spacing:-.7px;color:var(--navy)}
    .head p{max-width:640px;margin:10px auto 0;color:var(--muted);font-size:15px;line-height:1.55}
    .content{padding:25px 28px 28px}
    .title{margin:0 0 5px;font-size:19px;color:var(--navy)}
    .package-title{text-align:center;margin-bottom:18px}
    .subtitle{margin:0 0 16px;color:var(--muted);font-size:14px;line-height:1.5}

    .packages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
    .package{position:relative;display:block;cursor:pointer}
    .package input{position:absolute;opacity:0;pointer-events:none}
    .package-card{
      position:relative;
      display:grid;
      grid-template-columns:minmax(0,1fr) auto;
      gap:6px 14px;
      min-height:116px;
      padding:17px 18px;
      border:2px solid var(--line);
      border-radius:15px;
      background:#fff;
      transition:border-color .16s ease,background .16s ease,box-shadow .16s ease;
    }
    .package-card:after{
      content:"";
      position:absolute;
      right:15px;
      bottom:14px;
      width:18px;
      height:18px;
      border:2px solid #bcc6d2;
      border-radius:50%;
      background:#fff;
    }
    .package input:checked + .package-card{
      border-color:var(--orange);
      background:#fffaf5;
      box-shadow:0 0 0 3px rgba(249,115,22,.10);
    }
    .package input:checked + .package-card:after{
      border:5px solid var(--orange);
    }
    .package-name{font-size:18px;font-weight:900;line-height:1.25;color:var(--navy)}
    .package-price{font-size:22px;font-weight:950;color:var(--orange-dark);white-space:nowrap}
    .package-desc{grid-column:1/-1;padding-right:28px;color:var(--muted);font-size:13px;line-height:1.45}

    .divider{height:1px;margin:25px 0;background:var(--line)}
    .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
    .field.full{grid-column:1/-1}
    .field label{display:block;margin-bottom:6px;font-size:13px;font-weight:850;color:#344054}
    input[type="text"],input[type="email"],textarea{
      width:100%;
      border:1px solid #cfd7e1;
      border-radius:11px;
      padding:12px 13px;
      background:#fff;
      color:var(--text);
      font:inherit;
      outline:none;
    }
    input[type="text"]:focus,input[type="email"]:focus,textarea:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(249,115,22,.10);
    }
    textarea{min-height:72px;resize:vertical}

    .bottom{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:18px;
      margin-top:20px;
      padding:16px;
      border-radius:14px;
      background:var(--soft);
      border:1px solid var(--line);
    }
    .selection{min-width:0}
    .selection small{display:block;margin-bottom:3px;color:var(--muted);font-size:12px;font-weight:700}
    .selection strong{display:block;color:var(--navy);font-size:16px;line-height:1.35}
    .selection span{display:block;margin-top:3px;color:var(--orange-dark);font-size:22px;font-weight:950}
    .pay-button{
      flex:0 0 auto;
      min-width:235px;
      border:0;
      border-radius:12px;
      padding:14px 18px;
      background:var(--orange);
      color:#fff;
      font-size:16px;
      font-weight:900;
      cursor:pointer;
    }
    .pay-button:hover{background:var(--orange-dark)}
    .secure{margin:12px 0 0;text-align:center;color:var(--muted);font-size:12px}

    .notice{margin-bottom:18px;padding:13px 14px;border-radius:11px;font-size:14px;line-height:1.5}
    .notice.error{border:1px solid #fda29b;background:#fff1f1;color:#b42318}
    .notice.config{border:1px solid #fedf89;background:#fffaeb;color:#7a2e0e}

    .legal-top-box{
      margin:0 0 22px;
      padding:16px 17px;
      border:1px solid #c4b5fd;
      border-radius:14px;
      background:#faf5ff;
      color:#312e81;
    }
    .legal-top-title{
      margin:0 0 8px;
      font-size:16px;
      font-weight:950;
      color:#4c1d95;
    }
    .legal-accept-label{
      display:flex;
      align-items:flex-start;
      gap:10px;
      cursor:pointer;
      font-size:14px;
      line-height:1.55;
    }
    .legal-accept-label input{
      width:19px;
      height:19px;
      margin:2px 0 0;
      flex:0 0 auto;
      accent-color:#7c3aed;
    }
    .legal-link{
      color:#6d28d9;
      font-weight:900;
      text-decoration:underline;
      text-underline-offset:2px;
    }
    .legal-top-help{
      margin:8px 0 0 29px;
      color:#64748b;
      font-size:12px;
      line-height:1.45;
    }
    .legal-modal[hidden]{display:none}
    .legal-modal{
      position:fixed;
      inset:0;
      z-index:99999;
      display:flex;
      align-items:center;
      justify-content:center;
      padding:18px;
    }
    .legal-modal-backdrop{
      position:absolute;
      inset:0;
      background:rgba(15,23,42,.72);
      backdrop-filter:blur(2px);
    }
    .legal-modal-dialog{
      position:relative;
      z-index:1;
      width:min(960px,100%);
      max-height:90vh;
      display:flex;
      flex-direction:column;
      border-radius:18px;
      background:#fff;
      box-shadow:0 30px 80px rgba(15,23,42,.34);
      overflow:hidden;
    }
    .legal-modal-head{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:15px;
      padding:16px 18px;
      border-bottom:1px solid #e2e8f0;
      background:#f8fafc;
    }
    .legal-modal-title{
      margin:0;
      color:#1e1b4b;
      font-size:19px;
      line-height:1.35;
    }
    .legal-modal-close{
      width:38px;
      height:38px;
      border:0;
      border-radius:10px;
      background:#e2e8f0;
      color:#334155;
      font-size:24px;
      font-weight:900;
      cursor:pointer;
    }
    .legal-modal-body{
      padding:20px;
      overflow:auto;
      overscroll-behavior:contain;
    }
    body.legal-modal-open{overflow:hidden}
    .legal-document{
      color:#172033;
      font-size:14px;
      line-height:1.65;
    }
    .legal-document h2{
      margin:0 0 16px;
      padding-bottom:10px;
      border-bottom:2px solid #e2e8f0;
      color:#312e81;
      font-size:20px;
      line-height:1.35;
    }
    .legal-document h2:not(:first-child){margin-top:28px}
    .legal-document h3{
      margin:22px 0 9px;
      color:#1e293b;
      font-size:16px;
    }
    .legal-document h4{
      margin:16px 0 7px;
      color:#334155;
      font-size:15px;
    }
    .legal-document p{margin:0 0 12px}
    .legal-document ul{margin:0 0 14px 22px;padding:0}
    .legal-document li{margin:0 0 7px}
    .legal-consent-statement{
      margin-top:18px !important;
      padding:14px;
      border:1px solid #c4b5fd;
      border-radius:12px;
      background:#f5f3ff;
      color:#4c1d95;
    }
    .legal-table-wrap{
      width:100%;
      margin:14px 0 18px;
      overflow-x:auto;
      border:1px solid #cbd5e1;
      border-radius:12px;
    }
    .legal-table{
      width:100%;
      min-width:700px;
      border-collapse:collapse;
      background:#fff;
    }
    .legal-table th,
    .legal-table td{
      padding:10px 11px;
      border-right:1px solid #cbd5e1;
      border-bottom:1px solid #cbd5e1;
      text-align:left;
      vertical-align:top;
    }
    .legal-table th{
      background:#f1f5f9;
      color:#0f172a;
      font-weight:900;
    }
    .legal-table th:last-child,
    .legal-table td:last-child{border-right:0}
    .legal-table tr:last-child td{border-bottom:0}

    .payment-ready{padding:4px 0 10px;text-align:center}
    .payment-ready h2{margin:0;color:var(--navy);font-size:23px}
    .payment-ready p{margin:7px 0 0;color:var(--muted);font-size:14px}
    .selected-payment{
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:16px;
      margin-top:18px;
      padding:15px 17px;
      border:1px solid var(--line);
      border-radius:13px;
      background:var(--soft);
    }
    .selected-payment b{font-size:16px;color:var(--navy)}
    .selected-payment span{display:block;margin-top:3px;color:var(--muted);font-size:12px}
    .selected-price{font-size:23px;font-weight:950;color:var(--orange-dark);white-space:nowrap}
    .paybox{margin-top:15px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#fff}

    @media(max-width:680px){
      body{padding:10px 8px 28px}
      .head{padding:22px 17px 18px}.head h1{font-size:26px}
      .content{padding:19px 15px 20px}
      .packages,.form-grid{grid-template-columns:1fr}
      .field.full{grid-column:auto}
      .package-card{min-height:105px}
      .bottom{align-items:stretch;flex-direction:column}
      .pay-button{width:100%;min-width:0}
      .selected-payment{align-items:flex-start;flex-direction:column}
      .legal-modal{padding:7px}
      .legal-modal-dialog{max-height:96vh;border-radius:13px}
      .legal-modal-body{padding:15px}
      .legal-top-help{margin-left:0}
    }
  </style>

</head>
<body>
<div class="page">
  <a class="back" href="/ia-tercih-robotu/">← Yapay Zeka Tercih Robotuna dön</a>

  <main class="box">
    <header class="head">
      <h1>Sonuç Belgesi Satın Al</h1>
      <p>Her sonuç belgesi için Yapay Zeka Tercih Robotuna sınırsız soru sorabilirsiniz ve tercih listesi hazırlayabilirsiniz. Farklı bir sonuç belgesi yüklediğinizde kullanım hakkınızdan düşülür.</p>
    </header>

    <div class="content">
      <?php if (!paytr_config_ready()): ?>
        <div class="notice config">
          <strong>PayTR API bilgileri eksik.</strong><br>
          Önce <code>paytr_config.php</code> dosyasına PayTR mağaza bilgilerini yazın.
        </div>
      <?php endif; ?>

      <?php if (!$activationDatabaseReady): ?>
        <div class="notice error">
          <strong>Ödeme sistemi geçici olarak kapalı.</strong><br>
          Aktivasyon veritabanı hazır olmadığı için ödeme alınmıyor.
          <?php if ($activationDatabaseError !== ''): ?>
            <br><small><?php echo paytr_h($activationDatabaseError); ?></small>
          <?php endif; ?>
        </div>
      <?php endif; ?>

      <?php if ($error !== ''): ?>
        <div class="notice error"><?php echo paytr_h($error); ?></div>
      <?php endif; ?>

      <?php if ($token !== ''): ?>
        <div class="payment-ready">
          <h2>Güvenli ödeme ekranı hazır</h2>
          <p>Ödemenizi aşağıdaki PayTR ekranından tamamlayabilirsiniz.</p>
        </div>

        <div class="selected-payment">
          <div>
            <b><?php echo paytr_h((string)$selectedPackage['name']); ?></b>
            <span>Sipariş No: <?php echo paytr_h((string)($order['merchant_oid'] ?? '')); ?></span>
          </div>
          <div class="selected-price"><?php echo paytr_h(paytr_format_tl((float)$selectedPackage['price_tl'])); ?></div>
        </div>

        <div class="paybox">
          <script src="https://www.paytr.com/js/iframeResizer.min.js?v2"></script>
          <iframe
            src="https://www.paytr.com/odeme/guvenli/<?php echo paytr_h($token); ?>"
            id="paytriframe"
            title="PayTR Güvenli Ödeme"
            frameborder="0"
            scrolling="no"
            style="width:100%;min-height:700px;">
          </iframe>
          <script>iFrameResize({}, '#paytriframe');</script>
        </div>
      <?php else: ?>
        <form method="post" autocomplete="on" id="paymentForm">
          <input type="hidden" name="csrf_token" value="<?php echo paytr_h($csrfToken); ?>">

          <section class="legal-top-box" aria-label="Yasal metin onayı">
            <h2 class="legal-top-title">Ödeme öncesi sözleşme ve açık rıza onayı</h2>
            <label class="legal-accept-label">
              <input
                type="checkbox"
                name="legal_accept"
                value="1"
                required
                <?php echo $legalAccepted ? 'checked' : ''; ?>>
              <span>
                <a href="#" class="legal-link" id="openKvkLegal">KVK Aydınlatma Ve Açık Rıza Formu</a>
                ve
                <a href="#" class="legal-link" id="openSalesLegal">Mesafeli Satış Sözleşmesi</a>’ni
                okudum ve kabul ediyorum.
              </span>
            </label>
            <p class="legal-top-help">
              Bağlantılara tıklayarak metinlerin tamamını okuyabilirsiniz. Onay vermeden güvenli ödeme ekranına geçilemez.
            </p>
          </section>

          <h2 class="title package-title">Paketinizi seçin</h2>

          <div class="packages" role="radiogroup" aria-label="Sonuç belgesi paketleri">
            <?php foreach ($packages as $code => $package): ?>
              <label class="package">
                <input
                  type="radio"
                  name="package_code"
                  value="<?php echo paytr_h($code); ?>"
                  data-name="<?php echo paytr_h((string)$package['name']); ?>"
                  data-price="<?php echo paytr_h(number_format((float)$package['price_tl'], 2, '.', '')); ?>"
                  <?php echo $requestedPackageCode === $code ? 'checked' : ''; ?>>
                <span class="package-card">
                  <span class="package-name"><?php echo paytr_h((string)$package['short_name']); ?></span>
                  <span class="package-price"><?php echo paytr_h(paytr_format_tl((float)$package['price_tl'])); ?></span>
                  <span class="package-desc"><?php echo paytr_h((string)$package['description']); ?></span>
                </span>
              </label>
            <?php endforeach; ?>
          </div>

          <div class="divider"></div>

          <h2 class="title">Ödeme bilgileri</h2>
          <p class="subtitle">PayTR ödeme ekranını açmak için bilgilerinizi girin.</p>

          <div class="form-grid">
            <div class="field full">
              <label for="user_name">Ad Soyad</label>
              <input id="user_name" type="text" name="user_name" value="<?php echo paytr_h($formValues['user_name']); ?>" maxlength="60" required>
            </div>
            <div class="field">
              <label for="email">E-posta</label>
              <input id="email" type="email" name="email" value="<?php echo paytr_h($formValues['email']); ?>" maxlength="160" required>
            </div>
            <div class="field">
              <label for="user_phone">Telefon</label>
              <input id="user_phone" type="text" name="user_phone" value="<?php echo paytr_h($formValues['user_phone']); ?>" placeholder="05xxxxxxxxx" inputmode="tel" maxlength="20" required>
            </div>
            <div class="field full">
              <label for="user_address">Adres</label>
              <textarea id="user_address" name="user_address" rows="2" maxlength="400"><?php echo paytr_h($formValues['user_address']); ?></textarea>
            </div>
          </div>

          <div class="bottom" aria-live="polite">
            <div class="selection">
              <small>Seçilen paket</small>
              <strong id="selectedName"><?php echo paytr_h((string)$selectedPackage['name']); ?></strong>
              <span id="selectedPrice"><?php echo paytr_h(paytr_format_tl((float)$selectedPackage['price_tl'])); ?></span>
            </div>
            <button class="pay-button" type="submit" <?php echo !$activationDatabaseReady ? 'disabled' : ''; ?>>
              <?php echo $activationDatabaseReady ? 'Güvenli Ödemeye Geç' : 'Ödeme Sistemi Hazır Değil'; ?>
            </button>
          </div>
          <div class="secure">🔒 Kart bilgileriniz Tercih Robotu sunucusunda tutulmaz.</div>
        </form>
      <?php endif; ?>
    </div>
  </main>
</div>

<div class="legal-modal" id="legalModal" hidden aria-hidden="true">
  <div class="legal-modal-backdrop" data-legal-close></div>
  <section class="legal-modal-dialog" role="dialog" aria-modal="true" aria-labelledby="legalModalTitle">
    <header class="legal-modal-head">
      <h2 class="legal-modal-title" id="legalModalTitle">Yasal Metin</h2>
      <button class="legal-modal-close" type="button" data-legal-close aria-label="Kapat">×</button>
    </header>
    <div class="legal-modal-body" id="legalModalBody"></div>
  </section>
</div>

<template id="kvkLegalTemplate">
<div class="legal-document">
<h2>1. BÖLÜM: KİŞİSEL VERİLERİN KORUNMASI KANUNU (KVKK) AYDINLATMA METNİ</h2>
<h3>1. VERİ SORUMLUSU</h3>
<p>6698 sayılı Kişisel Verilerin Korunması Kanunu (“KVKK”) uyarınca, kişisel verileriniz veri sorumlusu olarak Es Eğitim Danışmanlık Ltd. Şti. (“Şirket”) tarafından aşağıda açıklanan kapsamda işlenebilecektir.</p>
<h3>2. İŞLENEN KİŞİSEL VERİLERİNİZ</h3>
<p>Web sitemiz ve Yapay Zeka Tercih Robotu hizmetimiz kapsamında aşağıdaki verileriniz işlenmektedir:</p>
<ul>
<li>Kimlik ve İletişim Bilgileri: Ad, soyad, T.C. kimlik numarası (belge üzerinde yer alması halinde), e-posta adresi, telefon numarası.</li>
<li>İşlem Güvenliği Bilgileri: IP adresi, site giriş-çıkış kayıtları, şifre bilgileri.</li>
<li>Eğitim ve Sınav Bilgileri (ÖSYM Sonuç Belgesi): YKS/ÖSYM sınav puanları, başarı sıralamaları, yerleştirme puanları, lise mezuniyet bilgileri ve sonuç belgesi üzerinde yer alan diğer akademik ve kişisel veriler.</li>
<li>Finansal Bilgiler: Kredi kartı ile yapılan ödemelere ilişkin Paytr altyapısı tarafından işlenen (kart sahibinin adı, kartın son 4 hanesi vb.) işlem kayıtları.</li>
</ul>
<h3>3. KİŞİSEL VERİLERİN İŞLENME AMAÇLARI</h3>
<p>Kişisel verileriniz ve yüklediğiniz ÖSYM Sonuç Belgeleri şu amaçlarla işlenmektedir:</p>
<ul>
<li>Yapay Zeka Tercih Robotu hizmetinin sunulması, adaylara özel tercih listelerinin hazırlanması ve soruların yanıtlanması.</li>
<li>Kullanıcı hesaplarının oluşturulması, paket kredilerinin tanımlanması ve takibinin yapılması.</li>
<li>Finans ve muhasebe işlerinin yürütülmesi, faturalandırma süreçlerinin tamamlanması.</li>
<li>Bilgi güvenliği süreçlerinin yürütülmesi ve mevzuattan kaynaklanan hukuki yükümlülüklerin yerine getirilmesi.</li>
</ul>
<h3>4. İŞLENEN KİŞİSEL VERİLERİN AKTARILMASI</h3>
<p>Kişisel verileriniz, yukarıda belirtilen amaçların gerçekleştirilmesi doğrultusunda;</p>
<ul>
<li>Ödeme işlemlerinin güvenli bir şekilde tamamlanması amacıyla Paytr Sanal POS altyapısına,</li>
<li>Yapay zeka veri işleme modelinin çalıştırılması amacıyla (veriler anonimleştirilerek veya maskelenerek) ilgili bulut/altyapı sağlayıcılarına,</li>
<li>Yetkili kamu kurum ve kuruluşlarına (talep halinde ve hukuki yükümlülük gereği) aktarılabilecektir.</li>
</ul>
<h3>5. KİŞİSEL VERİ TOPLAMANIN YÖNTEMİ VE HUKUKİ SEBEBİ</h3>
<p>Kişisel verileriniz, tamamen elektronik ortamda, web sitemiz üzerindeki formlar, üyelik kayıt ekranı ve kendi rızanızla yüklediğiniz ÖSYM Sonuç Belgeleri vasıtasıyla toplanmaktadır. Bu veriler; KVKK md. 5/2 (c) bendi uyarınca &quot;Sözleşmenin kurulması ve ifası&quot;, md. 5/2 (ç) bendi uyarınca &quot;Veri sorumlusunun hukuki yükümlülüğü&quot; ve sonuç belgesi analizleri için &quot;Açık Rıza&quot; hukuki sebeplerine dayanılarak işlenmektedir.</p>
<h3>6. VERİ SAHİBİNİN HAKLARI (KVKK md. 11)</h3>
<p>Kanun’un 11. maddesi uyarınca Şirketimize başvurarak; verilerinizin işlenip işlenmediğini öğrenme, işlenmişse bilgi talep etme, işlenme amacını öğrenme, verilerin düzeltilmesini veya silinmesini isteme haklarına sahipsiniz. Başvurularınızı bilgi@esegitim.com adresine iletebilirsiniz.</p>
<h2>2. BÖLÜM: KVKK AÇIK RIZA FORMU</h2>
<p>Es Eğitim Danışmanlık Ltd. Şti. tarafından sunulan Yapay Zeka Tercih Robotu hizmetinden faydalanmak amacıyla sisteme yükleyeceğim ÖSYM Sonuç Belgesi içerisinde yer alan; sınav puanları, başarı sıralamaları, kimlik bilgileri ve diğer tüm eğitim/sınav verilerimin;</p>
<ul>
<li>Yapay zeka modeli tarafından analiz edilerek bana özel tercih listesi oluşturulması ve sorularımın yanıtlanması amacıyla işlenmesine,</li>
<li>Hizmetin teknik altyapısının sağlanması amacıyla sınırlı olarak iş ortakları ve altyapı sağlayıcıları ile paylaşılmasına,</li>
<li>Sistemde paket kredisinin takibi ve tercih geçmişimin saklanması amacıyla güvenli sunucularda muhafaza edilmesine,</li>
</ul>
<p class="legal-consent-statement"><strong>Aydınlatma Metni&#x27;ni okuyarak, tamamen kendi hür irademle AÇIK RIZA VERİYORUM.</strong></p>
</div>
</template>

<template id="salesLegalTemplate">
<div class="legal-document">
<h2>MESAFELİ SATIŞ SÖZLEŞMESİ</h2>
<h3>1. TARAFLAR</h3>
<h4>1.1. SATICI</h4>
<ul>
<li>Ticari Ünvan: ES Eğitim Danışmanlık Ltd.Şti.</li>
<li>Adres: Bulgurlu Mah.Libadiye Cad. No:17 B Blok D:1 Üsküdar-İstanbul</li>
<li>Telefon: 0532 564 72 09</li>
<li>E-posta: bilgi@esegitim.com</li>
<li>MERSİS No: 0377006555500014</li>
</ul>
<h4>1.2. ALICI</h4>
<ul>
<li>Adı Soyadı / Ünvanı:</li>
<li>Adres:</li>
<li>Telefon:</li>
<li>E-posta:</li>
</ul>
<h3>2. SÖZLEŞMENİN KONUSU</h3>
<p>İşbu Sözleşme’nin konusu; ALICI’nın, SATICI’ya ait internet sitesi üzerinden elektronik ortamda siparişini verdiği, aşağıda nitelikleri ve satış fiyatı belirtilen &quot;Yapay Zeka Tercih Robotu Sonuç Belgesi Kullanım Paketi&quot; dijital içeriğinin satışı ve teslimi ile ilgili olarak 6502 sayılı Tüketicinin Korunması Hakkında Kanun ve Mesafeli Sözleşmeler Yönetmeliği hükümleri uyarınca tarafların hak ve yükümlülüklerinin belirlenmesidir.</p>
<h3>3. SÖZLEŞME KONUSU ÜRÜN VE HİZMET BİLGİLERİ</h3>
<p>ALICI, seçtiği paket kapsamında ÖSYM Sonuç Belgesi yükleme ve Yapay Zeka Tercih Robotu&#x27;nu kullanma hakkı satın almıştır. Satın alınan dijital hizmetin detayları ve bedeli aşağıda belirtildiği gibidir:</p>
<div class="legal-table-wrap"><table class="legal-table">
<tr>
<th>Ürün / Hizmet Açıklaması</th>
<th>Adet / Hak</th>
<th>Birim Fiyatı</th>
<th>Toplam Tutar (KDV Dahil)</th>
</tr>
<tr>
<td>1 Sonuç Belgesi Paketi <br>(1 Belge üzerinden sınırsız soru sorma ve tercih listesi hazırlama)</td>
<td>1 Belge</td>
<td>200 TL</td>
<td>200 TL</td>
</tr>
<tr>
<td>50 Sonuç Belgesi Paketi <br>(50 farklı belge yükleme, her belge için sınırsız soru sorma ve tercih)</td>
<td>50 Belge</td>
<td>50 TL / Belge</td>
<td>2.500 TL</td>
</tr>
<tr>
<td>200 Sonuç Belgesi Paketi <br>(200 farklı belge yükleme, her belge için sınırsız soru sorma ve tercih)</td>
<td>200 Belge</td>
<td>37,5 TL / Belge</td>
<td>7.500 TL</td>
</tr>
<tr>
<td>500 Sonuç Belgesi Paketi <br>(500 farklı belge yükleme, her belge için sınırsız soru sorma ve tercih)</td>
<td>500 Belge</td>
<td>25 TL / Belge</td>
<td>12.500 TL</td>
</tr>
</table></div>
<ul>
<li>Ödeme Şekli: [Kredi Kartı / Banka Kartı]</li>
<li>Teslimat Şekli: Dijital olarak Alıcı hesabına anında tanımlama.</li>
</ul>
<h3>4. GENEL HÜKÜMLER</h3>
<ul>
<li>4.1. ALICI, sözleşme konusu hizmetin temel nitelikleri, satış fiyatı, ödeme şekli ve teslimata ilişkin tüm ön bilgileri okuyup bilgi sahibi olduğunu ve elektronik ortamda gerekli teyidi verdiğini beyan eder.</li>
<li>4.2. Sözleşme konusu hizmet, ALICI&#x27;nın ödemeyi tamamlamasını müteakip internet sitesi üzerinden ALICI&#x27;nın hesabına dijital olarak anında tanımlanır. Fiziksel bir kargo gönderimi yapılmayacaktır.</li>
<li>4.3. Satın alınan her bir sonuç belgesi yükleme hakkı, sisteme başarılı bir şekilde yüklenen farklı bir ÖSYM Sonuç Belgesi ile tüketilir. Yüklenen her bir belge için yapay zekaya sınırsız soru sorma ve tercih listesi hazırlama hakkı tanınır.</li>
<li>4.4. SATICI, sistemsel arızalar veya mücbir sebepler nedeniyle hizmetin kesintiye uğraması durumunda, ALICI&#x27;nın haklarını korumakla ve hizmeti en kısa sürede yeniden erişilebilir kılmakla yükümlüdür.</li>
</ul>
<h3>5. CAYMA HAKKI VE İSTİSNALARI</h3>
<p>Mesafeli Sözleşmeler Yönetmeliği’nin 15. maddesinin 1. fıkrasının (ğ) bendi uyarınca; &quot;Elektronik ortamda anında ifa edilen hizmetler veya tüketiciye anında teslim edilen gayrimaddi mallara ilişkin sözleşmelerde cayma hakkı kullanılamaz.&quot;</p>
<p>Bu kapsamda, ALICI&#x27;nın satın aldığı paketler dijital içerik ve anında ifa edilen hizmet niteliğinde olduğundan, siparişin onaylanması ve hakların ALICI hesabına tanımlanmasıyla birlikte ALICI&#x27;nın cayma hakkı bulunmamaktadır ve ücret iadesi yapılmaz. ALICI, bu hukuki şartı peşinen kabul ve beyan eder.</p>
<h3>6. UYUŞMAZLIKLARIN ÇÖZÜMÜ</h3>
<p>İşbu Sözleşme’nin uygulanmasında, Ticaret Bakanlığı tarafından ilan edilen değere kadar ALICI’nın yerleşim yerindeki Tüketici Hakem Heyetleri ile Tüketici Mahkemeleri yetkilidir.</p>
<h3>7. YÜRÜRLÜK</h3>
<p>ALICI, site üzerinden sipariş verdiğinde ve ödemeyi gerçekleştirdiğinde işbu sözleşmenin tüm şartlarını kabul etmiş sayılır. SATICI, siparişin gerçekleşmesi anında sözleşmenin onaylandığına dair teyidi ALICI&#x27;nın e-posta adresine gönderir.</p>
<p>SATICI: ES Eğitim Danışmanlık Ltd.Şti.</p>
<p>ALICI: <br>TARİH: 20.07.2026</p>
<h2>İPTAL VE İADE KOŞULLARI</h2>
<h3>1. GENEL İLKELER</h3>
<p>Es Eğitim Danışmanlık Ltd. Şti. (Bundan sonra &quot;SATICI&quot; olarak anılacaktır) tarafından işletilen web sitesi üzerinden sunulan hizmetler, dijital ortamda anında teslim edilen ve ifa edilen &quot;Yapay Zeka Tercih Robotu ÖSYM Sonuç Belgesi Paketi&quot; kapsamında yer almaktadır.</p>
<h3>2. CAYMA HAKKI KAPSAMI VE İSTİSNALARI</h3>
<ul>
<li>27 Kasım 2014 tarihli ve 29188 sayılı Resmî Gazete’de yayımlanan Mesafeli Sözleşmeler Yönetmeliği’nin &quot;Cayma Hakkının İstisnaları&quot; başlıklı 15. maddesinin (ğ) bendi uyarınca: &quot;Elektronik ortamda anında ifa edilen hizmetler veya tüketiciye anında teslim edilen gayrimaddi mallara ilişkin sözleşmelerde&quot; cayma hakkı kullanılamaz.</li>
<li>Web sitemiz üzerinden satın alınan sonuç belgesi paketleri, ödeme işlemi onaylandığı an ALICI&#x27;nın hesabına otomatik ve dijital olarak tanımlanarak kullanıma hazır hale geldiği için yasal olarak cayma hakkının istisnası kapsamında yer alır.</li>
</ul>
<h3>3. İPTAL VE İADE ŞARTLARI</h3>
<ul>
<li>Satın alma işlemi Paytr Sanal POS altyapısı üzerinden kredi kartı ile güvenli bir şekilde gerçekleştirilir. Ödeme başarıyla tamamlanıp paket kredisi hesaba tanımlandıktan sonra hizmetin iptali veya ücret iadesi mümkün değildir.</li>
<li>ALICI, satın alma işlemini gerçekleştirmeden önce sisteme yükleyeceği her farklı sonuç belgesinin paket kredisinden düşüleceğini ve bu hizmetin anında ifa edilen dijital bir içerik olduğunu peşinen kabul etmiş sayılır.</li>
</ul>
<h3>4. TEKNİK AKSAKLIKLAR VE ARALIKSIZ HİZMET GÜVENCESİ</h3>
<ul>
<li>SATICI&#x27;dan veya sistem altyapısından kaynaklanan teknik bir hata nedeniyle satın alınan paketin ALICI&#x27;nın hesabına tanımlanmaması veya eksik tanımlanması durumunda; ALICI durumu SATICI&#x27;nın iletişim kanallarına (e-posta veya destek hattı) bildirmelidir.</li>
<li>Yapılacak inceleme sonucunda hatanın sistemsel olduğu tespit edilirse, eksik haklar ALICI hesabına anında tanımlanır. Bu durumda da ücret iadesi yapılmaz, hizmetin eksiksiz ifası sağlanır.</li>
</ul>
<h3>5. İLETİŞİM BİLGİLERİ</h3>
<p>İptal, iade veya teknik aksaklıklarla ilgili her türlü soru ve bildirimleriniz için aşağıdaki iletişim kanallarından bize ulaşabilirsiniz:</p>
<ul>
<li>Şirket Unvanı: Es Eğitim Danışmanlık Ltd. Şti.</li>
<li>Adres: Bulgurlu Mah.Libadiye Cad. No:17 B Blok D:1 Üsküdar-İstanbul</li>
<li>E-posta: bilgi@esegitim.com</li>
</ul>
</div>
</template>

<script>
(function () {
  'use strict';
  const radios = Array.from(document.querySelectorAll('input[name="package_code"]'));
  const selectedName = document.getElementById('selectedName');
  const selectedPrice = document.getElementById('selectedPrice');

  const legalModal = document.getElementById('legalModal');
  const legalModalTitle = document.getElementById('legalModalTitle');
  const legalModalBody = document.getElementById('legalModalBody');
  const openKvkLegal = document.getElementById('openKvkLegal');
  const openSalesLegal = document.getElementById('openSalesLegal');
  let legalLastFocused = null;

  function openLegalModal(templateId, title) {
    const template = document.getElementById(templateId);
    if (!legalModal || !legalModalTitle || !legalModalBody || !template) return;

    legalLastFocused = document.activeElement;
    legalModalTitle.textContent = title;
    legalModalBody.innerHTML = template.innerHTML;
    legalModal.hidden = false;
    legalModal.setAttribute('aria-hidden', 'false');
    document.body.classList.add('legal-modal-open');

    const closeButton = legalModal.querySelector('.legal-modal-close');
    if (closeButton) closeButton.focus();
  }

  function closeLegalModal() {
    if (!legalModal) return;
    legalModal.hidden = true;
    legalModal.setAttribute('aria-hidden', 'true');
    legalModalBody.innerHTML = '';
    document.body.classList.remove('legal-modal-open');

    if (legalLastFocused && typeof legalLastFocused.focus === 'function') {
      legalLastFocused.focus();
    }
  }

  if (openKvkLegal) {
    openKvkLegal.addEventListener('click', function (event) {
      event.preventDefault();
      event.stopPropagation();
      openLegalModal('kvkLegalTemplate', 'KVK Aydınlatma Ve Açık Rıza Formu');
    });
  }

  if (openSalesLegal) {
    openSalesLegal.addEventListener('click', function (event) {
      event.preventDefault();
      event.stopPropagation();
      openLegalModal('salesLegalTemplate', 'Mesafeli Satış Sözleşmesi');
    });
  }

  document.querySelectorAll('[data-legal-close]').forEach(function (element) {
    element.addEventListener('click', closeLegalModal);
  });

  document.addEventListener('keydown', function (event) {
    if (event.key === 'Escape' && legalModal && !legalModal.hidden) {
      closeLegalModal();
    }
  });

  function formatTl(value) {
    const amount = Number(value || 0);
    const hasKurus = Math.abs(amount - Math.round(amount)) > 0.000001;
    return new Intl.NumberFormat('tr-TR', {
      minimumFractionDigits: hasKurus ? 2 : 0,
      maximumFractionDigits: hasKurus ? 2 : 0
    }).format(amount) + ' TL';
  }

  function updateSelection(radio) {
    if (!radio || !selectedName || !selectedPrice) return;
    selectedName.textContent = radio.dataset.name || '';
    selectedPrice.textContent = formatTl(radio.dataset.price || '0');
  }

  radios.forEach(function (radio) {
    radio.addEventListener('change', function () {
      if (radio.checked) updateSelection(radio);
    });
  });

  updateSelection(radios.find(function (radio) { return radio.checked; }));
}());
</script>
</body>
</html>
