# 微信扫码点餐小程序 **Repository Path**: b97301642/scan-order ## Basic Information - **Project Name**: 微信扫码点餐小程序 - **Description**: 微信扫码点餐小程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-08 - **Last Updated**: 2026-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 扫码点餐小程序 — 部署教程 --- **把backend/nginx.conf里的代码全部复制替换到你的站点配置文件中** ## 项目结构 ``` 扫码点餐小程序2/ ├── backend/ ← 【后端】部署到宝塔面板 │ ├── public/ ← 网站根目录(Nginx root 指向这里) │ │ ├── index.php ← 统一入口(API 路由器) │ │ ├── scan.php ← 桌台扫码引导页 │ │ ├── uploads/ ← 菜品图片上传目录(需 777 权限) │ │ └── .htaccess ← Apache 备用 │ ├── app/ ← PHP 核心代码 │ │ ├── config.php ← 配置文件(安装时自动生成) │ │ ├── db.php ← 数据库连接 │ │ ├── api/ ← 接口层 │ │ │ ├── store.php ← 店铺信息 │ │ │ ├── tables.php ← 桌台 │ │ │ ├── categories.php ← 分类(含菜品) │ │ │ ├── items.php ← 菜品 │ │ │ ├── orders.php ← 订单/支付 │ │ │ ├── wxpay.php ← 微信支付 │ │ │ ├── auth.php ← 微信登录 │ │ │ └── admin/ ← 管理端 API │ │ ├── install/ ← 安装向导 │ │ └── sql/ │ │ └── schema.sql ← 数据库结构 │ ├── admin/ ← Web 管理后台(静态文件) │ │ ├── index.html ← 登录页 │ │ ├── dashboard.html ← 控制台 │ │ ├── categories.html ← 分类管理 │ │ ├── items.html ← 菜品管理 │ │ ├── tables.html ← 桌台管理(含二维码生成) │ │ ├── orders.html ← 订单管理 │ │ ├── store.html ← 店铺设置 │ │ ├── settings.html ← 系统设置(微信支付等) │ │ ├── css/admin.css ← 管理后台样式 │ │ ├── js/api.js ← API 请求封装 │ │ ├── js/utils.js ← 工具函数 │ │ └── partials/sidebar.js ← 侧边栏组件 │ ├── nginx.conf ← Nginx 参考配置 │ └── nginx.conf.example ← 旧版 Nginx 配置(忽略) ├── miniprogram/ ← 【微信小程序前端】 │ ├── app.js ← 小程序入口 → 修改 apiBase 域名 │ ├── app.json ← 页面配置 + 底部导航 │ ├── app.wxss ← 全局样式 │ ├── project.config.json ← 项目配置 → 修改 appid │ ├── components/ │ │ └── menu-item/ ← 菜品卡片组件 │ ├── pages/ │ │ ├── index/ ← 首页(点餐菜单 + 微信登录引导) │ │ ├── category/ ← 分类浏览页 │ │ ├── cart/ ← 购物车 │ │ ├── order/ ← 下单成功/支付页 │ │ ├── orders/ ← 订单列表 │ │ └── mine/ ← 我的(用户信息 + 订单入口) │ ├── images/ ← Tab 图标源文件 │ ├── assets/icons/ ← 编译后的 Tab 图标 │ └── utils/ │ └── api.js ← 请求封装 └── 部署教程.md ``` --- ## 一、服务器环境 ### 1.1 宝塔面板安装软件 | 软件 | 版本 | 说明 | |------|------|------| | Nginx | 1.20+ | Web 服务器 | | MySQL | 5.7+ | 数据库 | | PHP | 8.0+ | 推荐 8.0 或 8.2 | ### 1.2 PHP 扩展安装 宝塔 → 软件商店 → PHP → 设置 → 安装扩展: | 扩展 | 用途 | 必须 | |------|------|------| | pdo_mysql | 数据库连接 | **必须** | | json | JSON 处理 | **必须** | | openssl | JWT 加密 | **必须** | | mbstring | 多字节字符串 | **必须** | | curl | 微信 API 请求 | **必须** | | fileinfo | 上传检测 | 推荐 | | gd | 二维码图片 | 推荐 | --- ## 二、创建网站 ### 2.1 添加站点 宝塔 → 网站 → 添加站点: 1. **域名**:`你的域名`(替换为实际域名) 2. **网站根目录**:选择 `backend/public/` 3. **PHP 版本**:PHP 8.0 或 8.2 4. 创建数据库(记下数据库名、用户名、密码) ### 2.2 上传代码 将整个 `backend` 文件夹上传到网站目录的上级: ``` /www/wwwroot/你的域名/backend/ ``` 上传后目录结构: ``` /www/wwwroot/你的域名/ └── backend/ ├── public/ ← 网站根目录 ├── app/ ← PHP 源码 └── admin/ ← 管理后台 ``` ### 2.3 目录权限 | 目录/文件 | 权限 | |-----------|------| | `backend/public/uploads/` | 777 | | `backend/app/config.php` | 可写 | | `backend/app/install/` | 可写 | ### 2.4 配置文件(关键!) 宝塔 → 网站 → `你的域名` → 设置 → **配置文件**,把以下完整配置替换进去: ```nginx server { listen 80; server_name 你的域名; index index.php index.html index.htm; root /www/wwwroot/你的域名/backend/public/; # SSL 证书申请验证 include /www/server/panel/vhost/nginx/well-known/你的域名.conf; include /www/server/panel/vhost/nginx/extension/你的域名/*.conf; # 伪静态规则 include /www/server/panel/vhost/rewrite/你的域名.conf; # ===== API 路由 ===== location / { try_files $uri $uri/ /index.php?$query_string; } # ===== 管理后台 ===== location ^~ /admin/ { alias /www/wwwroot/你的域名/backend/admin/; index index.html; try_files $uri $uri/ /admin/index.html; } # ===== 上传文件 ===== location ^~ /uploads/ { alias /www/wwwroot/你的域名/backend/public/uploads/; expires 30d; add_header Cache-Control "public, immutable"; } # ===== PHP 处理 ===== location ~ \.php$ { fastcgi_pass unix:/tmp/php-cgi-82.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param HTTP_AUTHORIZATION $http_authorization; } # ===== 安全规则 ===== location ~ ^/app/ { deny all; } location ~ /\.(ht|git|env) { deny all; } location ~ /(config\.php|db\.php)$ { deny all; } # SSL 验证 location ~ \.well-known { allow all; } # 静态资源缓存 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)$ { expires 12h; } access_log /www/wwwlogs/你的域名.log; error_log /www/wwwlogs/你的域名.error.log; } ``` > **注意**:`fastcgi_pass` 的 socket 路径需确认。SSH 执行 `ls /tmp/php-cgi-*.sock` 查看实际文件名,把 `82` 改成对应版本号。 保存后宝塔自动重载 Nginx。 --- ## 三、安装向导 ### 3.1 访问安装页面 浏览器访问 `http://你的域名/install/` 未安装时会自动跳转,按向导完成 4 步: | 步骤 | 内容 | |------|------| | 第1步 | 环境检测(PHP版本、扩展、目录权限) | | 第2步 | 数据库配置(主机、端口、数据库名、用户名、密码) | | 第3步 | 管理员设置(用户名 + 密码,用于登录后台) | | 第4步 | 完成安装(自动创建数据表、写入配置) | ### 3.2 常见安装问题 | 问题 | 解决 | |------|------| | 跳转安装页 404 | 检查 Nginx 配置中 `location /` 是否有 `try_files` | | 安装失败 Table not found | SQL 注释行干扰 → 已修复,确保上传最新代码 | | config.php 写入失败 | 检查 `backend/app/` 目录权限 | --- ## 四、配置 SSL 证书(必须) 微信小程序要求 **HTTPS**,域名必须有 SSL 证书。 宝塔面板 → 网站 → `你的域名` → SSL → **Let's Encrypt** → 一键申请。 申请成功后,勾选"强制 HTTPS"。 --- ## 五、微信小程序配置 ### 5.1 修改小程序代码 **`miniprogram/app.js`** — 修改后端域名: ```javascript globalData: { apiBase: 'https://你的域名', // 替换为你的域名 tableInfo: null, cart: [], } ``` **`miniprogram/project.config.json`** — 修改 AppID: ```json { "appid": "你的小程序AppID" } ``` ### 5.2 微信开发者工具 1. 下载 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html) 2. 用开发者工具打开 `miniprogram/` 文件夹 3. 开发时关闭域名校验:详情 → 本地设置 → 勾选"不校验合法域名" ### 5.3 配置服务器域名白名单 微信公众平台 → 开发 → 开发管理 → 开发设置 → **服务器域名**: | 类型 | 域名 | |------|------| | request 合法域名 | `https://你的域名` | | uploadFile 合法域名 | `https://你的域名` | | downloadFile 合法域名 | `https://你的域名` | ### 5.4 配置扫码打开小程序 微信公众平台 → 开发 → 开发设置 → **扫普通链接二维码打开小程序** → 添加: | 配置项 | 值 | |--------|-----| | 二维码规则 | `https://你的域名/scan` | | 前缀占用 | 独占 | | 小程序页面 | `pages/index/index` | > 下载校验文件上传到网站根目录 `backend/public/` 后提交。 --- ## 六、登录管理后台 ### 6.1 访问 ``` https://你的域名/admin/ ``` 使用安装时设置的管理员账号登录。 ### 6.2 初始设置顺序 | 页面 | 操作 | |------|------| | **店铺设置** | 填写店铺名称、电话、地址、营业时间 | | **系统设置** | 填写小程序 AppID、Secret | | **系统设置** | 填写微信支付商户号、API 密钥、回调地址 | | **分类管理** | 添加菜单分类(如:热菜、凉菜、饮品) | | **菜品管理** | 添加菜品,选分类,定价格,上传图片 | | **桌台管理** | 新增桌台 → 生成二维码 → 下载打印 | --- ## 七、桌台二维码 ### 7.1 生成和打印 1. 管理后台 → **桌台管理** → 新增桌台(如 A1、B1) 2. 点击桌台的 **"二维码"** 按钮 → **下载** 3. 打印二维码图片,贴在对应桌子上 ### 7.2 顾客点餐流程 ``` 顾客微信扫桌台二维码 ↓ 微信识别 → 自动打开小程序 ↓ 首页 → 微信登录 → 设置头像昵称 ↓ 浏览分类、选择菜品 → 加入购物车 ↓ 购物车 → 提交订单 ↓ 后厨后台看到新订单 → 确认 → 出餐 ↓ 顾客可选微信支付(需配置商户号) ``` --- ## 八、微信支付配置(可选) > **前提**:需要营业执照 + 微信支付商户号(个人主体无法开通) ### 8.1 配置项 管理后台 → 系统设置: | 配置 | 说明 | 来源 | |------|------|------| | 商户号 | 10 位数字 | 微信支付商户平台 | | API 密钥 | 32 位字符串 | 商户平台 → API 安全 | | 回调地址 | `https://你的域名/api/wxpay/notify` | 填写此项即可 | ### 8.2 商户平台设置 1. 登录 [pay.weixin.qq.com](https://pay.weixin.qq.com) 2. 产品中心 → JSAPI 支付 → 开通 3. 开发配置 → JSAPI 支付授权目录:`https://你的域名/` 4. API 安全 → 设置 API 密钥(32 位) --- ## 九、日常运维 ### 订单处理流程 ``` 顾客下单 → 后台订单管理看到新订单(待确认) → 点击"确认" → 开始烹饪 → 出餐后点"完成" → 订单完成 ``` ### 常见问题 | 问题 | 解决 | |------|------| | 访问域名 404 | 检查 Nginx 配置 `try_files` 和 root 路径 | | 管理后台 JS/CSS 404 | Nginx `/admin/` alias 路径是否正确 | | 管理后台登录无反应 | 配置文件 `HTTP_AUTHORIZATION` 是否传递 | | 安装后仍跳安装页 | 检查 `backend/app/install/install.lock` 是否生成 | | 微信登录失败 | 检查后台系统设置中 AppID/Secret 是否正确 | | 小程序扫桌台码报不存在 | 桌台是否启用;二维码是否重新生成 | | 支付失败 | 检查商户号/API密钥配置;是否已开通 JSAPI 支付 | | 图片上传失败 | 检查 `uploads` 目录权限 777 | | 图片显示 HTTP 警告 | SSL 证书是否已申请并强制 HTTPS | ### 备份建议 - **数据库**:宝塔面板 → 计划任务 → 定时备份 MySQL - **上传文件**:定期备份 `backend/public/uploads/` - **配置文件**:备份 `backend/app/config.php`