HEX
Server: Apache/2.4.37 (CentOS Stream) OpenSSL/1.1.1k
System: Linux ysnet.com.tw 4.18.0-553.5.1.el8.x86_64 #1 SMP Tue May 21 05:46:01 UTC 2024 x86_64
User: test (521)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: //proc/thread-self/cwd/member.php
<?php
    session_start(); // 啟用 Session

    // 檢查是否已登入
    if (!isset($_SESSION['user'])) {
        header('Location: login.php'); // 未登入,跳轉回登入頁面
        exit();
    }

    // 獲取會員資料
    $user = $_SESSION['user'];
    $name = $_SESSION['name'];
    $member = $_SESSION['member'];
    $endday = $_SESSION['endday'];
    $code2 = $_SESSION['code2'];
    $speed = $_SESSION['speed'];
	$month = $_SESSION['month'];
    $season = $_SESSION['season'];
    $halfyear = $_SESSION['halfyear'];
    $year = $_SESSION['year'];
    $twoyear = $_SESSION['twoyear'];
    $discount = $_SESSION['discount'];
    $email = $_SESSION['email'];
	$ecpay = $_SESSION['ecpay'];
	$rtn_code = $_SESSION['rtn_code'];
	$ecpay_number = $_SESSION['ecpay_number'];
	$rtn_msg = $_SESSION['rtn_msg'];
	// ---------- 1) 計算今天與 $endday 相差天數,判斷是否大於 30 天 ----------
	// 使用 DateTime 物件來計算相差天數
	$todayObj  = new DateTime();           // 今天
	$endDateObj = new DateTime($endday);   // 從 Session 取得的到期日

	if ($todayObj > $endDateObj) {
	    // 這裡可以放你要的邏輯,例如:
	    // echo "今天距離 $endday 超過 30 天";
	    // 或是記錄某些狀態、跳轉畫面等
	    $isOver30Days = true;
	} else {
	    $isOver30Days = false;
	}
	// ---------------------------------------------------------------------------
	
	// ---------- 2) 計算「到期日 - 14 天」顯示付款按鈕 ----------
	// 注意:若要保留 $endday 原始值,請先用 clone 或另外建立物件
	$endDateClone = clone $endDateObj; // 不要直接改動 $endDateObj
	$endDateClone->modify('-14 days'); // 減去 14 天
    $limitDate = $endDateClone->format('Y-m-d'); // 轉為 YYYY-MM-DD 格式

    $today = date('Y-m-d');

    $showPaymentButtons = ($today >= $limitDate);

	$isSubscription = (strpos($speed, '定期') !== false) ? 1: 0;

	$ecpay_ok = ($rtn_code == 1);
	
    // 將資費選項轉為 JSON 格式,讓 JavaScript 讀取
    $plan_options = [
        "season" => !empty($season) ? ["price" => $season, "barcode" => $season] : null,
        "halfyear" => !empty($halfyear) ? ["price" => $halfyear, "barcode" => $halfyear] : null,
        "year" => !empty($year) ? ["price" => $year, "barcode" => $year] : null,
        "twoyear" => !empty($twoyear) ? ["price" => $twoyear, "barcode" => $twoyear] : null
    ];

    // 移除 `null` 值的選項(只保留有值的)
    $plan_options = array_filter($plan_options);
?>
<!DOCTYPE html>
<html lang="zh-TW">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>會員資料</title>
        <style>
            body {
                margin: 0;
                padding: 0;
                font-family: Arial, sans-serif;
                background-color: #f9f9f9;
                color: #333;
                display: flex;
                justify-content: center;
                align-items: center;
                height: 100vh;
            }

            .container {
                width: 90%;
                max-width: 600px;
                background-color: #fff;
                border-radius: 10px;
                box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);
                padding: 20px;
            }

            .header {
                text-align: center;
                margin-bottom: 20px;
            }

            .member-info {
                margin: 20px 0;
            }

            .member-info div {
                display: flex;
                justify-content: space-between;
                padding: 10px 0;
                border-bottom: 1px solid #eaeaea;
            }

            .payment-buttons {
                text-align: center;
                margin-top: 20px;
            }

            .payment-buttons button {
                background-color: #4CAF50;
                color: #fff;
                border: none;
                padding: 10px 15px;
                border-radius: 5px;
                font-size: 16px;
                cursor: pointer;
                margin: 5px;
            }

            .payment-info {
                display: none;
                margin-top: 20px;
                padding: 15px;
                background-color: #e9f7ef;
                border-left: 4px solid #4CAF50;
                font-size: 14px;
                color: #333;
                border-radius: 5px;
            }

            .plan-selection {
                display: flex;
                justify-content: center; /* 讓選項置中 */
                gap: 15px; /* 選項之間的間距 */
                margin-top: 10px;
                flex-wrap: wrap; /* 讓選項可以自動換行 */
            }

            .plan-selection label {
                display: flex;
                flex-direction: column; /* 讓名稱 & 金額 垂直排列 */
                align-items: center; /* 讓內容水平置中 */
                font-size: 16px;
                padding: 10px;
                border: 1px solid #ddd;
                border-radius: 5px;
                background-color: #f8f8f8;
                cursor: pointer;
                width: 120px; /* 固定寬度讓排版整齊 */
                text-align: center;
            }

            .plan-selection label:hover {
                background-color: #e0e0e0;
            }

            /* 電腦版顯示的提醒文字 */
            .desktop-warning {
                text-align: center;
                font-size: 16px;
                font-weight: bold;
                color: red;
                margin-top: 20px;
            }

            /* 登出按鈕樣式 */
            .logout-button {
                background-color: #d9534f;
                color: #fff;
                border: none;
                padding: 10px 20px;
                border-radius: 5px;
                font-size: 16px;
                cursor: pointer;
                transition: background-color 0.3s;
                margin-top: 20px;
            }

            .logout-button:hover {
                background-color: #c9302c;
            }

            .actions {
                text-align: center;
                margin-top: 20px;
            }

            .note {
                text-align: center;
                margin-top: 20px;
                font-size: 14px;
                color: #888;
            }
            
            .change-password-button {
                background-color: #007bff;
                color: #fff;
                border: none;
                padding: 10px 20px;
                border-radius: 5px;
                font-size: 16px;
                cursor: pointer;
                transition: background-color 0.3s;
                margin-right: 10px;
            }

            .change-password-button:hover {
                background-color: #0056b3;
            }

            .change-email-button {
                background-color:rgba(255, 145, 0, 0.86);
                color: #fff;
                border: none;
                padding: 10px 20px;
                border-radius: 5px;
                font-size: 16px;
                cursor: pointer;
                transition: background-color 0.3s;
                margin-right: 10px;
            }

            .change-email-button:hover {
                background-color:rgb(255, 145, 0);
            }
			
			.barcode-container {
                display: flex;
                flex-direction: column;
                align-items: center; /* 條碼內容置中 */
                justify-content: center;
                margin: 10px 0;
                padding: 5px 10px;
                background-color: #fff;
                border-radius: 5px;
                text-align: center;
            }

			.barcode-label {
    			flex: 1;
    			font-weight: bold;
    			text-align: left;
			}

			.barcode {
    			flex: 2;
    			text-align: right;
			}

			.barcode svg {
    			max-width: 100%;
    			height: auto; /* 避免條碼太大 */
			}

            .download-invoice-button {
                background-color: #007bff; /* 藍色背景,可改成喜歡的顏色 */
                color: #fff;               /* 白字 */
                border: none;             /* 不需要預設的邊框 */
                padding: 10px 20px;       /* 按鈕內距 */
                font-size: 16px;          /* 字體大小 */
                border-radius: 5px;       /* 圓角 */
                cursor: pointer;          /* 滑鼠變手指 */
                transition: background-color 0.3s; /* 漸變 */
            }

                /* 滑鼠懸停時改變背景顏色 */
            .download-invoice-button:hover {
                background-color: #0056b3; /* 可再深一些的藍 */
            }
        </style>
        <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/JsBarcode.all.min.js"></script>
       	<script src="/js/iframe-resizer-helper.js"></script>
    </head>
    <body>
        <div class="container">
            <div class="header">
                <h1>會員資料</h1>
                <p>歡迎回來,以下是您的會員資訊。</p>
            </div>

            <div class="member-info">
                <div><span class="label">客戶編號:</span><span><?php echo htmlspecialchars($user); ?></span></div>
                <div><span class="label">社區名稱:</span><span><?php echo htmlspecialchars($member); ?></span></div>
                <div><span class="label">客戶姓名:</span><span><?php echo htmlspecialchars($name); ?></span></div>
                <div><span class="label">電子信箱:</span><span><?php echo htmlspecialchars($email); ?></span></div>
        		<div><span class="label">寬頻方案:</span><span><?php echo htmlspecialchars($speed); ?>(下行/上行)bps</span></div>
        		<?php if ($isSubscription): ?>
                	<div><span class="label">定期定額資費:</span><span><?php echo htmlspecialchars($month); ?>元/月</span></div>
        		<?php endif; ?>
                <div><span class="label">網路租約到期日:</span><span><?php echo htmlspecialchars($endday); ?></span></div>
                <?php if ($isSubscription): ?>
                	<?php if ($ecpay_ok): ?>
    					<?php if (!empty($ecpay)): ?>
        					<div>
            					<span class="label">定期定額扣款成功:</span>
            					<span><?php echo htmlspecialchars($ecpay); ?></span>
        					</div>
        					<?php if (strtotime($ecpay) > strtotime($endday)): ?>
            					<p style="text-align: right; width: 100%; display: block; font-size: 12px; color: #888; margin: 5px 0 0 0;">
                					※ 定期定額扣款日期為系統自動更新,與人工更新的網路租約到期日可能不同。
            					</p>
        					<?php endif; ?>
    					<?php endif; ?>
					<?php elseif (!empty($ecpay_number)): ?>
    					<div>
        					<span class="label">定期定額扣款狀態:</span>
        					<span style="color: red; text-align: right;">❌ 扣款失敗,請確認您的信用卡資訊或帳戶餘額<br>或與客服聯繫(03)358-5867。</span>
    					</div>
						<p style="text-align: right; width: 100%; display: block; font-size: 12px; color: #888; margin: 5px 0 0 0;">
                			上一次扣款成功日期:<?php echo $ecpay?>。
            			</p>
					<?php endif; ?>
                <?php endif; ?>
				<?php if (empty($ecpay)): ?>
                	<?php if ($isOver30Days): ?>
						<p style="font-size: 14px; color: red; text-align: right; margin-top: 5px;">
							⚠️ 使用期限已逾期,請盡快繳費。
						</p>
				 	<?php endif; ?>
				 	<?php if (!$isSubscription): ?>
                		<div><span class="label">續期優惠:</span><span><?php echo htmlspecialchars($discount); ?></span></div>
				 	<?php endif; ?>
				<?php endif; ?>
            </div>

			<?php if ($showPaymentButtons): ?>
    		<div class="payment-buttons">
        		<?php if (!$isSubscription): ?>
            	<!-- 1. ATM轉帳 -->
            	<button onclick="showPaymentInfo('atm')">ATM轉帳</button>

            	<!-- 2. 銀行匯款 -->
            	<button onclick="showPaymentInfo('bank')">銀行匯款</button>

            	<!-- 3. 下載帳單/手機條碼 -->
            	<button id="storeBtn" onclick="showPaymentInfo('store')">載入中...</button>

            	<!-- 4. 申請信用卡定期定額付款 -->
                	<button onclick="showPaymentInfo('applyecpay')">申請信用卡定期定額付款</button>

        		<?php else : ?>
            		<!-- 定期定額模式下的按鈕處理 -->
            		<?php if (empty($ecpay_number)): ?>
                		<button onclick="showPaymentInfo('subscription')">開始信用卡定期付款設定</button>
            		<?php else : ?>
                		<?php if ($rtn_msg === "是"): ?>
                    		<div class="payment-info" style="display: block;">
                        		<strong>信用卡定期付款已終止</strong><br>
                        		您的信用卡定期付款功能,已終止,網路服務可使用至網路租月到期日止。
                    		</div>
                		<?php else : ?>
                    		<button onclick="showPaymentInfo('dropscription')">申請終止定期定額付款</button>
                		<?php endif; ?>
            		<?php endif; ?>
        		<?php endif; ?>
    		</div>
			<?php endif; ?>
            <div id="paymentInfo" class="payment-info"></div>

            <div class="actions">
                <button class="change-email-button" onclick="location.href='changeemail.php'">修改電子信箱</button>
                <button class="change-password-button" onclick="location.href='newpwd.php'">修改密碼</button>
                <button class="logout-button" onclick="location.href='logout.php'">登出</button>
            </div>

            <div class="note">
                如有疑問,請聯繫客服:03-3585867
            </div>

        </div>

        <script>
            
			document.addEventListener("DOMContentLoaded", function () {
   				const isMobile = /Mobi|Android/i.test(navigator.userAgent);
    			const storeBtn = document.getElementById("storeBtn");
    			if (storeBtn) {
        			storeBtn.textContent = isMobile ? "手機條碼" : "下載帳單";
    			}
			});

			const isMobile = /Mobi|Android/i.test(navigator.userAgent); //判斷是否為手機
            let barcode2 = "<?php echo $code2; ?>";  // ✅ 直接從 PHP 變數讀取 code2
			let planOptions = <?php echo json_encode($plan_options); ?>; // 讓 PHP 變數變成 JS 物件
			let userSpeed = "<?php echo htmlspecialchars($speed); ?>";
    		let userMonth = "<?php echo htmlspecialchars($month); ?>";
			// 檢測是否為手機裝置
    		function isMobileDevice() {
        		return /Mobi|Android/i.test(navigator.userAgent);
    		}

            // 用來生成可繳方案的顯示區塊 (僅顯示,不供選擇)
            function displayPlanOptions() {
                let html = "";
                if (Object.keys(planOptions).length > 0) {
                    html += `<div class="plan-display" style="margin-top: 15px; display: flex; justify-content: flex-end; align-items: center;">
                                <strong style="margin-right: 10px;">資費方案:</strong>`;
                    for (let key in planOptions) {
                        html += `<span style="margin-left: 10px;">${getPlanName(key)}:${planOptions[key].price} 元</span>`;
                    }
                    html += `</div>`;
                }
                return html;
            }
			
			let currentInfoType = null; // ✅ 用來記錄目前展開的是哪個付款方式
			
            function showPaymentInfo(type) {
                let paymentDiv = document.getElementById("paymentInfo");
				// ✅ 如果再次點選相同的按鈕 → 收起該區塊
    			if (currentInfoType === type && paymentDiv.style.display === "block") {
    				paymentDiv.style.display = "none";
    				paymentDiv.innerHTML = "";
    				currentInfoType = null;

    				// ✅ 關閉時強制通知父頁更新高度(延遲補抓兩次)
    				setTimeout(() => {
        				if (typeof notifyParentOfHeightChange === "function") notifyParentOfHeightChange();
    				}, 100);
    				setTimeout(() => {
        				if (typeof notifyParentOfHeightChange === "function") notifyParentOfHeightChange();
    				}, 300);

    				return;
				}

    			currentInfoType = type; // ✅ 更新目前狀態
    			let info = "";
            	let userID = "<?php echo htmlspecialchars($user); ?>";
				let useremail = "<?php echo htmlspecialchars($email)?>";

                if (type === "atm") {
                    info = `<strong>ATM轉帳</strong><br>
                    請匯款至以下帳號:<br>
                    銀行:812(台新銀行)<br>
                    帳號:${barcode2}<br>
                    完成繳款後,請聯繫客服確認。`;
                    // 直接附加可繳方案資訊
                    info += displayPlanOptions();
                } else if (type === "bank") {
                    info = "<strong>銀行匯款</strong><br>收款銀行:台新銀行 北桃園分行<br>收款人帳號:20750100007936<br>收款人戶名:亞訊股份有限公司<br><br>完成繳款後,請聯繫客服確認。";
                    // 直接附加可繳方案資訊
                    info += displayPlanOptions();
                } else if (type === "applyecpay"){
                	info = `
      				<strong>申請定期定額付款繳費</strong><br>
      				請填寫以下資訊送出申請,我們將於 1~2 個工作天內與您聯繫。<br><br>
      				<form id="cancelSubscriptionForm" method="POST" onsubmit="submitCancelForm(event)">
        				<label for="user_id">用戶 ID:</label><br>
        				<input type="text" id="user_id" name="user_id" value="${userID}" readonly 
               			style="width:70%;padding:8px;border:1px solid #ccc;border-radius:5px;"><br><br>
						<label for="phone">聯繫手機號碼:</label><br>
        				<input type="text" id="phone" name="phone" required pattern="^09\\d{8}$" placeholder="例如:0912345678"
               			style="width:70%;padding:8px;border:1px solid #ccc;border-radius:5px;"><br><br>						
                        <input type="hidden" id="email" name = "email" value = "${useremail}">
						<input type="hidden" id="apply" name = "apply" value = "apply">
        				<button type="submit" style="
          					background-color: #e53935;
          					color: white;
          					border: none;
          					padding: 10px 20px;
          					font-size: 16px;
          					border-radius: 8px;
          					cursor: pointer;
          					transition: background-color 0.3s, transform 0.2s;">
          					送出申請
        				</button>
      				</form>
					<div id="popupModal" style="display: none; position: fixed; z-index: 9999; left: 50%; top: 50%;
						transform: translate(-50%, -50%); background-color: white; border-radius: 10px; box-shadow: 0 4px 12px rgba(0,0,0,0.3);
	                    padding: 30px 40px; text-align: center; font-size: 16px;">
					<span id="popupMessage">訊息</span><br><br>
					<button onclick="closePopup()" style=" background-color: #1976d2; color: white; border: none;
		                padding: 8px 16px; border-radius: 6px; cursor: pointer;">關閉</button>
					</div>
					<div id="popupOverlay" style=" display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;
	                    background-color: rgba(0,0,0,0.4); z-index: 9998;"></div>`;
                } else if (type === "subscription") {
					info = `<strong>定期付款說明</strong><br>
                    使用第三方安全支付平台(綠界科技)處理交易與付款,無論是交易過程中或交易後,本公司皆不保留任何信用卡資料,
					如選擇儲存信用卡資料,卡片資料將以代碼化方式安全加密儲存於第三方支付平台,並自動傳送至發卡銀行進行交易授權。<br><br>
                    <strong>方案名稱與金額如下:</strong><br>
    				寬頻方案:${userSpeed} (下行/上行)bps<br>
    				每月費用:${userMonth} 元/月<br><br>`;

    				// 額外附上 displayPlanOptions() 如果你還要顯示其他選項(如可選方案)
    				info += displayPlanOptions();

    				// 加上確認送出按鈕
    				 info += `<br>
            		<form id="subscriptionForm" method="POST" action="ecpay_subscription.php" target="_top">
                		<input type="hidden" name="user" value="<?php echo htmlspecialchars($user); ?>">
                		<input type="hidden" name="month" value="<?php echo htmlspecialchars($month); ?>">
						<div style="text-align: center;">
                			<button type="button" style="margin-top: 10px; background-color: #4CAF50; color: white; border: none; 
                              padding: 12px 24px; font-size: 16px; font-weight: bold; border-radius: 8px; cursor: pointer; 
                              transition: background-color 0.3s, transform 0.2s;" 
        						onmouseover="this.style.backgroundColor='#45a049'; this.style.transform='translateY(-3px)';"
        						onmouseout="this.style.backgroundColor='#4CAF50'; this.style.transform='translateY(0)';"
        						onmousedown="this.style.backgroundColor='#388e3c'; this.style.transform='translateY(1px)';"
        						onmouseup="this.style.backgroundColor='#45a049'; this.style.transform='translateY(-3px)';"
        						onclick="showRedirectWarning()">前往設定信用卡自動扣款</button>
						</div>						
            		</form>`;
				} else if (type === "dropscription") {
					 info = `
      				<strong>申請終止定期定額付款</strong><br>
      				請填寫以下資訊送出申請,我們將於 1~2 個工作天內與您聯繫。<br><br>
      				<form id="cancelSubscriptionForm" method="POST" onsubmit="submitCancelForm(event)">
        				<label for="user_id">用戶 ID:</label><br>
        				<input type="text" id="user_id" name="user_id" value="${userID}" readonly 
               			style="width:20%;padding:8px;border:1px solid #ccc;border-radius:5px;"><br><br>
						<label for="phone">聯繫手機號碼:</label><br>
        				<input type="text" id="phone" name="phone" required pattern="^09\\d{8}$" placeholder="例如:0912345678"
               			style="width:24%;padding:8px;border:1px solid #ccc;border-radius:5px;"><br><br>
        				<label for="reason">終止原因:</label><br>
        				<textarea name="reason" rows="4" placeholder="請簡述原因..." required
                  		style="width:80%;padding:8px;border:1px solid #ccc;border-radius:5px;"></textarea><br><br>
						
                        <input type="hidden" id="email" name = "email" value = "${useremail}">
        				<button type="submit" style="
          					background-color: #e53935;
          					color: white;
          					border: none;
          					padding: 10px 20px;
          					font-size: 16px;
          					border-radius: 8px;
          					cursor: pointer;
          					transition: background-color 0.3s, transform 0.2s;">
          					送出申請
        				</button>
      				</form>
					<div id="popupModal" style="display: none; position: fixed; z-index: 9999; left: 50%; top: 50%;
						transform: translate(-50%, -50%); background-color: white; border-radius: 10px; box-shadow: 0 4px 12px rgba(0,0,0,0.3);
	                    padding: 30px 40px; text-align: center; font-size: 16px;">
					<span id="popupMessage">訊息</span><br><br>
					<button onclick="closePopup()" style=" background-color: #1976d2; color: white; border: none;
		                padding: 8px 16px; border-radius: 6px; cursor: pointer;">關閉</button>
					</div>
					<div id="popupOverlay" style=" display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;
	                    background-color: rgba(0,0,0,0.4); z-index: 9998;"></div>`;
            	} else if (type === "store") {
            		// 如果不是手機裝置,顯示僅供手機使用訊息
            		if (!isMobileDevice()) {
                		//info = `<p style="color: red; text-align: center;">超商繳費僅供手機使用</p>`;
                        info = `
                            <div style="text-align:center; margin-top: 10px;">
                            <button class="download-invoice-button" onclick="downloadInvoice()">
                            下載帳單 (PDF)
                            </button>
                            </div>
                        `;
           			} else {
                        let barcode1 = generateBarcodeNumber();
                        if (!barcode2 || barcode2.trim() === "null") barcode2 = "0000000000"; 

                        info += `
                            <strong>超商繳費</strong><br>
                            <span style="color: red; font-weight: bold; font-size: 16px;">⚠️ 顯示條碼時請將手機螢幕亮度調到最亮!</span><br>
                            <div class='barcode-container'>
                                <div class='barcode-label'>第一條碼</div>
                                <div class='barcode'><svg id="barcode1"></svg><div></div></div>
                            </div>
                            <div class='barcode-container'>
                                <div class='barcode-label'>第二條碼</div>
                                <div class='barcode'><svg id="barcode2"></svg><div></div></div>
                            </div>`;

                        // 產生一維條碼
                        setTimeout(() => {
                            let options = { format: "CODE39", displayValue: true, fontSize: 14, height: 50 };  // 統一條碼大小
                            JsBarcode("#barcode1", barcode1, options);
                            JsBarcode("#barcode2", barcode2, options);
                        }, 100);

                        // 生成付款選項
                        if (Object.keys(planOptions).length > 0) {
                            info += `<div id="thirdBarcode" class='third-barcode' style="margin-bottom: 15px;"></div>`;  // 第三條碼在方案上方
                            info += `<div class="plan-selection">`;
                            for (let key in planOptions) {
                                info += `<label>
                                            <input type="radio" name="plan" value="${key}" onclick="showThirdBarcode('${key}')"> 
                                            ${getPlanName(key)} ${planOptions[key].price} 元
                                        </label>`;
                            }
                            info += `</div>`;
                        } else {
                            info += `<p style="color:red; text-align:center;">⚠️ 沒有可用的資費方案</p>`;
                        }
                    }
                }  
                // 最後再顯示
                paymentDiv.innerHTML = info;
                paymentDiv.style.display = "block";
				// 更新 iframe 高度
				setTimeout(() => {
  					if (typeof updateIframeHeight === "function") updateIframeHeight();
				}, 100);
            }  

			function downloadInvoice() {
    			window.location.href = 'download_invoice.php';
			}
			
			function submitCancelForm(event) {
				event.preventDefault();
				const form = document.getElementById("cancelSubscriptionForm");
				const formData = new FormData(form);

				fetch("cancel_subscription.php", {
					method: "POST",
					body: formData
				})
				.then(response => response.text())
				.then(data => {
					alert("終止申請已送出,我們將盡快處理!");
					document.getElementById("paymentInfo").innerHTML = "<p>感謝您提交申請。</p>";
				})
				.catch(error => {
					alert("提交失敗,請稍後再試!");
					console.error(error);
				});
			}

			function showRedirectWarning() {
        		if (confirm("您即將跳轉至第三方付款平台,請完成信用卡資料設定以啟用定期扣款服務。")) {
            		// 確認後提交表單
            		document.getElementById("subscriptionForm").submit();
        		}
    		}

           	function generateThirdBarcode(firstBarcode, secondBarcode, monthlyFee) {
                // 1. 取第一條碼前 4 碼 (相當於 FileMaker 的 Left(TSBAR1; 4))
                const part1 = firstBarcode.substring(0, 4);

                // 2. 建立費用字串 (9 碼):
                //    "00000" & Right("0" & monthlyFee; 4)
                //    例:monthlyFee = 1500 -> "0" & "1500" = "01500" -> Right(...,4) = "1500"
                //        再加 "00000" + "1500" = "000001500" (共 9 碼)
                function getFee9(mFee) {
                    const fee4 = ("0" + mFee).slice(-4);  // 取後 4 碼
                    return "00000" + fee4;               // 再前面補 5 個 0
                }
                const feeStr = getFee9(monthlyFee); // 總長 9 碼

                // 3. 輔助函式:模擬 FileMaker 的 Middle() 取數字
                function getDigit(str, pos) {
                    // FileMaker 的 Middle(str;1;1) 等於 JS str.charAt(0)
                    // 所以需要 (pos - 1)
                    if (pos - 1 < 0 || pos - 1 >= str.length) return 0;
                    const digit = parseInt(str.charAt(pos - 1), 10);
                    return isNaN(digit) ? 0 : digit;
                }

                // --------------------------------------------------
                // ✅ **第一組檢查碼 (checkChar1)**
                //   FileMaker 公式:
                //   - 取 TSBAR1 (第一條碼) 的 (1,3,5,7,9)
                //   - 取 TSBAR2 (第二條碼) 的 (1,3,5,7,9,11,13,15)
                //   - 取 feeStr(9 碼) 的 (1,3,5,7,9)
                //   - 另外還有 TSBAR1 的 (1,3) 再加一次
                //   → sum1 mod 11 = 10 → "B", 0 → "A", 其餘 → mod1
                // --------------------------------------------------
                let sum1 = 0;
                [1, 3, 5, 7, 9].forEach(pos => sum1 += getDigit(firstBarcode, pos));
                [1, 3, 5, 7, 9, 11, 13, 15].forEach(pos => sum1 += getDigit(secondBarcode, pos));
                [1, 3, 5, 7, 9].forEach(pos => sum1 += getDigit(feeStr, pos));
                // 注意:你原本在公式裡還寫了  + Middle(TSBAR1;1;1) + Middle(TSBAR1;3;1)
                // 但其實 TSBAR1(1) + TSBAR1(3) 已包含在「TSBAR1 奇數位 (1,3,5,7,9)」了,
                // 看你的公式好像重複加了 2 次 (1,3) -> 若這是 FileMaker 確實的邏輯,就保留:
                sum1 += getDigit(firstBarcode, 1) + getDigit(firstBarcode, 3);

                let mod1 = sum1 % 11;
                let checkChar1;
                if (mod1 === 10) {
                    checkChar1 = "B";
                } else if (mod1 === 0) {
                    checkChar1 = "A";
                } else {
                    checkChar1 = String(mod1);
                }

                // --------------------------------------------------
                // ✅ **第二組檢查碼 (checkChar2)**
                //   FileMaker 公式:
                //   - 取 TSBAR1 (2,4,6,8)
                //   - 取 TSBAR2 (2,4,6,8,10,12,14,16)
                //   - 取 feeStr(9 碼) (2,4,6,8)
                //   - 另外還有 TSBAR1 的 (2,4) 再加一次
                //   → sum2 mod 11 = 10 → "Y", 0 → "X", 其餘 → mod2
                // --------------------------------------------------
                let sum2 = 0;
                [2, 4, 6, 8].forEach(pos => sum2 += getDigit(firstBarcode, pos));
                [2, 4, 6, 8, 10, 12, 14, 16].forEach(pos => sum2 += getDigit(secondBarcode, pos));
                [2, 4, 6, 8].forEach(pos => sum2 += getDigit(feeStr, pos));
                // 同樣你公式中對 (2,4) 也重複加了一次
                sum2 += getDigit(firstBarcode, 2) + getDigit(firstBarcode, 4);

                let mod2 = sum2 % 11;
                let checkChar2;
                if (mod2 === 10) {
                    checkChar2 = "Y";
                } else if (mod2 === 0) {
                    checkChar2 = "X";
                } else {
                    checkChar2 = String(mod2);
                }

                // 4. **最終組合:left(TSBAR1,4) & checkChar1 & checkChar2 & (9 碼費用)**
                return part1 + checkChar1 + checkChar2 + feeStr;
            }

            function showThirdBarcode(plan) {
                let thirdBarcodeDiv = document.getElementById("thirdBarcode");
                if (planOptions[plan]) {
                    let firstBarcode = generateBarcodeNumber(); // TSBAR1
                    let secondBarcode = barcode2;               // TSBAR2
                    let monthlyFee   = planOptions[plan].price; // 方案費用

                    // 用修正後的 generateThirdBarcode()
                    let barcodeText = generateThirdBarcode(firstBarcode, secondBarcode, monthlyFee);

                    thirdBarcodeDiv.innerHTML = `
                        <div class='barcode-container'>
                            <div class='barcode-label'>第三條碼</div>
                            <div class='barcode'><svg id="barcode3"></svg></div>
                        </div>`;
                    thirdBarcodeDiv.style.display = "block";

                    // 顯示條碼
                    JsBarcode("#barcode3", barcodeText, { format: "CODE39", displayValue: true, fontSize: 14, height: 50 });
                }
            }

            function getPlanName(plan) {
                const names = {
                    "season": "季繳",
                    "halfyear": "半年繳",
                    "year": "年繳",
                    "twoyear": "兩年繳"
                };
                return names[plan] || "未知方案";
            }

            function generateBarcodeNumber() {
    			let today = new Date();
    			let year = today.getFullYear() - 1911;
    			// 如果民國年為個位數或兩位數則補0
    			if (year < 10) {
       				year = '0' + year;
    			} else if (year < 100) {
        			year = year.toString();
    			} else {
        			year = (year - 100).toString().padStart(2, '0'); 
    			}

    			let month = (today.getMonth() + 1).toString().padStart(2, '0');
    			let day = today.getDate().toString().padStart(2, '0');

    			return `${year}${month}${day}627`;  // 確保為9碼
			}

            function postToEcpaySubscription(user, month) {
                const form = document.createElement('form');
                form.method = 'POST';
                form.action = 'ecpay_subscription.php';
                form.target = '_top'; // 確保整個畫面跳轉

                const userInput = document.createElement('input');
                userInput.type = 'hidden';
                userInput.name = 'user';
                userInput.value = user;
                form.appendChild(userInput);

                const monthInput = document.createElement('input');
                monthInput.type = 'hidden';
                monthInput.name = 'month';
                monthInput.value = month;
                form.appendChild(monthInput);

                document.body.appendChild(form);
                form.submit();
            }
			
			function submitCancelForm(event) {
				event.preventDefault();
				const formData = new FormData(event.target);

				fetch('send_cancel_email.php', {
					method: 'POST',
					body: formData
				})
				.then(res => res.text())
				.then(result => {
					showPopup("✅ 您的申請已送出,我們將盡快與您聯繫。");
				})
				.catch(err => {
					console.error(err);
					showPopup("❌ 送出失敗,請稍後再試。");
				});
			}

			function showPopup(message) {
				document.getElementById("popupMessage").innerText = message;
				document.getElementById("popupModal").style.display = "block";
				document.getElementById("popupOverlay").style.display = "block";
			}

			function closePopup() {
				document.getElementById("popupModal").style.display = "none";
				document.getElementById("popupOverlay").style.display = "none";
				location.reload(); // 🔁 關閉彈窗後刷新頁面
			}

        </script>
    </body>
</html>