/** * 入口文件 - API路由 */ // 记录请求日志 $logFile = __DIR__ . '/logs/request_' . date('Y-m-d') . '.log'; $dir = dirname($logFile); if (!is_dir($dir)) mkdir($dir, 0755, true); file_put_contents($logFile, date('Y-m-d H:i:s') . ' ' . $_SERVER['REQUEST_URI'] . "\n", FILE_APPEND); // 设置时区 date_default_timezone_set('Asia/Shanghai'); // 允许跨域 header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type, Authorization'); // 处理OPTIONS请求 if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { exit(0); } // 引入类文件 require __DIR__ . '/application/database.php'; require __DIR__ . '/application/config.php'; require __DIR__ . '/application/WxPayApi.php'; require __DIR__ . '/application/Merchant.php'; require __DIR__ . '/application/Order.php'; // 获取请求路径 $uri = $_SERVER['REQUEST_URI']; $path = parse_url($uri, PHP_URL_PATH); $path = str_replace('/api.php', '', $path); $path = trim($path, '/'); // 路由分发 try { if ($path === '' || $path === 'index') { echo json_encode(['code' => 0, 'msg' => 'API服务运行正常', 'time' => date('Y-m-d H:i:s')]); } elseif ($path === 'merchant/nearby') { $ctrl = new MerchantController(); $ctrl->nearby(); } elseif ($path === 'merchant/detail') { $ctrl = new MerchantController(); $ctrl->detail(); } elseif ($path === 'merchant/categories') { $ctrl = new MerchantController(); $ctrl->categories(); } elseif ($path === 'order/create') { $ctrl = new OrderController(); $ctrl->create(); } elseif ($path === 'order/query') { $ctrl = new OrderController(); $ctrl->query(); } elseif ($path === 'order/list') { $ctrl = new OrderController(); $ctrl->list(); } elseif ($path === 'wxpay/notify') { $ctrl = new OrderController(); $ctrl->notify(); } else { http_response_code(404); echo json_encode(['code' => 404, 'msg' => '接口不存在: ' . $path]); } } catch (Exception $e) { $logFile = __DIR__ . '/logs/error_' . date('Y-m-d') . '.log'; file_put_contents($logFile, date('Y-m-d H:i:s') . ' Error: ' . $e->getMessage() . "\n", FILE_APPEND); http_response_code(500); echo json_encode(['code' => 500, 'msg' => '服务器错误: ' . $e->getMessage()]); }