<?php
session_start();

// আপনার ফাইল স্ট্রাকচার অনুযায়ী সঠিক কনফিগ ফাইলটি লোড করা
if (file_exists('../config.php')) {
    include '../config.php';
} else {
    include 'common/config.php';
}

if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}

// -------------------------------------------------------------------------
// ডাইনামিক API Keys এবং Site URL ডাটাবেজ থেকে ফেচ করা হচ্ছে
// -------------------------------------------------------------------------
$api_key = "";
$secret_key = "";
$brand_key = "";
$site_url = ""; // ডাটাবেজ থেকে সাইট ইউআরএল রাখার ভেরিয়েবল

if (isset($pdo) && $pdo instanceof PDO) {
    // এখানে 'site_url' ও কুয়েরিতে যোগ করা হয়েছে
    $stmt = $pdo->query("SELECT name, value FROM settings WHERE name IN ('shohoj_api_key', 'site_url')");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        if ($row['name'] == 'shohoj_api_key') {
            $api_key    = $row['value'];
            $secret_key = $row['value']; // আপনার নির্দেশানুযায়ী secret_key তে api_key দেওয়া হলো
            $brand_key  = $row['value']; // আপনার নির্দেশানুযায়ী brand_key তে api_key দেওয়া হলো
        }
        if ($row['name'] == 'site_url') {
            $site_url = $row['value'];
        }
    }
} else if (isset($conn)) {
    // এখানেও 'site_url' কুয়েরিতে যোগ করা হয়েছে
    $res = $conn->query("SELECT name, value FROM settings WHERE name IN ('shohoj_api_key', 'site_url')");
    while ($row = $res->fetch_assoc()) {
        if ($row['name'] == 'shohoj_api_key') {
            $api_key    = $row['value'];
            $secret_key = $row['value']; // আপনার নির্দেশানুযায়ী secret_key তে api_key দেওয়া হলো
            $brand_key  = $row['value']; // আপনার নির্দেশানুযায়ী brand_key তে api_key দেওয়া হলো
        }
        if ($row['name'] == 'site_url') {
            $site_url = $row['value'];
        }
    }
}

// site_url এর শেষে যদি '/' (slash) না থাকে, তবে সেটি হ্যান্ডেল করার জন্য ট্রিম করা হলো 
$site_url = rtrim(trim($site_url), '/');

// যদি ডাটাবেজে site_url না পাওয়া যায়, তবে ব্যাকআপ হিসেবে আগের URL টি কাজ করবে
if (empty($site_url)) {
    $url = "https://pay.shohojworldpay.com/api/payment/create";
} else {
    $url = $site_url . "/api/payment/create";
}
// -------------------------------------------------------------------------

$product_id = isset($_REQUEST['product_id']) ? (int)$_REQUEST['product_id'] : null;
$game_id    = isset($_REQUEST['game_id']) ? (int)$_REQUEST['game_id'] : 0;
$player_id  = isset($_REQUEST['player_id']) ? $_REQUEST['player_id'] : '';
$sub_email  = isset($_REQUEST['sub_email']) ? $_REQUEST['sub_email'] : '';
$amount     = isset($_REQUEST['amount']) ? (float)$_REQUEST['amount'] : 0;

if (!$product_id && $amount <= 0) { 
    header("Location: index.php"); 
    exit(); 
}

// ডাটাবেজ কানেকশন অবজেক্ট চেক করে প্রোডাক্টের দাম বের করা
if ($product_id > 0) {
    if (isset($pdo) && $pdo instanceof PDO) {
        $stmt = $pdo->prepare("SELECT * FROM products WHERE id = ?");
        $stmt->execute([$product_id]);
        $product = $stmt->fetch(PDO::FETCH_ASSOC);
    } else if (isset($conn)) {
        $product = $conn->query("SELECT * FROM products WHERE id=$product_id")->fetch_assoc();
    }

    if (isset($product) && $product) { 
        $amount = isset($product['price']) ? (float)$product['price'] : (float)$amount;
    } else if ($amount <= 0) {
        die("Product not found or invalid amount."); 
    }
}

// অটোমেটিক সাকসেস এবং ক্যান্সেল URL তৈরি করা
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domain = $_SERVER['HTTP_HOST'];
$script_path = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'])); 

$callback_url = $protocol . $domain . $script_path . "/success.php";
$cancel_url = $protocol . $domain . $script_path . "/cancel.php";

$data = [
    'amount' => $amount,
    'redirect_url' => $callback_url,
    'success_url' => $callback_url,
    'cancel_url' => $cancel_url,
    'customer_email' => $sub_email ?: 'customer@example.com' 
];

$headers = [
    "Content-Type: application/json",
    "Accept: application/json",
    "API-KEY: " . trim($api_key),
    "SECRET-KEY: " . trim($secret_key),
    "BRAND-KEY: " . trim($brand_key)
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

$response = curl_exec($ch);

if (curl_errno($ch)) {
    die("cURL Error: " . curl_error($ch));
}
curl_close($ch);

$res = json_decode($response, true);

if (isset($res['status']) && ($res['status'] == true || $res['status'] == 'true') && isset($res['payment_url'])) {
    $_SESSION['temp_order'] = [
        'product_id' => $product_id,
        'game_id' => $game_id,
        'player_id' => $player_id,
        'sub_email' => $sub_email,
        'amount' => $amount
    ];
    header("Location: " . $res['payment_url']);
    exit();
} else {
    echo "<div style='text-align:center; margin-top:50px; font-family:sans-serif; max-width:500px; margin-left:auto; margin-right:auto; padding:20px; border:1px solid #ecc94b; background:#fefcbf; border-radius:8px;'>";
    echo "<h2 style='color:#b7791f;'>Payment Initialization Failed!</h2>";
    echo "<p>Gateway Response Message: <b>" . htmlspecialchars($res['message'] ?? 'API Connection/Response Error') . "</b></p>";
    echo "<p style='color:#744210; font-size:13px;'>দয়া করে নিশ্চিত করুন যে আপনার API KEY, SECRET KEY এবং BRAND KEY মার্চেন্ট প্যানেলের সাথে হুবহু মিল আছে এবং আপনার ডোমেইনটি গেটওয়েতে অ্যাপ্রুভড আছে।</p>";
    echo "<button onclick='history.back()' style='padding:10px 20px; background:#2563eb; color:#fff; text-decoration:none; border-radius:5px; border:none; cursor:pointer; font-weight:bold; margin-top:10px;'>Go Back</button>";
    echo "</div>";
}
?>
