# 衣旧淘 · 旧衣物交易商城（微信小程序 + 原生 PHP 管理后台）

> 二手衣物循环交易平台。客户端为微信小程序，管理后台为原生 PHP + MySQL（mysqli，utf8）。
> 服务器已部署于 LAMP 环境，项目路径：`/var/www/html/yijiutao`。

---

## 一、项目结构

```
yijiutao/
├── admin/                 # 管理后台（原生 PHP）
│   ├── config.php         # 数据库与站点配置（必改）
│   ├── inc/header.php      # 后台公共头部 + 登录校验（顶部导航/菜单）
│   ├── inc/footer.php
│   ├── login.php          # 后台登录页（默认 admin/admin123）
│   ├── logout.php
│   ├── index.php          # 仪表盘（含订单/支付统计）
│   ├── orders.php         # 订单管理（发货/完成/删除）
│   ├── users.php          # 用户管理（设 is_admin=1 即管理员）
│   ├── category.php        # 分类管理
│   ├── goods.php          # 商品管理（图片上传）
│   └── recycle.php        # 回收管理
├── api/
│   ├── config.php         # 接口层配置（数据库/站点，必改）
│   └── index.php          # 接口路由（含微信支付参数，必改）
├── miniprogram/           # 微信小程序源码（用微信开发者工具导入）
│   ├── app.js             # 全局配置：接口地址/微信登录（必改）
│   ├── project.config.json# 小程序 AppID（必改）
│   └── pages/...          # 各页面
├── upload/                # 商品/回收图片上传目录（需可写 777）
└── install/
    ├── setup.sql          # 数据库初始化 + 演示数据
    └── gen_*.php          # 图标/演示图生成脚本
```

---

## 二、访问入口

- 管理后台：`http://服务器IP/yijiutao/admin/login.php`（账号 `admin` / `admin123`）
- 小程序：`miniprogram/` 目录导入微信开发者工具，AppID 已填 `wxb4e75674f60e30ce`（小程序）
- 接口地址：`http://服务器IP/yijiutao/api/index.php?act=xxx`

---

## 三、⚠️ 生产环境必须修改的参数清单

> 下表参数当前均为**开发/演示值**，上线前必须逐一替换。标 🔴 为**安全/资金相关，务必修改**。

| # | 参数 | 当前值（演示） | 修改位置 | 说明 |
|---|------|--------------|----------|------|
| 1 🔴 | 数据库密码 | `5623741951ABCabc?` | `admin/config.php`、`api/config.php` 的 `$DB_PASS` | 改为强密码；同时修改 MySQL 中 root 密码 |
| 2 | 数据库用户 | `root` | 同上 `$DB_USER` | 建议新建专用库用户，而非用 root |
| 3 | 数据库名 | `yijiutao` | 同上 `$DB_NAME` | 按需修改（相应改表所属库） |
| 4 | 部署路径 `/yijiutao` | 写死为 `/yijiutao` | `admin/config.php`、`api/config.php` 中 `SITE_URL` 末尾的 `/yijiutao` | 若部署到网站根目录或其他子目录，必须同步修改该路径段 |
| 5 🔴 | 小程序接口地址 | `https://wx.dxs345s.cn/yijiutao/api/index.php` | `miniprogram/app.js` 的 `globalData.apiBase` | 已改为真实域名；并在微信后台「开发设置→服务器域名」的 request 合法域名中加入 `https://wx.dxs345s.cn` |
| 6 🔴 | 小程序 AppID | `wxb4e75674f60e30ce` | `miniprogram/project.config.json` 的 `appid`；`api/index.php` 的 `WX_APPID` | **必须是小程序 AppID**，非公众号 AppID（`wx0567cbc56752b59c` 是公众号，另用于公众号网页授权，不参与小程序） |
| 7 🔴 | 小程序 AppSecret | `bbef6dd6a743bf0d54db286144852176` | `api/index.php` 的 `WX_APPSECRET` | 小程序后台获取；仅用于 `code2session` 登录换 openid，与公众号 AppSecret 不同 |
| 8 🔴 | 微信商户号 | `1116560787` | `api/index.php` 的 `WX_MCHID` | 微信支付商户号 |
| 9 🔴 | 商户 API 密钥 | `Hxgc5rmktM7sYbon65DYm2XQsX825Hbo` | `api/index.php` 的 `WX_APIKEY` | 商户平台 APIv2 密钥 |
| 10 🔴 | 微信登录（code换openid） | 已接入真实 `code2session`（用小程序 AppID+AppSecret） | `api/config.php` 函数 `wx_login()` | 已实现：用 `wx.login` 的 code 调微信接口换 openid；若服务器无外网则回退为 code 直接当 openid（本地调试用） |
| 11 🔴 | 微信支付流程 | 当前为**模拟支付**（下单即标记已支付） | `miniprogram/pages/order-confirm/order-confirm.js` 的 `pay()`；`api/index.php` 的 `order_pay` | 上线需：后台用商户密钥做「统一下单」签名 → 前端 `wx.requestPayment` → 验签回调更新订单状态 |
| 12 | 后台管理员密码 | `admin123`（明文存储） | 数据库 `users` 表（密码按需求**不加密**） | 至少修改为强密码；新增管理员在 `users.php` 中设 `is_admin=1` |
| 13 | CORS 跨域 | `Access-Control-Allow-Origin: *` | `api/config.php` 顶部 | 上线建议限制为你的域名（开发阶段方便本地调试） |
| 14 | 接口协议 HTTP | `http` | `api/config.php`、`admin/config.php` 中 `$protocol` 判断 | 微信要求 HTTPS；正式域名请开启 HTTPS（自动识别 `https://`） |
| 15 | 服务器时区 | 依赖系统/MySQL 时区 | MySQL：`SET time_zone`；PHP：`date.timezone` | 仪表盘「今日/本月」统计依赖 `CURDATE()`/`NOW()`，建议统一为 `Asia/Shanghai` |
| 16 | 文件上传大小 | 默认 php.ini 限制 | `php.ini` 的 `upload_max_filesize`、`post_max_size` | 商品图最多 6 张，单张建议 ≤2MB |
| 17 | 错误显示 | 开发期可见 | `php.ini` 的 `display_errors` | 生产建议关闭 `display_errors = Off`，开启错误日志 |
| 18 | 演示数据 | 含演示商品/用户/分类 | `install/setup.sql` | 生产数据库请用 `CREATE` 部分，删除 `初始数据` 示例行；或建库后清理 `goods/users/category` 演示行 |

---

## 四、上线操作步骤（示例）

1. **准备 HTTPS 域名**（微信强制要求），并配置小程序后台：
   - 开发管理 → 开发设置 → 服务器域名：request 合法域名填 `https://你的域名`
   - 微信支付：绑定商户号、配置 API 密钥与回调地址
2. **修改参数**：按上方表格逐项替换（重点 1、5、6、7、8、9、10、11）。
3. **部署目录与域名**：当前部署在 `/yijiutao` 子目录，真实域名为 `https://wx.dxs345s.cn`，接口地址 `https://wx.dxs345s.cn/yijiutao/api/index.php`。后端 `SITE_URL` 已做反向代理 HTTPS 探测（`HTTP_X_FORWARDED_PROTO`），由服务器 `HTTP_HOST` 自动拼接，无需硬编码。若你改为部署到网站根目录，请把各 `config.php` 中 `'/yijiutao'` 路径段移除。
4. **微信后台配置**：开发管理→开发设置→服务器域名：request 合法域名、`uploadFile` 合法域名、`downloadFile` 合法域名均加入 `https://wx.dxs345s.cn`。
5. **后台登录**：用 `admin/admin123` 进入，在「用户管理」修改密码、按需设管理员。
6. **真机测试**：微信开发者工具勾选「不校验合法域名」仅用于本地；正式发布前必须走 HTTPS + 真实支付联调。

---

## 五、接口一览（`api/index.php?act=`）

`login` 登录 · `user_update` · `category_list` · `goods_list` / `goods_detail` · `favorite_add/del/check/list` · `recycle_submit` · `message_list/read` · `address_list/add/update/del/default` · `order_create/pay/list/detail` · `goods_publish` · `upload_image`

---

## 六、说明

- 数据库操作统一使用 **mysqli**，编码 **utf8**，用户密码**不加密**（按需求保留）。
- 管理后台采用原生 PHP，结构清晰、关键逻辑均有中文注释。
- 微信支付与登录参数已配置为**小程序**凭证（AppID `wxb4e75674f60e30ce` / AppSecret `bbef6dd6a743bf0d54db286144852176`）；原需求中的 `wx0567cbc56752b59c` 为**公众号** AppID，仅用于公众号网页授权，不参与小程序登录/支付。
- 微信登录 `wx_login()` 已接入真实 `code2session`；微信支付（`order_pay`）仍为模拟流程，需替换为统一下单 + `wx.requestPayment` + 回调验签。
