<?php 
    ob_start(); // 🔧 Fix for "headers already sent"
    header('Content-Type: text/plain; charset=utf-8');
    include ("../serive/samparka.php");
?>

<?php 
if(isset($_GET['amount'])){
    $ramt = htmlspecialchars(mysqli_real_escape_string($conn, $_GET['amount']));
} else{
    $ramt = 0;
}

// Format the amount to ensure two decimal places
$dot_pos = strpos($ramt, '.');
if ($dot_pos === false) {
    $ramt = $ramt . '.00';
} else {
    $after_dot = substr($ramt, $dot_pos + 1);
    $after_dot_length = strlen($after_dot);
    if ($after_dot_length > 2) {
        $after_dot = substr($after_dot, 0, 2);
        $ramt = substr($ramt, 0, $dot_pos + 1) . $after_dot;
    } elseif ($after_dot_length < 2) {
        $zeros_to_add = 2 - $after_dot_length;
        $ramt = $ramt . str_repeat('0', $zeros_to_add);
    }
}

$date = date("Ymd");
$time = time();
$serial = $date . $time . rand(100000, 999900);

$tyid = htmlspecialchars(mysqli_real_escape_string($conn, $_GET['tyid']));
$uid = htmlspecialchars(mysqli_real_escape_string($conn, $_GET['uid']));
$sign = htmlspecialchars(mysqli_real_escape_string($conn, $_GET['sign']));
$urlInfo = htmlspecialchars(mysqli_real_escape_string($conn, $_GET['urlInfo']));

// Check if `uid` exists in the `demo` table
$demoQuery = "SELECT 1 FROM demo WHERE balakedara = '$uid'";
$demoResult = $conn->query($demoQuery);

if ($demoResult->num_rows > 0) {
    // If uid exists in demo table, insert into `thevani` table and update `motta`
    $createdate = date("Y-m-d H:i:s");
    
    // Insert into `thevani`
    $insertQuery = "
        INSERT INTO `thevani` (`balakedara`, `motta`, `dharavahi`, `mula`, `ullekha`, `duravani`, `ekikrtapavati`, `dinankavannuracisi`, `madari`, `pavatiaidi`, `sthiti`) 
        VALUES ('$uid', '$ramt', '$serial', 'IndianPay', 'N/A', 'N/A', 'N/A', '$createdate', '1005', '2', '1')
    ";
    $conn->query($insertQuery);

    // Update `motta` field in `shonu_kaichila`
    $updateQuery = "
        UPDATE `shonu_kaichila`
        SET `motta` = `motta` + $ramt
        WHERE `balakedara` = '$uid'
    ";
    $conn->query($updateQuery);

    // Redirect to recharge history
    header('Location: https://bdgwin11.info#/main');
    exit;
}

// If not found in `demo` table, proceed with the rest of the existing logic

$res = [
    'code' => 405,
    'message' => 'Illegal access!',
];
if (isset($_GET['tyid']) && isset($_GET['amount']) && isset($_GET['uid']) && isset($_GET['sign']) && isset($_GET['urlInfo'])) {
    $userId = $uid;
    $userPhoto = '1';

    $numquery = "SELECT mobile, codechorkamukala FROM shonu_subjects WHERE id = ".$userId;
    $numresult = $conn->query($numquery);
    $numarr = mysqli_fetch_array($numresult);

    $userName = '91'.$numarr['mobile'];
    $nickName = $numarr['codechorkamukala'];

    $creaquery = "SELECT createdate FROM shonu_subjects WHERE id = ".$userId;
    $crearesult = $conn->query($creaquery);
    $creaarr = mysqli_fetch_array($crearesult);

    $knbdstr = '{"userId":'.$userId.',"userPhoto":"'.$userPhoto.'","userName":'.$userName.',"nickName":"'.$nickName.'","createdate":"'.$creaarr['createdate'].'"}';
    $shonusign = strtoupper(hash('sha256', $knbdstr));

    $urlarr = explode(",", $urlInfo);
    $theirurl = $urlarr[0];
    $myurl = 'https://bdgwin11.info';

    if($shonusign == $sign && $theirurl == $myurl){
        
        function generatecMerchantSignature($method, $path, $accessKey, $accessSecret) {
            $timestamp = time(); 
            $nonce = rand(100000, 999999); 
            $access = base64_decode($accessSecret);
            $signString = strtoupper($method) . '&' . $path . '&' . $accessKey . '&' . $timestamp . '&' . $nonce . '&' . $access;
            $signature = md5($signString);
            return [
                'signature' => $signature,
                'timestamp' => $timestamp,
                'nonce' => $nonce
            ];
        }

        $orderid = $serial;
        $amount = htmlspecialchars(mysqli_real_escape_string($conn, $_GET['amount']));
        $name = 'TestName';
        $email = 'testemail@gmail.com';
        $mobile = $numarr['mobile'];
        $remark = 'remark';
        $type = 2;
        $notify_url = "https://bdgwin11.info/pay/cocksuckpay.php";

        if (!$ramt || !$serial) {
            die("Error: Amount or order ID not provided.");
        }

        function getRechargeOrderId() {
            return uniqid("RECH_", true);
        }

        $orderId = getRechargeOrderId();

        $requestBody = [
            "McorderNo"   => $serial,
            "Type"        => "inr",
            "Amount"      => $ramt,
            "CallBackUrl" => $notify_url,
            "JumpUrl"     => $myurl,
            "ChannelCode" => "71001"
        ];

        $method = 'POST';
        $apiHost = 'https://mcapi.colapayppp.com';
        $path = '/api/v2/create';
        $accessKey = "WMxZt9ibZUSEqOnDrhD31w";
        $accessSecret = "NC9tSGxzVWxka3FpZytNY1pSTnJKQQ==";

        $signatureData = generatecMerchantSignature($method, $path, $accessKey, $accessSecret);

        $headers = [
            'Content-Type: application/json',
            'accessKey: ' . $accessKey,
            'timestamp: ' . $signatureData['timestamp'],
            'nonce: ' . $signatureData['nonce'],
            'sign: ' . $signatureData['signature']
        ];

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $apiHost . $path);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestBody));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        if (curl_errno($ch)) {
            echo "Curl error: " . curl_error($ch);
            curl_close($ch);
            exit;
        }

        curl_close($ch);

        $resData = json_decode($response, true);

        if ($httpCode === 200 && isset($resData['code']) && $resData['code'] == 200 && isset($resData['result']['payUrl'])) {

            $amt = $amount;
            $srl = $serial;
            $source = 'SG-pay';

            // 🔧 Fix for undefined variable `$un`
            $ref_num = isset($resData['result']['order_id']) ? $resData['result']['order_id'] : 'N/A';

            $emailQ = mysqli_query($conn , "SELECT * FROM `shonu_subjects` WHERE `id` = '".$uid."'");
            $emailA = mysqli_fetch_array($emailQ);
            $email = $emailA['mobile'];
            $upi = 'IndianPayUPI';
            $createdate = date("Y-m-d H:i:s");

            // Insert payment record into `thevani`
            $deposit1 = mysqli_query($conn, "INSERT INTO `thevani`(`balakedara`, `motta`, `dharavahi`, `mula`, `ullekha`, `duravani`, `ekikrtapavati`, `dinankavannuracisi`, `madari`, `pavatiaidi`, `sthiti`) 
            VALUES('$uid', '$amount', '$srl', '$source','$ref_num', '$email', '$upi', '$createdate', '1005', '2', '0')");

            header('Location: ' . $resData['result']['payUrl']);
            exit;
        } else {
            echo json_encode([
                "status" => false,
                "message" => "Failed to get payUrl.",
                "debug" => $resData
            ]);
        }
    } else {
        $res['code'] = 10000;
        $res['success'] = 'false';
        $res['message'] = 'Sorry, The system is busy, please try again later!';

        header('Content-Type: application/json; charset=utf-8');
        http_response_code(200);
        echo json_encode($res);
    }
} else {
    header('Content-Type: application/json; charset=utf-8');
    http_response_code(200);
    echo json_encode($res);	
}
?>
