File manager - Edit - /home/webapp69.cm.in.th/u69319090023/Shop23/api/orders.php
Back
<?php /** * Orders API Endpoint * Handles fetching orders, tracking orders, and creating new orders in MySQL. */ require_once __DIR__ . '/db.php'; $method = $_SERVER['REQUEST_METHOD']; switch ($method) { case 'GET': handleGet($pdo); break; case 'POST': handlePost($pdo); break; case 'PUT': handlePut($pdo); break; default: sendResponse(false, null, 'Method not allowed', 405); } function handleGet($pdo) { // 1. Get by specific Order ID or Tracking Code if (isset($_GET['id']) || isset($_GET['trackingCode'])) { $code = $_GET['id'] ?? $_GET['trackingCode']; $stmt = $pdo->prepare("SELECT * FROM orders WHERE id = :code OR tracking_code = :code LIMIT 1"); $stmt->execute([':code' => $code]); $order = $stmt->fetch(); if ($order) { $formatted = formatOrderRow($order); sendResponse(true, $formatted, 'พบข้อมูลคำสั่งซื้อ'); } else { sendResponse(false, null, 'ไม่พบคำสั่งซื้อนี้', 404); } } // 2. Search / List orders by User Email $userEmail = $_GET['userEmail'] ?? null; $search = $_GET['q'] ?? null; $query = "SELECT * FROM orders WHERE 1=1"; $params = []; if ($userEmail) { $query .= " AND LOWER(user_email) = LOWER(:email)"; $params[':email'] = $userEmail; } if ($search) { $query .= " AND (id LIKE :q OR shipping_phone LIKE :q OR tracking_code LIKE :q)"; $params[':q'] = '%' . $search . '%'; } $query .= " ORDER BY created_at DESC LIMIT 100"; $stmt = $pdo->prepare($query); $stmt->execute($params); $rows = $stmt->fetchAll(); $orders = array_map('formatOrderRow', $rows); sendResponse(true, $orders, 'ดึงรายการคำสั่งซื้อสำเร็จ'); } function handlePost($pdo) { $body = getJsonInput(); if (empty($body['items']) || !isset($body['totalAmount']) || empty($body['shippingAddress'])) { sendResponse(false, null, 'กรุณาส่งข้อมูลคำสั่งซื้อให้ครบถ้วน', 400); } $orderId = !empty($body['id']) ? $body['id'] : ('ORD-' . rand(100000, 999999)); $trackingCode = !empty($body['trackingCode']) ? $body['trackingCode'] : ('CTC-' . rand(100000000, 999999000)); $userEmail = $body['userEmail'] ?? null; $totalAmount = (float)$body['totalAmount']; $status = $body['status'] ?? 'pending'; $paymentMethod = $body['paymentMethod'] ?? 'bank_transfer'; $itemsJson = json_encode($body['items'], JSON_UNESCAPED_UNICODE); $addr = $body['shippingAddress']; $recipientName = $addr['recipientName'] ?? ''; $phone = $addr['phone'] ?? ''; $addressLine = $addr['addressLine'] ?? ''; $subdistrict = $addr['subdistrict'] ?? ''; $district = $addr['district'] ?? ''; $province = $addr['province'] ?? ''; $postalCode = $addr['postalCode'] ?? ''; try { $sql = "INSERT INTO orders ( id, user_email, total_amount, status, payment_method, tracking_code, items_json, shipping_recipient_name, shipping_phone, shipping_address_line, shipping_subdistrict, shipping_district, shipping_province, shipping_postal_code, created_at ) VALUES ( :id, :user_email, :total_amount, :status, :payment_method, :tracking_code, :items_json, :recipient_name, :phone, :address_line, :subdistrict, :district, :province, :postal_code, NOW() )"; $stmt = $pdo->prepare($sql); $stmt->execute([ ':id' => $orderId, ':user_email' => $userEmail, ':total_amount' => $totalAmount, ':status' => $status, ':payment_method' => $paymentMethod, ':tracking_code' => $trackingCode, ':items_json' => $itemsJson, ':recipient_name' => $recipientName, ':phone' => $phone, ':address_line' => $addressLine, ':subdistrict' => $subdistrict, ':district' => $district, ':province' => $province, ':postal_code' => $postalCode ]); $createdOrder = [ 'id' => $orderId, 'items' => $body['items'], 'totalAmount' => $totalAmount, 'status' => $status, 'shippingAddress' => $addr, 'paymentMethod' => $paymentMethod, 'trackingCode' => $trackingCode, 'createdAt' => date('c'), 'userEmail' => $userEmail ]; sendResponse(true, $createdOrder, 'บันทึกคำสั่งซื้อสำเร็จ', 201); } catch (Exception $e) { sendResponse(false, null, 'ไม่สามารถบันทึกคำสั่งซื้อ: ' . $e->getMessage(), 500); } } function handlePut($pdo) { $body = getJsonInput(); $orderId = $body['id'] ?? null; $status = $body['status'] ?? null; if (!$orderId || !$status) { sendResponse(false, null, 'ข้อมูลไม่ครบถ้วน', 400); } $stmt = $pdo->prepare("UPDATE orders SET status = :status WHERE id = :id"); $stmt->execute([':status' => $status, ':id' => $orderId]); sendResponse(true, ['id' => $orderId, 'status' => $status], 'อัปเดตสถานะสำเร็จ'); } function formatOrderRow($row) { return [ 'id' => $row['id'], 'items' => json_decode($row['items_json'] ?? '[]', true), 'totalAmount' => (float)$row['total_amount'], 'status' => $row['status'], 'paymentMethod' => $row['payment_method'], 'trackingCode' => $row['tracking_code'], 'createdAt' => $row['created_at'], 'userEmail' => $row['user_email'], 'shippingAddress' => [ 'recipientName' => $row['shipping_recipient_name'], 'phone' => $row['shipping_phone'], 'addressLine' => $row['shipping_address_line'], 'subdistrict' => $row['shipping_subdistrict'], 'district' => $row['shipping_district'], 'province' => $row['shipping_province'], 'postalCode' => $row['shipping_postal_code'] ] ]; }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings