# 校园快递代取小程序

这是校园快递代拿小程序，包含微信小程序前端和 Node.js 后端。

## 当前能力

- 微信登录，后端可用小程序 `code2Session` 换取 openid 并签发服务端 token。
- 客户在“我的”页面维护默认收货地址和联系电话。
- 客户快速下单，主要填写取件码、取件点、件型和数量。
- 价格规则：小件 1 元，中件 2 元，大件 5 元起，同宿舍 3 件以上单件减 0.5 元。
- 支付页展示服务器统一配置的微信收款码。
- 客户上传付款截图，商家端可以查看并确认收款。
- “我的”页面输入邀请码后切换商家版。
- 订单和聊天消息通过服务器 API 多端同步。

## 本地运行

```bash
npm test
node server/index.js
```

小程序 API 默认地址在 `utils/config.js`：

```js
const API_BASE_URL = 'https://91tvikun.icu'
```

开发者工具调试时，如果临时切回 HTTP/IP 地址，需要在微信开发者工具里开启“不校验合法域名、web-view、TLS 版本以及 HTTPS 证书”。正式发布使用 HTTPS 域名，并在微信公众平台配置 request 合法域名。

## 登录上线配置

服务器不会把小程序 AppSecret 写进前端代码。正式上线前，在服务器填写：

```bash
vi /etc/campus-express-miniapp.env
```

内容示例：

```env
CAMPUS_EXPRESS_WECHAT_APP_ID=wxec5a78d7d6156e23
CAMPUS_EXPRESS_WECHAT_APP_SECRET=这里填写微信公众平台的小程序AppSecret
CAMPUS_EXPRESS_STRICT_AUTH=1
```

改完后重启：

```bash
systemctl restart campus-express-api
```

`CAMPUS_EXPRESS_STRICT_AUTH=1` 开启后，资料、订单、聊天、付款截图接口都必须带登录 token；客户只能访问自己的订单，商家通过邀请码升级后可以看全部订单。

## 服务器部署

服务器：`47.116.16.57`

后端服务：

- systemd 服务名：`campus-express-api`
- 监听地址：`127.0.0.1:3000`
- 数据目录：`/var/lib/campus-express`
- Nginx 对外入口：`https://91tvikun.icu`

部署脚本：

```bash
bash deploy/server-setup.sh
bash deploy/server-publish.sh /tmp/campus-express-miniapp
```

## 正式上线域名

备案通过后，先在服务器启用 HTTPS：

```bash
bash deploy/enable-https.sh 91tvikun.icu www.91tvikun.icu
```

然后确认 `utils/config.js` 的接口地址为：

```js
const API_BASE_URL = 'https://91tvikun.icu'
```

发布新版后，在微信公众平台配置 request 合法域名为 `https://91tvikun.icu`，再上传并提交审核。

## 支付说明

当前未接正式微信支付商户号，采用“微信收款码 + 客户上传付款截图 + 商家确认收款”的流程。后续如果办理营业执照并开通微信支付商户号，可以升级为正式微信支付统一下单、回调验签和自动改订单状态。
