# 微信小程序配置指南

## 问题：获取微信 code 报错

### 错误信息
```
{errMsg: "login:fail 系统错误，错误码：41002,appid missing"}
```

### 错误原因
- 错误码 **41002** 表示：**appid 缺失或无效**
- `manifest.json` 中的 `mp-weixin.appid` 没有配置

## 解决方案

### 方案 1: 使用测试 AppID（推荐用于开发）

在微信开发者工具中，可以使用测试号进行开发：

1. **打开微信开发者工具**
2. **创建项目时选择"测试号"**
3. **或在 manifest.json 中配置**：
   ```json
   "mp-weixin": {
     "appid": "touristappid"
   }
   ```

**注意**：`touristappid` 是微信开发者工具的特殊测试 AppID，仅用于开发测试。

### 方案 2: 使用正式 AppID（用于生产）

如果你已经注册了微信小程序，使用正式的 AppID：

1. **登录微信公众平台**
   - 访问：https://mp.weixin.qq.com/

2. **获取 AppID**
   - 登录后台
   - 进入"开发" → "开发管理" → "开发设置"
   - 复制 AppID（格式：`wx1234567890abcdef`）

3. **配置到项目**
   
   **方法 A：通过 HBuilderX 可视化配置**
   - 打开 `manifest.json`
   - 点击"微信小程序配置"
   - 填入 AppID
   - 保存

   **方法 B：直接编辑 manifest.json**
   ```json
   "mp-weixin": {
     "appid": "wx1234567890abcdef",  // 替换为你的 AppID
     "setting": {
       "urlCheck": false
     }
   }
   ```

4. **重新编译项目**
   - 在 HBuilderX 中重新运行到微信开发者工具

## 完整配置示例

### 开发环境配置（使用测试号）

```json
{
  "mp-weixin": {
    "appid": "touristappid",
    "setting": {
      "urlCheck": false,
      "es6": true,
      "postcss": true,
      "minified": true
    },
    "usingComponents": true,
    "permission": {
      "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
      }
    }
  }
}
```

### 生产环境配置（使用正式 AppID）

```json
{
  "mp-weixin": {
    "appid": "wx1234567890abcdef",
    "setting": {
      "urlCheck": true,
      "es6": true,
      "postcss": true,
      "minified": true,
      "checkSiteMap": true
    },
    "usingComponents": true,
    "permission": {
      "scope.userLocation": {
        "desc": "你的位置信息将用于小程序位置接口的效果展示"
      }
    },
    "requiredPrivateInfos": [
      "getLocation"
    ]
  }
}
```

## 后端配置

除了前端配置，后端也需要配置微信小程序信息：

### 1. 配置后端 .env 文件

```env
# 微信小程序配置
WECHAT_APP_ID=wx1234567890abcdef
WECHAT_APP_SECRET=your_app_secret_here
```

### 2. 获取 AppSecret

1. 登录微信公众平台
2. 进入"开发" → "开发管理" → "开发设置"
3. 在"开发者ID"部分找到 AppSecret
4. 点击"重置"或"生成"获取 AppSecret
5. **重要**：AppSecret 只显示一次，请妥善保存

### 3. 配置服务器域名

在微信公众平台配置服务器域名：

1. 进入"开发" → "开发管理" → "开发设置"
2. 找到"服务器域名"
3. 配置以下域名：
   - **request 合法域名**：`https://your-api-domain.com`
   - **uploadFile 合法域名**：`https://your-api-domain.com`
   - **downloadFile 合法域名**：`https://your-api-domain.com`

**注意**：
- 域名必须使用 HTTPS
- 域名必须备案
- 开发阶段可以在微信开发者工具中关闭域名校验

## 开发流程

### 1. 本地开发（使用测试号）

```bash
# 1. 配置 manifest.json
"appid": "touristappid"

# 2. 在微信开发者工具中
- 关闭"不校验合法域名"
- 关闭"不校验 TLS 版本"
- 关闭"不校验 HTTPS 证书"

# 3. 运行项目
npm run dev:mp-weixin
```

### 2. 真机测试（使用正式 AppID）

```bash
# 1. 配置正式 AppID
"appid": "wx1234567890abcdef"

# 2. 配置后端服务器域名

# 3. 上传代码到微信后台

# 4. 在手机上扫码预览
```

### 3. 发布上线

```bash
# 1. 确认所有配置正确
- AppID 正确
- 服务器域名已配置
- 后端 AppSecret 已配置

# 2. 提交审核
- 在微信公众平台提交审核
- 等待审核通过

# 3. 发布上线
- 审核通过后点击发布
```

## 常见问题

### Q1: 使用 touristappid 可以正常开发吗？
A: 可以，但有限制：
- 只能在微信开发者工具中使用
- 无法真机预览
- 无法调用部分需要权限的 API
- 仅用于界面开发和基本功能测试

### Q2: 如何申请微信小程序？
A: 
1. 访问 https://mp.weixin.qq.com/
2. 点击"立即注册"
3. 选择"小程序"
4. 按照流程完成注册（需要企业或个人认证）

### Q3: AppSecret 泄露了怎么办？
A: 
1. 立即在微信公众平台重置 AppSecret
2. 更新后端配置
3. 重新部署后端服务

### Q4: 为什么配置了 AppID 还是报错？
A: 检查以下几点：
1. AppID 格式是否正确（wx 开头）
2. 是否重新编译了项目
3. 微信开发者工具是否重新加载了项目
4. 后端是否配置了对应的 AppID 和 AppSecret

### Q5: 开发环境如何跳过域名校验？
A: 在微信开发者工具中：
1. 点击右上角"详情"
2. 勾选"不校验合法域名、web-view（业务域名）、TLS 版本以及 HTTPS 证书"

## 测试登录功能

### 使用测试号测试

```javascript
// 1. 配置 manifest.json
"appid": "touristappid"

// 2. 在微信开发者工具中测试
// 点击登录按钮，会弹出模拟登录界面
// 选择一个测试用户进行登录

// 3. 查看控制台输出
// 可以看到获取到的 code
```

### 使用正式 AppID 测试

```javascript
// 1. 配置正式 AppID
"appid": "wx1234567890abcdef"

// 2. 配置后端
WECHAT_APP_ID=wx1234567890abcdef
WECHAT_APP_SECRET=your_secret

// 3. 真机测试
// 扫码预览，使用真实微信账号登录
```

## 相关文档

- [微信小程序官方文档](https://developers.weixin.qq.com/miniprogram/dev/framework/)
- [uni-app 微信小程序配置](https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin)
- [登录流程说明](./LOGIN_FLOW.md)
- [认证系统使用指南](./AUTH_GUIDE.md)

## 技术支持

如有问题，请查看：
- 微信开发者社区：https://developers.weixin.qq.com/community/
- uni-app 官方论坛：https://ask.dcloud.net.cn/
