# 注册设备ID

> 接口应在服务器端调用，不可在前端（小程序、网页、APP等）直接调用，具体可参考[接口调用指南](/doc/oplatform/developers/dev/guide.md)。

接口英文名：addDevice

运行小程序硬件框架 (WMPF) 的设备需要先通过本接口注册设备 ID 。

请参考[硬件注册](/doc/oplatform/Miniprogram_Frame/hardware-register)中步骤，完成前置条件后，才可以调用本接口。

access_token 应使用 移动应用 AppID（即 LauncherAPP 的 AppID ）的身份调用

## 1. 调用方式

### HTTPS 调用

```bash
POST https://api.weixin.qq.com/wxa/business/runtime/adddevice?access_token=ACCESS_TOKEN
```

### 云调用

- 本接口不支持云调用。

### 第三方调用

- 本接口不支持第三方平台调用。

## 2. 请求参数

### 查询参数 `Query String Parameters`

```json
[
  {
    "参数名": "access_token",
    "类型": "string",
    "必填": "是",
    "示例": "ACCESS_TOKEN",
    "说明": "接口调用凭证，可使用 [access_token](/miniprogram/dev/server/API/mp-access-token/api_getaccesstoken.md)"
  }
]
```

### 请求体 `Request Payload`

```json
[
  {
    "参数名": "product_id",
    "类型": "number",
    "必填": "是",
    "说明": "产品 id"
  },
  {
    "参数名": "device_id_list",
    "类型": "array",
    "必填": "是",
    "说明": "设备 id 列表。可以采用 [设备 SN 码](/doc/oplatform/Miniprogram_Frame/device-sn)，也可以由开发者自行生成。"
  },
  {
    "参数名": "model_name",
    "类型": "string",
    "必填": "是",
    "说明": "「微信终端合作平台」上登记的 model name"
  }
]
```

## 3. 返回参数

### 返回体 `Response Payload`

```json
[
  {
    "参数名": "errcode",
    "类型": "number",
    "说明": "错误码"
  },
  {
    "参数名": "errmsg",
    "类型": "string",
    "说明": "错误信息"
  }
]
```

## 4. 注意事项

 `device_id` 由开发者自行生成，一般使用 IMEI 或者是 [设备 SN 码](/doc/oplatform/Miniprogram_Frame/device-sn)，或是根据它们生成的独一无二的设备标识

#### 问题排查

- 确定是否为 POST 请求
- 除 `access_token` 外，其他参数不是放在 url 里的，是放在 body 里的 JSON 字符串
- 确认参数 productId、model_name、access_token 等是否填写错误
- 确认请求格式是否正确
- 调用返回 `api unauthorized`(errcode: 48001) 或 `hostappid error`(errcode: 50093)
  - 需确认「[微信终端合作平台](https://wecooper.weixin.qq.com)」- 左侧「申请注册设备」中是否已添加了移动应用 APP ID；
  - 需确认已完成[绑定移动应用和小程序](/doc/oplatform/Miniprogram_Frame/bind-app)；
  - 确认调用时使用的 access_token 是以上述移动应用 APP ID 生成的，而不是其他移动应用或小程序的。

## 5. 代码示例

请求示例

```json
{
  "product_id": 100000,
  "device_id_list": ["deviceid_1","deviceid_2","deviceid_3"],
  "model_name": "YOUR_MODEL_NAME"
}
```

返回示例

```json
{
  "errcode": 0,
  "errmsg": "ok"
}
```

## 6. 错误码

以下是本接口的错误码列表，其他错误码可参考 [通用错误码](/doc/oplatform/developers/errCode/README.md)；调用接口遇到报错，可使用官方提供的 [API 诊断工具](https://developers.weixin.qq.com/console/devtools/debug?utm_source=api_errcode) 辅助定位和分析问题。

```json
[
  {
    "错误码": "50093",
    "错误描述": "hostappid error"
  },
  {
    "错误码": "50097",
    "错误描述": "wecooper had this model_name but product id is difference"
  },
  {
    "错误码": "50098",
    "错误描述": "wecooper had no this model_name"
  },
  {
    "错误码": "9402101",
    "错误描述": "invalid product_id"
  }
]
```

## 7. 适用范围

本接口暂未明确可调用账号类型，或在业务中根据调用传参自行确定是否可调用，请以实际调用情况为准。
