File manager - Edit - /home/webapp69.cm.in.th/u69319090030/030 shop/checkout.php
Back
<?php require_once __DIR__ . '/config/db.php'; require_once __DIR__ . '/helpers/jwt_helper.php'; require_once __DIR__ . '/helpers/auth.php'; require_once __DIR__ . '/helpers/promptpay_helper.php'; if (session_status() === PHP_SESSION_NONE) { session_start(); } // บังคับล็อกอินสำหรับลูกค้า $currentUser = get_current_user_data(); if (!$currentUser) { header("Location: login.php"); exit(); } if (empty($_SESSION['cart'])) { header("Location: index.php"); exit(); } $error = ''; $success = ''; $order_items_data = []; $total_credits = 0; // ดึงข้อมูลสมาชิกผู้ใช้ปัจจุบันเพื่อ Auto-fill ข้อมูลการจัดส่ง $userDB = null; $default_shipping = ''; try { $stmtUser = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmtUser->execute([$currentUser['id']]); $userDB = $stmtUser->fetch(); if ($userDB) { $parts = []; if (!empty($userDB['full_name'])) $parts[] = 'คุณ' . $userDB['full_name']; if (!empty($userDB['phone'])) $parts[] = 'เบอร์โทร: ' . $userDB['phone']; if (!empty($userDB['address'])) $parts[] = 'ที่อยู่: ' . $userDB['address']; $default_shipping = implode("\n", $parts); } } catch (PDOException $e) {} // ดึงรายละเอียดของสินค้าเพื่อตรวจสอบราคาและจำนวนสต็อก try { // ดึงรหัสไอดีของสินค้าทั้งหมด $product_ids = array_unique(array_map(function($key) { return (int)explode('_', $key)[0]; }, array_keys($_SESSION['cart']))); if (!empty($product_ids)) { $placeholders = implode(',', array_fill(0, count($product_ids), '?')); $stmt = $pdo->prepare("SELECT * FROM products WHERE id IN ($placeholders)"); $stmt->execute($product_ids); $db_products = $stmt->fetchAll(); // จัดทำ Map สินค้าจาก ID $products_map = []; foreach ($db_products as $p) { $products_map[$p['id']] = $p; } // ประมวลผลข้อมูลออเดอร์พร้อมไซส์ foreach ($_SESSION['cart'] as $key => $qty) { list($product_id, $size) = explode('_', $key); if (isset($products_map[$product_id])) { $prod = $products_map[$product_id]; $subtotal = $prod['price'] * $qty; $total_credits += $subtotal; $order_items_data[] = [ 'product_id' => $product_id, 'name' => $prod['name'], 'description' => $prod['description'] ?? '', 'category' => $prod['category'] ?? 'general', 'size' => $size, 'quantity' => $qty, 'price' => $prod['price'], 'stock' => $prod['stock'] ]; } } } $discount_amount = 0; $mega_deal_discount = 0; $mega_deal_applied = false; $MEGA_DEAL_THRESHOLD = 2000; $MEGA_DEAL_PERCENT = 67; if ($total_credits >= $MEGA_DEAL_THRESHOLD) { $mega_deal_discount = $total_credits * ($MEGA_DEAL_PERCENT / 100); $mega_deal_applied = true; } $after_mega = max(0, $total_credits - $mega_deal_discount); $member_disc_pct = get_member_discount_percent(); $coupon_disc_pct = !empty($_SESSION['coupon']['discount_percent']) ? $_SESSION['coupon']['discount_percent'] : 0; $total_disc_pct = max($member_disc_pct, $coupon_disc_pct); $discount_label = ''; if ($total_disc_pct > 0) { if ($member_disc_pct >= $coupon_disc_pct && $member_disc_pct > 0) { $discount_label = '🛡️ ส่วนลดสมาชิก (-' . $member_disc_pct . '%)'; } else { $discount_label = '🏷️ โค้ดส่วนลด (-' . $coupon_disc_pct . '%)'; } $discount_amount = $after_mega * ($total_disc_pct / 100); } $final_total = max(0, $after_mega - $discount_amount); } catch (PDOException $e) { $error = 'ดึงข้อมูลสินค้าขัดข้อง: ' . $e->getMessage(); } // ดำเนินการสร้างคำสั่งซื้อเมื่อบันทึกข้อมูล if ($_SERVER['REQUEST_METHOD'] === 'POST' && empty($error)) { $shipping_address = trim($_POST['shipping_address'] ?? ''); $payment_method = trim($_POST['payment_method'] ?? 'promptpay'); if (empty($shipping_address)) { $error = 'กรุณาระบุที่อยู่สำหรับจัดส่งสินค้า'; } else { try { // กำหนดสถานะออเดอร์ตามวิธีชำระเงิน // COD (เก็บเงินปลายทาง) -> pending // promptpay / card -> paid $order_status = ($payment_method === 'cod') ? 'pending' : 'paid'; // เริ่มต้น Database Transaction $pdo->beginTransaction(); // 1. ตรวจสอบสต็อกล่าสุดอีกครั้งก่อนบันทึกรายการจริง foreach ($order_items_data as $item) { $stmt = $pdo->prepare("SELECT stock FROM products WHERE id = ? FOR UPDATE"); $stmt->execute([$item['product_id']]); $current_stock = $stmt->fetchColumn(); if ($current_stock < $item['quantity']) { throw new Exception("สินค้า {$item['name']} มีจำนวนคงเหลือไม่พอกับที่คุณต้องการสั่งซื้อ (คงเหลือ: {$current_stock} ชิ้น)"); } } // 2. แทรกแถวลงตารางคำสั่งซื้อ (Orders) $stmt = $pdo->prepare("INSERT INTO orders (user_id, total_amount, status, shipping_address) VALUES (?, ?, ?, ?)"); $stmt->execute([$currentUser['id'], $final_total, $order_status, $shipping_address]); $order_id = $pdo->lastInsertId(); // 3. แทรกข้อมูลลงตารางรายละเอียดสินค้าในออเดอร์ (Order Items) พร้อมระบุไซส์เสื้อและตัดสต็อก $stmtItem = $pdo->prepare("INSERT INTO order_items (order_id, product_id, quantity, price, size) VALUES (?, ?, ?, ?, ?)"); $stmtStock = $pdo->prepare("UPDATE products SET stock = stock - ? WHERE id = ?"); foreach ($order_items_data as $item) { // แทรกรายการสั่งซื้อพร้อมระบุไซส์เสื้อผ้าลง DB $stmtItem->execute([$order_id, $item['product_id'], $item['quantity'], $item['price'], $item['size']]); // อัปเดตตัดสต็อก $stmtStock->execute([$item['quantity'], $item['product_id']]); } // 4. เสร็จสิ้นรายการธุรกรรมอย่างสมบูรณ์ $pdo->commit(); // เคลียร์ตะกร้าสินค้า $_SESSION['cart'] = []; // คำนวณเวลาที่สั่งซื้อและวันที่คาดว่าจะได้รับสินค้า (2-3 วันทำการ) $order_time = date('Y-m-d H:i:s'); $order_time_thai = date('d/m/Y เวลา H:i น.'); $est_delivery_start = date('d/m/Y', strtotime('+2 days')); $est_delivery_end = date('d/m/Y', strtotime('+3 days')); $success = true; } catch (Exception $e) { $pdo->rollBack(); $error = 'ไม่สามารถส่งใบสั่งซื้อได้: ' . $e->getMessage(); } } } ?> <!DOCTYPE html> <html lang="th"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CyberGear // ยืนยันการสั่งซื้อสินค้า</title> <link rel="stylesheet" href="assets/css/style.css"> </head> <body> <nav class="navbar"> <a href="index.php" class="navbar-brand"> CYBER<span class="brand-red">GEAR</span> </a> <div class="navbar-menu"> <a href="index.php" class="nav-link">หน้าร้านค้า</a> <a href="cart.php" class="nav-link" style="color: var(--text-gray);">ตะกร้าสินค้า</a> </div> </nav> <!-- แบนเนอร์โฆษณาสินค้าแนะนำน่าสนใจประจำสัปดาห์ --> <div style="background: linear-gradient(135deg, rgba(255, 0, 85, 0.15) 0%, rgba(0, 255, 102, 0.08) 100%); border-bottom: 1px solid var(--border-color); padding: 1.2rem 2rem; margin-bottom: 1rem;"> <div style="max-width: 1200px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap;"> <div style="flex: 1; min-width: 280px;"> <span style="background: var(--neon-red); color: #fff; font-size: 0.75rem; font-weight: bold; padding: 3px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 1px; font-family: 'Orbitron', sans-serif;">🔥 HOT PROMOTION</span> <h3 style="color: #ffffff; font-size: 1.3rem; margin: 0.4rem 0 0.2rem 0;">CYBERGEAR TECH & FASHION EXPO 2026</h3> <p style="color: #cccccc; font-size: 0.92rem; margin: 0;">ค้นพบไอเทมอุปกรณ์ไซเบอร์และเสื้อผ้าแฟชั่นอนาคต ลดสูงสุด <strong>67%</strong> เมื่อสั่งซื้อครบ ฿2,000!</p> </div> <div style="display: flex; align-items: center; gap: 1rem;"> <img src="assets/promo_banner.png" alt="Promo Cyber Gear" style="height: 65px; border-radius: 8px; border: 1px solid var(--neon-red); box-shadow: 0 0 12px rgba(255, 0, 85, 0.4); object-fit: cover;"> <a href="index.php" class="btn-cyber btn-green" style="font-size: 0.85rem; padding: 0.6rem 1.2rem; white-space: nowrap;">⚡ ชมสินค้าเพิ่มเติม</a> </div> </div> </div> <div class="container" style="max-width: 1600px; width: 95%; margin-top: 1.5rem;"> <h1 style="font-size: 2.2rem; text-shadow: 0 0 10px var(--glow-red); margin-bottom: 2rem; text-align: center;">ยืนยันคำสั่งซื้อ & ชำระเงิน</h1> <?php if ($error): ?> <div class="cyber-alert cyber-alert-error"> <strong>[เกิดข้อผิดพลาด]</strong> <?php echo htmlspecialchars($error); ?> </div> <?php endif; ?> <?php if ($success): ?> <div class="cyber-card" style="max-width: 680px; margin: 0 auto 2rem auto; border-color: var(--neon-green); box-shadow: 0 0 25px rgba(0, 255, 102, 0.2); padding: 2.5rem; text-align: center;"> <div style="font-size: 3rem; margin-bottom: 0.5rem;">🎉</div> <h2 style="color: var(--neon-green); text-shadow: 0 0 10px var(--glow-green); margin-bottom: 0.5rem;">[บันทึกคำสั่งซื้อออเดอร์ #<?php echo $order_id; ?> สำเร็จ!]</h2> <p style="color: var(--text-gray); font-size: 1rem; margin-bottom: 2rem;">เราได้รับข้อมูลคำสั่งซื้อเรียบร้อยแล้ว และกำลังเตรียมจัดส่งสินค้าให้ท่านอย่างรวดเร็วที่สุด</p> <div style="background: rgba(0, 0, 0, 0.4); border: 1px solid var(--border-color); border-radius: 10px; padding: 1.5rem; text-align: left; margin-bottom: 2rem;"> <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 1px dashed var(--border-color); padding-bottom: 0.8rem; margin-bottom: 0.8rem;"> <span style="color: var(--text-gray);">🕒 เวลาที่ทำรายการสั่งซื้อ:</span> <strong style="color: var(--text-white); font-family: monospace; font-size: 1.05rem;"><?php echo $order_time_thai; ?></strong> </div> <div style="display: flex; justify-content: space-between; align-items: center; border-bottom: 1px dashed var(--border-color); padding-bottom: 0.8rem; margin-bottom: 0.8rem;"> <span style="color: var(--text-gray);">📦 ประมาณการวันที่ได้รับพัสดุ:</span> <strong style="color: var(--neon-green); font-size: 1.1rem;"><?php echo $est_delivery_start; ?> - <?php echo $est_delivery_end; ?></strong> </div> <div style="display: flex; justify-content: space-between; align-items: center;"> <span style="color: var(--text-gray);">🚚 ระยะเวลาจัดส่งประมาณ:</span> <span style="color: var(--text-white);">2 - 3 วันทำการ</span> </div> </div> <div> <a href="index.php" class="btn-cyber btn-green" style="padding: 0.8rem 2.5rem;">กลับไปช้อปปิ้งต่อ</a> </div> </div> <?php else: ?> <!-- Layout 3 Columns: โฆษณาซ้ายเต็มพื้นที่ | ฟอร์มสั่งซื้อตรงกลาง | โฆษณาขวาเต็มพื้นที่ --> <div style="display: grid; grid-template-columns: 280px 1fr 280px; gap: 1.5rem; align-items: start;"> <!-- โฆษณาฝั่งซ้าย: สินค้าแนะนำสุดฮิต --> <div style="display: flex; flex-direction: column; gap: 1.5rem;"> <!-- โฆษณาซ้าย 1: เข็มขัดไอ้มดแดง / Kamen Rider --> <div class="cyber-card" style="padding: 1.2rem; border-color: var(--neon-red); text-align: center; background: #111111; box-shadow: 0 4px 15px rgba(255,0,85,0.25);"> <span style="background: var(--neon-red); color: #ffffff; font-size: 0.75rem; font-weight: bold; padding: 3px 10px; border-radius: 12px; font-family: 'Orbitron', sans-serif;">🔥 สินค้าแปลงร่างระดับตำนาน</span> <h3 style="font-size: 1.05rem; color: #ffffff; margin: 0.8rem 0 0.4rem 0;">เข็มขัดแปลงร่าง Kamen Rider DX</h3> <img src="assets/ad_kamen_rider.png" alt="เข็มขัด Kamen Rider" style="width: 100%; border-radius: 8px; margin-bottom: 0.8rem; border: 1px solid rgba(255,0,85,0.4); object-fit: cover;"> <p style="font-size: 0.9rem; color: #e0e0e0; line-height: 1.6; margin-bottom: 1rem; text-align: justify; text-justify: inter-character;"> ✨ <strong>สรรพคุณเด่น:</strong> มีไฟ LED หมุนเรืองแสงและเสียงแปลงร่างแท้เหมือนในซีรีส์ สายปรับระดับได้ ใส่สะสมหรือคอสเพลย์ก็เท่สุดๆ </p> <a href="index.php?search=Kamen" class="btn-cyber" style="font-size: 0.85rem; padding: 0.65rem 1rem; width: 100%; font-weight: bold; background: rgba(255,0,85,0.15);">🛒 สั่งซื้อเข็มขัดแปลงร่างทันที</a> </div> <!-- โฆษณาซ้าย 2: เก้าอี้เกมมิ่งน่ารัก --> <div class="cyber-card" style="padding: 1.2rem; border-color: #ff66cc; text-align: center; background: #111111; box-shadow: 0 4px 15px rgba(255,102,204,0.2);"> <span style="background: #ff66cc; color: #000000; font-size: 0.75rem; font-weight: bold; padding: 3px 10px; border-radius: 12px; font-family: 'Orbitron', sans-serif;">🪑 เก้าอี้เกมมิ่งสุดคิวท์</span> <h3 style="font-size: 1.05rem; color: #ffffff; margin: 0.8rem 0 0.4rem 0;">เก้าอี้เกมมิ่งพิงหลังสวีทชมพู</h3> <img src="assets/ad_gaming_chair.png" alt="เก้าอี้เกมมิ่ง" style="width: 100%; border-radius: 8px; margin-bottom: 0.8rem; border: 1px solid rgba(255,102,204,0.4); object-fit: cover;"> <p style="font-size: 0.9rem; color: #e0e0e0; line-height: 1.6; margin-bottom: 1rem; text-align: justify; text-justify: inter-character;"> 💡 <strong>ฟังก์ชันเด่น:</strong> เบาะนุ่มรับหลัง ปรับเอนได้ 135 องศา พร้อมที่วางขาและหมอนรองคอ นั่งสตรีมเกมยาวๆ ไม่ปวดหลัง </p> <a href="index.php?search=เก้าอี้" class="btn-cyber" style="font-size: 0.85rem; padding: 0.65rem 1rem; width: 100%; border-color: #ff66cc; color: #ffffff; background: rgba(255,102,204,0.15);">🛒 สั่งซื้อเก้าอี้เกมมิ่งทันที</a> </div> </div> <div style="display: grid; grid-template-columns: 1.1fr 1fr; gap: 1.5rem;"> <!-- ฟอร์มระบุที่อยู่จัดส่ง & สแกนจ่าย --> <div class="cyber-card"> <h3 style="margin-bottom: 1.5rem; text-transform: uppercase;">>_ ข้อมูลปลายทางจัดส่งพัสดุ & ชำระเงิน</h3> <!-- เพิ่มตัวเลือกวิธีชำระเงิน --> <h4 style="color: #ffffff; margin-bottom: 0.8rem; font-size: 1.05rem;">💳 เลือกช่องทางการชำระเงิน:</h4> <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.8rem; margin-bottom: 1.5rem;"> <label style="cursor: pointer;"> <input type="radio" name="payment_method" value="promptpay" checked style="display: none;" onchange="switchPaymentMethod('promptpay')"> <div id="btn-pay-promptpay" style="border: 2px solid var(--neon-green); background: rgba(0, 255, 102, 0.1); padding: 0.9rem 0.5rem; border-radius: 10px; text-align: center; color: #ffffff; transition: all 0.2s;"> <div style="font-size: 1.4rem;">📱</div> <div style="font-size: 0.85rem; font-weight: bold; margin-top: 4px;">พร้อมเพย์ QR</div> </div> </label> <label style="cursor: pointer;"> <input type="radio" name="payment_method" value="cod" style="display: none;" onchange="switchPaymentMethod('cod')"> <div id="btn-pay-cod" style="border: 1px solid #444; background: #181818; padding: 0.9rem 0.5rem; border-radius: 10px; text-align: center; color: #aaaaaa; transition: all 0.2s;"> <div style="font-size: 1.4rem;">🚚</div> <div style="font-size: 0.85rem; font-weight: bold; margin-top: 4px;">เก็บเงินปลายทาง</div> </div> </label> <label style="cursor: pointer;"> <input type="radio" name="payment_method" value="card" style="display: none;" onchange="switchPaymentMethod('card')"> <div id="btn-pay-card" style="border: 1px solid #444; background: #181818; padding: 0.9rem 0.5rem; border-radius: 10px; text-align: center; color: #aaaaaa; transition: all 0.2s;"> <div style="font-size: 1.4rem;">💳</div> <div style="font-size: 0.85rem; font-weight: bold; margin-top: 4px;">บัตรเครดิต/เดบิต</div> </div> </label> </div> <!-- 1. ส่วนแสดง QR Code สแกนจ่าย Dynamic พร้อมระบบนับถอยหลัง 30 นาที --> <?php $promptpay_id = "02049888"; // เลขบัญชี/เบอร์พร้อมเพย์ $payload = PromptPayQR::generatePayload($promptpay_id, $final_total); $qr_image_api = "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=" . urlencode($payload); ?> <div id="box-pay-promptpay" style="display: block; background: rgba(18, 18, 18, 0.95); border: 2px solid var(--neon-green); border-radius: 14px; padding: 1.8rem 1.2rem; text-align: center; margin-bottom: 2rem; box-shadow: 0 0 25px rgba(0, 255, 102, 0.25);"> <h3 style="font-size: 1.3rem; color: #55ff99; margin-bottom: 0.6rem; letter-spacing: 0.5px;">📱 สแกนจ่ายด้วยแอปธนาคาร (PromptPay)</h3> <p style="font-size: 0.92rem; color: #e0e0e0; margin-bottom: 1rem; line-height: 1.5;"> เปิดแอปธนาคารบนมือถือ แล้วสแกนคิวอาร์โค้ดด้านล่าง<br> <span style="color: #55ff99; font-weight: bold; background: rgba(0,255,102,0.15); padding: 2px 8px; border-radius: 4px; display: inline-block; margin-top: 4px;">✨ ยอดเงิน ฿<?php echo number_format($final_total, 2); ?> จะขึ้นอัตโนมัติ ไม่ต้องพิมพ์เอง</span> </p> <!-- นาฬิกานับถอยหลัง 30 นาที --> <div style="background: rgba(255, 0, 85, 0.2); border: 1.5px solid var(--neon-red); color: #ffffff; border-radius: 8px; padding: 0.5rem 1rem; display: inline-block; margin-bottom: 1.2rem; font-size: 0.95rem;"> ⏱️ ชำระเงินภายใน: <span id="countdown-timer" style="font-weight: bold; font-size: 1.2rem; color: #ff4d79; font-family: monospace;">30:00</span> นาที </div> <div style="background: #ffffff; display: inline-block; padding: 14px; border-radius: 14px; box-shadow: 0 0 25px rgba(0, 255, 102, 0.35); display: block; margin: 0 auto; width: fit-content;"> <img id="qr-img" src="<?php echo $qr_image_api; ?>" alt="Dynamic PromptPay QR Code" style="width: 240px; max-width: 100%; height: auto; display: block; object-fit: contain;"> </div> <div style="font-size: 0.9rem; color: #cccccc; margin-top: 1rem; background: rgba(255,255,255,0.05); padding: 0.6rem; border-radius: 8px;"> ชื่อบัญชี: <strong style="color: #ffffff;">นาย กุมภาพันธ์ กาวี</strong> (เลขที่บัญชี: <span style="font-family: monospace; color: #55ff99;">0204xxxx9888</span>) </div> <div style="font-size: 1.15rem; color: #ffffff; font-weight: bold; margin-top: 1rem; background: rgba(0,255,102,0.15); padding: 0.6rem 1.2rem; border-radius: 10px; display: inline-block; border: 1px solid rgba(0,255,102,0.4);"> ยอดเงินที่ต้องชำระ: <span style="color: #55ff99; font-size: 1.45rem;">฿<?php echo number_format($final_total, 2); ?></span> </div> </div> <!-- 2. ส่วนชำระเงินปลายทาง (COD) --> <div id="box-pay-cod" style="display: none; background: rgba(18, 18, 18, 0.95); border: 2px solid #ffd700; border-radius: 14px; padding: 1.8rem 1.2rem; text-align: center; margin-bottom: 2rem; box-shadow: 0 0 20px rgba(255, 215, 0, 0.2);"> <h3 style="font-size: 1.3rem; color: #ffd700; margin-bottom: 0.6rem;">🚚 ชำระเงินปลายทาง (Cash on Delivery)</h3> <p style="font-size: 0.95rem; color: #e0e0e0; margin-bottom: 1rem; line-height: 1.6;"> ท่านสามารถชำระเงินสดกับเจ้าหน้าที่ขนส่งได้โดยตรงเมื่อพัสดุจัดส่งถึงหน้าบ้านท่าน<br> <span style="color: #ffd700; font-weight: bold; background: rgba(255, 215, 0, 0.15); padding: 4px 10px; border-radius: 6px; display: inline-block; margin-top: 6px;"> 📦 ยอดรวมชำระสุทธิเมื่อรับพัสดุ: ฿<?php echo number_format($final_total, 2); ?> </span> </p> </div> <!-- 3. ส่วนกรอกข้อมูลบัตรเครดิต/เดบิต --> <div id="box-pay-card" style="display: none; background: rgba(18, 18, 18, 0.95); border: 2px solid var(--neon-cyan); border-radius: 14px; padding: 1.8rem 1.5rem; margin-bottom: 2rem; box-shadow: 0 0 20px rgba(0, 240, 255, 0.2);"> <h3 style="font-size: 1.3rem; color: var(--neon-cyan); margin-bottom: 1rem; text-align: center;">💳 ชำระผ่านบัตรเครดิต / เดบิต</h3> <div class="cyber-input-group" style="margin-bottom: 1rem;"> <label class="cyber-label" style="font-size: 0.88rem; color: #ffffff;">หมายเลขบัตร (Card Number):</label> <input type="text" id="card_number" class="cyber-input" placeholder="4541 •••• •••• ••••" maxlength="19" style="font-size: 1rem; background: #141414; letter-spacing: 2px;"> </div> <div style="display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.8rem; margin-bottom: 1rem;"> <div class="cyber-input-group"> <label class="cyber-label" style="font-size: 0.85rem; color: #ffffff;">เดือน/ปี (EXP):</label> <input type="text" placeholder="MM/YY" maxlength="5" class="cyber-input" style="font-size: 0.95rem; background: #141414; text-align: center;"> </div> <div class="cyber-input-group"> <label class="cyber-label" style="font-size: 0.85rem; color: #ffffff;">รหัส CVC/CVV:</label> <input type="password" placeholder="123" maxlength="4" class="cyber-input" style="font-size: 0.95rem; background: #141414; text-align: center;"> </div> <div class="cyber-input-group"> <label class="cyber-label" style="font-size: 0.85rem; color: #ffffff;">ชื่อบนบัตร:</label> <input type="text" placeholder="FULL NAME" class="cyber-input" style="font-size: 0.95rem; background: #141414;"> </div> </div> <div style="font-size: 0.8rem; color: var(--text-gray); text-align: center;"> 🔒 ข้อมูลชำระเงินเข้ารหัสความปลอดภัยระดับ 256-bit SSL </div> </div> <script> function switchPaymentMethod(method) { var boxPromptpay = document.getElementById('box-pay-promptpay'); var boxCod = document.getElementById('box-pay-cod'); var boxCard = document.getElementById('box-pay-card'); var btnPromptpay = document.getElementById('btn-pay-promptpay'); var btnCod = document.getElementById('btn-pay-cod'); var btnCard = document.getElementById('btn-pay-card'); // ซ่อนกล่องทั้งหมดก่อน boxPromptpay.style.display = 'none'; boxCod.style.display = 'none'; boxCard.style.display = 'none'; // รีเซ็ตปุ่ม btnPromptpay.style.borderColor = '#444'; btnPromptpay.style.background = '#181818'; btnPromptpay.style.color = '#aaaaaa'; btnCod.style.borderColor = '#444'; btnCod.style.background = '#181818'; btnCod.style.color = '#aaaaaa'; btnCard.style.borderColor = '#444'; btnCard.style.background = '#181818'; btnCard.style.color = '#aaaaaa'; if (method === 'promptpay') { boxPromptpay.style.display = 'block'; btnPromptpay.style.borderColor = 'var(--neon-green)'; btnPromptpay.style.background = 'rgba(0, 255, 102, 0.1)'; btnPromptpay.style.color = '#ffffff'; } else if (method === 'cod') { boxCod.style.display = 'block'; btnCod.style.borderColor = '#ffd700'; btnCod.style.background = 'rgba(255, 215, 0, 0.1)'; btnCod.style.color = '#ffffff'; } else if (method === 'card') { boxCard.style.display = 'block'; btnCard.style.borderColor = 'var(--neon-cyan)'; btnCard.style.background = 'rgba(0, 240, 255, 0.1)'; btnCard.style.color = '#ffffff'; } } // ระบบนับถอยหลัง 30 นาที (1800 วินาที) (function() { var timeLimit = 30 * 60; // 30 นาที var timerElement = document.getElementById('countdown-timer'); var qrBox = document.getElementById('box-pay-promptpay'); var interval = setInterval(function() { var minutes = Math.floor(timeLimit / 60); var seconds = timeLimit % 60; if (seconds < 10) seconds = '0' + seconds; if (minutes < 10) minutes = '0' + minutes; if (timerElement) { timerElement.textContent = minutes + ':' + seconds; } if (timeLimit <= 0) { clearInterval(interval); if (qrBox) { qrBox.style.borderColor = 'var(--neon-red)'; qrBox.style.boxShadow = '0 0 20px rgba(255, 0, 85, 0.3)'; qrBox.innerHTML = '<div style="padding: 2rem; color: #ff4d79;"><h3 style="font-size: 1.5rem; margin-bottom: 1rem;">❌ หมดเวลาชำระเงิน (เกิน 30 นาที)</h3><p style="color: var(--text-gray);">รายการสั่งซื้อนี้ถูกยกเลิกแล้ว กรุณากลับไปที่หน้าตะกร้าสินค้าและทำรายการใหม่อีกครั้ง</p><a href="cart.php" class="btn-cyber" style="margin-top: 1.5rem;">กลับไปที่ตะกร้าสินค้า</a></div>'; } } timeLimit--; }, 1000); })(); </script> <form action="checkout.php" method="POST"> <div class="cyber-input-group"> <label class="cyber-label" style="font-size: 1rem; color: #ffffff; margin-bottom: 0.6rem;">📍 ระบุที่อยู่และเบอร์โทรศัพท์สำหรับจัดส่งพัสดุ</label> <textarea class="cyber-input" name="shipping_address" rows="4" placeholder="กรอกชื่อ-นามสกุล, เบอร์โทรศัพท์ที่ติดต่อได้, บ้านเลขที่, ซอย, ถนน, ตำบล/แขวง, อำเภอ/เขต, จังหวัด, รหัสไปรษณีย์..." required style="font-size: 1.05rem; line-height: 1.5; color: #ffffff; background: #181818; border: 1px solid #333;"><?php echo htmlspecialchars($default_shipping); ?></textarea> </div> <div style="border-top: 1px solid var(--border-color); padding-top: 1.5rem; margin-top: 1.5rem;"> <button type="submit" class="btn-cyber btn-green" style="width: 100%; font-size: 1.1rem; padding: 0.9rem;"> ✅ ยืนยันการสั่งซื้อสินค้า </button> </div> </form> </div> <!-- สรุปตะกร้าสินค้าก่อนบันทึก --> <div class="cyber-card" style="height: fit-content; background: #141414; border: 1px solid #2a2a2a;"> <h3 style="margin-bottom: 1.2rem; text-transform: uppercase; color: #ffffff; font-size: 1.25rem;">📦 สรุปรายการสินค้าที่สั่งซื้อ</h3> <table class="cyber-table" style="background: transparent;"> <thead> <tr style="border-bottom: 2px solid var(--neon-red);"> <th style="color: #ffffff; font-size: 0.95rem;">สินค้า & คำแนะนำ</th> <th style="color: #ffffff; font-size: 0.95rem; text-align: center;">จำนวน</th> <th style="text-align: right; color: #ffffff; font-size: 0.95rem;">ราคารวม</th> </tr> </thead> <tbody> <?php foreach ($order_items_data as $item): ?> <tr> <td style="padding-bottom: 1.2rem;"> <div style="font-weight: bold; color: #ffffff; font-size: 1.1rem; margin-bottom: 0.3rem;"><?php echo htmlspecialchars($item['name']); ?></div> <div style="display: inline-block; font-size: 0.82rem; background: rgba(255, 85, 136, 0.15); border: 1px solid #ff5588; color: #ff5588; font-weight: bold; padding: 2px 8px; border-radius: 4px; margin-bottom: 0.6rem;"> ไซส์: <?php echo htmlspecialchars($item['size']); ?> </div> <!-- สรรพคุณและวิธีใช้งานแบบแยกตามประเภทสินค้า --> <?php $name_lower = mb_strtolower($item['name']); $cat = $item['category'] ?? ''; $is_toy = ( strpos($name_lower, 'toy') !== false || strpos($name_lower, 'figure') !== false || strpos($name_lower, 'katana') !== false || strpos($name_lower, 'visor') !== false || strpos($name_lower, 'deck') !== false || strpos($name_lower, 'implant') !== false || strpos($name_lower, 'โมเดล') !== false || strpos($name_lower, 'ของเล่น') !== false || strpos($name_lower, 'kamen') !== false || strpos($name_lower, 'เข็มขัด') !== false || strpos($name_lower, 'rider') !== false || strpos($name_lower, 'masked') !== false || strpos($name_lower, 'gun') !== false || strpos($name_lower, 'อาวุธ') !== false || $cat === 'toy' ); ?> <div style="background: #1c1c1c; border-left: 3px solid <?php echo $is_toy ? '#ff3366' : '#00cc66'; ?>; border-radius: 6px; padding: 0.75rem 0.9rem; margin-top: 0.4rem; font-size: 0.88rem; line-height: 1.6;"> <?php if (!empty($item['description'])): ?> <div style="color: #ffffff; font-weight: 500; margin-bottom: 0.4rem;"> 📝 <?php echo htmlspecialchars($item['description']); ?> </div> <?php endif; ?> <?php if ($is_toy): ?> <div style="color: #ff5588; font-weight: bold; margin-bottom: 0.2rem;">✨ สรรพคุณ & จุดเด่น:</div> <div style="color: #cccccc; margin-bottom: 0.5rem; padding-left: 0.5rem;"> • สินค้าเกรดพรีเมียม ถอดแบบสมจริง 1:1<br> • มีระบบไฟ LED และเอฟเฟกต์เสียงตามซีรีส์<br> • เหมาะสำหรับตั้งโชว์ สะสม หรือแต่งคอสเพลย์ </div> <div style="color: #ffcc00; font-weight: bold; margin-bottom: 0.2rem;">💡 การดูแลรักษา:</div> <div style="color: #cccccc; padding-left: 0.5rem;"> 1. ใส่ถ่านให้ถูกต้องตามขนาดสเปกสินค้า<br> 2. หลีกเลี่ยงความชื้น แสงแดด และการตกกระแทก </div> <?php else: ?> <div style="color: #55ff99; font-weight: bold; margin-bottom: 0.2rem;">✨ สรรพคุณ & จุดเด่นเนื้อผ้า:</div> <div style="color: #cccccc; margin-bottom: 0.5rem; padding-left: 0.5rem;"> • ผ้านุ่ม ระบายอากาศดีเยี่ยม ไม่ร้อน สวมใส่สบาย<br> • ตัดเย็บประณีต ตะเข็บแน่น ไม่หดไม่ย้วยง่าย<br> • ลายสกรีน/งานปักคมชัด สีสดทนทาน </div> <div style="color: #ffcc00; font-weight: bold; margin-bottom: 0.2rem;">💡 การดูแลรักษา:</div> <div style="color: #cccccc; padding-left: 0.5rem;"> 1. กลับด้านผ้าก่อนซักถนอมลายสกรีน<br> 2. ตากในที่ร่ม และใช้อุณหภูมิปานกลางเมื่อรีด </div> <?php endif; ?> </div> </td> <td style="vertical-align: top; padding-top: 1rem; text-align: center; color: #ffffff; font-weight: bold;">x<?php echo $item['quantity']; ?></td> <td style="text-align: right; vertical-align: top; padding-top: 1rem; color: #ffffff; font-weight: bold; font-size: 1.05rem;">฿<?php echo number_format($item['price'] * $item['quantity'], 2); ?></td> </tr> <?php endforeach; ?> <?php if ($mega_deal_applied): ?> <tr> <td colspan="2">ยอดรวมสินค้า:</td> <td style="text-align: right;">฿<?php echo number_format($total_credits, 2); ?></td> </tr> <tr style="color: #ffd700;"> <td colspan="2">⚡ MEGA DEAL ซื้อครบ ฿2,000 ลด 67%:</td> <td style="text-align: right;">-฿<?php echo number_format($mega_deal_discount, 2); ?></td> </tr> <?php elseif ($discount_amount == 0): ?> <tr> <td colspan="2">ยอดรวมสินค้า:</td> <td style="text-align: right;">฿<?php echo number_format($total_credits, 2); ?></td> </tr> <?php endif; ?> <?php if ($discount_amount > 0): ?> <?php if (!$mega_deal_applied): ?> <tr> <td colspan="2">ยอดรวมสินค้า:</td> <td style="text-align: right;">฿<?php echo number_format($total_credits, 2); ?></td> </tr> <?php endif; ?> <tr style="color: var(--neon-green);"> <td colspan="2"><?php echo htmlspecialchars($discount_label); ?>:</td> <td style="text-align: right; font-weight: bold;">-฿<?php echo number_format($discount_amount, 2); ?></td> </tr> <?php endif; ?> <tr style="font-weight: bold; background: rgba(255, 0, 85, 0.05);"> <td colspan="2" style="color: var(--text-white);">ยอดชำระสุทธิ:</td> <td style="text-align: right; color: var(--neon-green); text-shadow: 0 0 5px var(--glow-green); font-size: 1.4rem;">฿<?php echo number_format($final_total, 2); ?></td> </tr> </tbody> </table> </div> </div> <!-- ปิด div ตรงกลาง --> <!-- โฆษณาฝั่งขวา: เสื้อผ้าและคอสเพลย์ยอดนิยม --> <div style="display: flex; flex-direction: column; gap: 1.5rem;"> <!-- โฆษณาขวา 1: เสื้อแจ็คเก็ต Ben 10 --> <div class="cyber-card" style="padding: 1.2rem; border-color: var(--neon-green); text-align: center; background: #111111; box-shadow: 0 4px 15px rgba(0,255,102,0.25);"> <span style="background: var(--neon-green); color: #000000; font-size: 0.75rem; font-weight: bold; padding: 3px 10px; border-radius: 12px; font-family: 'Orbitron', sans-serif;">💚 คอสเพลย์สุดฮิต</span> <h3 style="font-size: 1.05rem; color: #ffffff; margin: 0.8rem 0 0.4rem 0;">เสื้อแจ็คเก็ต Ben 10 Alien Force</h3> <img src="assets/ad_ben10.png" alt="เสื้อ Ben 10" style="width: 100%; border-radius: 8px; margin-bottom: 0.8rem; border: 1px solid rgba(0,255,102,0.4); object-fit: cover;"> <p style="font-size: 0.9rem; color: #e0e0e0; line-height: 1.6; margin-bottom: 1rem; text-align: justify; text-justify: inter-character;"> ✨ <strong>จุดเด่นเสื้อ:</strong> ตัดเย็บตรงตามแบบอนิเมะ ผ้าวอร์มเนื้อดี ซิปหน้าใส่ง่าย สกรีนโลโก้เบอร์ 10 คมชัด ใส่เที่ยวหรือเท่ๆ ได้ทุกวัน </p> <a href="index.php?search=Ben" class="btn-cyber btn-green" style="font-size: 0.85rem; padding: 0.65rem 1rem; width: 100%; font-weight: bold;">🛒 สั่งซื้อเสื้อ Ben 10 ทันที</a> </div> <!-- โฆษณาขวา 2: เสื้อช็อปเด็กช่าง / เสื้อช่างเทคนิค --> <div class="cyber-card" style="padding: 1.2rem; border-color: #ffd700; text-align: center; background: #111111; box-shadow: 0 4px 15px rgba(255,215,0,0.2);"> <span style="background: #ffd700; color: #000000; font-size: 0.75rem; font-weight: bold; padding: 3px 10px; border-radius: 12px; font-family: 'Orbitron', sans-serif;">🛠️ เสื้อช็อปเด็กช่างสุดหล่อ</span> <h3 style="font-size: 1.05rem; color: #ffffff; margin: 0.8rem 0 0.4rem 0;">เสื้อช็อปช่างเทคนิค / วิศวะ</h3> <img src="assets/ad_work_shirt.png" alt="เสื้อช็อปช่าง" style="width: 100%; border-radius: 8px; margin-bottom: 0.8rem; border: 1px solid rgba(255,215,0,0.4); object-fit: cover;"> <p style="font-size: 0.9rem; color: #e0e0e0; line-height: 1.6; margin-bottom: 1rem; text-align: justify; text-justify: inter-character;"> 👔 <strong>สรรพคุณเนื้อผ้า:</strong> ผ้าเวสปอยท์ทนทาน ระบายอากาศดี มีกระเป๋าอกและช่องเสียบปากกา งานปักคมเข้ม หล่อเท่สไตล์เด็กช่าง </p> <a href="index.php?search=ช็อป" class="btn-cyber" style="font-size: 0.85rem; padding: 0.65rem 1rem; width: 100%; font-weight: bold; border-color: #ffd700; color: #ffffff; background: rgba(255,215,0,0.15);">🛒 สั่งซื้อเสื้อช็อปช่างทันที</a> </div> </div> </div> <!-- ปิด Grid 3 คอลัมน์ --> <?php endif; ?> </div> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.23 |
proxy
|
phpinfo
|
Settings