<?php


define('BOT_TOKEN', '8072408207:AAHO7GkKwd1QAnoNhHw6Rcx3UwAVQeTWjBg');
define('ADMIN_ID', 6711114410); // telegram id ادمین
define('HIDDIFY_API_KEY', '7c5a0479-4b27-4cc2-b41e-dbd5b3672f1b');
define('HIDDIFY_URL', 'https://hysteria.patraa.com/UpYfhqZmPrl9X6IkbCafF/api/v2/admin/user/');

$update = json_decode(file_get_contents('php://input'), true);
$chat_id = $update['message']['chat']['id'] ?? null;
$text = $update['message']['text'] ?? '';
$photo = $update['message']['photo'][0]['file_id'] ?? null;

// اتصال به دیتابیس
$pdo = new PDO("mysql:host=localhost;dbname=pypatraa_nearlifydb","pypatraa_root","5?u03WePRn8R");

// ✅ منو پلن
$plans = [
    "50 گیگ" => 50,
    "100 گیگ" => 100,
    "150 گیگ" => 150,
    "200 گیگ" => 200
];

// تابع ارسال پیام
function sendMessage($chat_id, $text, $reply_markup = null){
    $url = "https://api.telegram.org/bot".BOT_TOKEN."/sendMessage";

    $data = ['chat_id'=>$chat_id, 'text'=>$text];
    if($reply_markup) $data['reply_markup'] = json_encode($reply_markup);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // فقط اگر SSL مشکل داشت
    $result = curl_exec($ch);
    if($result === false){
        file_put_contents("curl_error.txt", curl_error($ch)."\n", FILE_APPEND);
    }
    curl_close($ch);
}





// تابع ارسال عکس
function sendPhoto($chat_id, $photo, $caption=''){
    $url = "https://api.telegram.org/bot".BOT_TOKEN."/sendPhoto";

    $data = ['chat_id'=>$chat_id, 'photo'=>$photo, 'caption'=>$caption];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $result = curl_exec($ch);
    if($result === false){
        file_put_contents("curl_error.txt", curl_error($ch)."\n", FILE_APPEND);
    }
    curl_close($ch);
}




// مرحله 2: انتخاب پلن
if(isset($plans[$text])){
    $plan_gb = $plans[$text];
    sendMessage($chat_id, "💳 مبلغ: ".($plan_gb*1000)." تومان\n🏦 شماره کارت: xxxx-xxxx-xxxx-xxxx\n👤 به نام: Example\n📸 لطفاً رسید پرداخت را ارسال کنید");
    
    // ذخیره در دیتابیس
    $stmt = $pdo->prepare("INSERT INTO users_orders (telegram_id, plan_gb, days, price) VALUES (?,?,?,?,?)");
    $stmt->execute([$chat_id, $plan_gb, 30, $plan_gb*1000]);
    exit;
}

// مرحله 3: دریافت عکس رسید
if($photo){
    // بروزرسانی آخرین سفارش pending
    $stmt = $pdo->prepare("UPDATE users_orders SET receipt_file_id=? WHERE telegram_id=? AND status='pending' ORDER BY id DESC LIMIT 1");
    $stmt->execute([$photo,$chat_id]);
    
    // ارسال به ادمین برای تایید
    $inline = [
        'inline_keyboard'=>[
            [
                ['text'=>'✅ تایید','callback_data'=>"approve:$chat_id"],
                ['text'=>'❌ رد','callback_data'=>"reject:$chat_id"]
            ]
        ]
    ];
    sendPhoto(ADMIN_ID, $photo, "رسید جدید از کاربر: $chat_id");
    sendMessage(ADMIN_ID, "✅ لطفا تایید یا رد کنید", $inline);
    sendMessage($chat_id, "📨 رسید شما دریافت شد، در انتظار تایید ادمین...");
    exit;
}

// مرحله 4: تایید پرداخت توسط ادمین (callback_query)
$callback = $update['callback_query'] ?? null;
if($callback){
    $data = $callback['data'];
    $from_id = $callback['from']['id'];
    $chat_id_target = explode(':', $data)[1];
    
    if($from_id != ADMIN_ID) exit;

    if(str_starts_with($data, 'approve')){
        // ساخت کاربر در Hiddify
        $stmt = $pdo->prepare("SELECT * FROM users_orders WHERE telegram_id=? AND status='pending' ORDER BY id DESC LIMIT 1");
        $stmt->execute([$chat_id_target]);
        $order = $stmt->fetch(PDO::FETCH_ASSOC);
        if(!$order) exit;

        $user_data = [
            "name"=>"user_".$chat_id_target,
            "package_days"=>$order['days'],
            "usage_limit_GB"=>$order['plan_gb'],
            "start_date"=>date('Y-m-d'),
            "enable"=>true,
            "is_active"=>true
        ];

        // درخواست cURL
        $ch = curl_init(HIDDIFY_URL);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Hiddify-API-Key: ".HIDDIFY_API_KEY,
            "Content-Type: application/json"
        ]);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($user_data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $response = curl_exec($ch);
        curl_close($ch);
        $resp = json_decode($response,true);
        $subscription_link = $resp['subscription_url'] ?? "لینک موجود نیست";

        // آپدیت دیتابیس
        $stmt = $pdo->prepare("UPDATE users_orders SET status='approved', hiddify_uuid=? WHERE id=?");
        $stmt->execute([$resp['uuid'] ?? null, $order['id']]);

        // ارسال به کاربر
        sendMessage($chat_id_target, "✅ پرداخت شما تایید شد و اکانت ساخته شد\n🔗 لینک اشتراک: $subscription_link");
    }

    if(str_starts_with($data,'reject')){
        $stmt = $pdo->prepare("UPDATE users_orders SET status='rejected' WHERE telegram_id=? ORDER BY id DESC LIMIT 1");
        $stmt->execute([$chat_id_target]);
        sendMessage($chat_id_target, "❌ پرداخت شما رد شد، لطفا دوباره اقدام کنید.");
    }

    exit;
}


?>
