# 小程序上传包交接单

目标：给微信开发者工具一个可直接导入、已连接生产后端 `https://bigdata.dtacloud.cn/api` 的小程序包。

## 当前小程序配置

- AppID：`wxf3a0398a84cbffe1`
- 生产 API：`https://bigdata.dtacloud.cn/api`
- 小程序根目录配置：`project.config.json`
- 小程序编译产物目录：`dist/`
- 微信开发者工具导入目录：解压后的包根目录，不是单独的 `dist/` 目录。

生产构建逻辑在 `miniapp/src/api/backend.ts`：

- `NODE_ENV=production` 时默认 API 为 `https://bigdata.dtacloud.cn/api`。
- 也可以用 `TARO_APP_API_BASE_URL=https://bigdata.dtacloud.cn/api` 强制指定。

## 开发机生成包

在仓库根目录执行：

```bash
cd miniapp
TARO_APP_API_BASE_URL=https://bigdata.dtacloud.cn/api npm run build:weapp
cd ..
```

然后打包以下内容：

```text
miniapp/dist/
miniapp/project.config.json
miniapp/project.private.config.json
miniapp/package.json
miniapp/README.md
docs/MINIAPP_UPLOAD_HANDOFF.md
docs/MINIAPP_REAL_DEVICE_ACCEPTANCE.md
```

本次已生成的包放在：

```text
qa-artifacts/dlbdi-miniapp-weapp-prod-*.zip
```

## 微信开发者工具导入

1. 解压 `dlbdi-miniapp-weapp-prod-*.zip`。
2. 打开微信开发者工具。
3. 选择“导入项目”。
4. 项目目录选择解压后的包根目录。
5. AppID 确认为 `wxf3a0398a84cbffe1`。
6. 确认 `miniprogramRoot` 为 `dist/`。
7. 先点击“编译”，确认首页能打开。
8. 点击“上传”，版本号建议使用当天日期，例如 `1.0.0-20260608`。

## 微信后台必须配置

小程序后台：

- request 合法域名：`https://bigdata.dtacloud.cn`
- uploadFile 合法域名：`https://bigdata.dtacloud.cn`
- downloadFile 合法域名：`https://bigdata.dtacloud.cn`

微信支付商户平台：

- 商户号已绑定小程序 AppID。
- JSAPI 支付权限已开通。
- 支付回调地址：`https://bigdata.dtacloud.cn/api/payments/wechat/notify`

后端服务器 `.env.production`：

- `WECHAT_MINIAPP_APP_ID=wxf3a0398a84cbffe1`
- `WECHAT_MINIAPP_APP_SECRET` 已配置真实值。
- `WECHAT_PAY_APP_ID=wxf3a0398a84cbffe1`
- `WECHAT_PAY_ENABLED=true`

## 真机验收

服务器部署完成后再验小程序。不要只看开发者工具模拟器。

必验：

- 微信授权登录。
- 新用户绑定手机号验证码。
- onboarding 完善资料。
- 首页、服务、资讯、我的可打开。
- 创建付费订单。
- JSAPI 支付可调起。
- 取消支付后订单仍为待支付。
- 支付成功后等待后端回调，订单变 `paid`。
- 我的订单可看到支付完成。
- 申请发票。
- PC 登录页小程序码扫码确认登录。

完整清单见 `docs/MINIAPP_REAL_DEVICE_ACCEPTANCE.md`。

## 常见问题

- 如果接口请求失败，先查小程序合法域名是否加入 `https://bigdata.dtacloud.cn`。
- 如果微信登录失败，查后端 `WECHAT_MINIAPP_APP_ID/SECRET`。
- 如果支付调不起，查商户号是否绑定小程序 AppID，后端微信支付配置是否完整。
- 如果支付后订单不变 paid，查微信支付回调、证书、公钥、APIv3 key 和后端日志。
- 如果本地开发要连 localhost，可以另行用开发构建；生产上传包不要改成 localhost。
