# 更新品牌资质

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

接口英文名：updatebrandlogic

通过该接口可以更新品牌资质。调用该接口会自动提交审核，审核结果通过品牌资质事件通知推送。 

[品牌资质开发指南](/doc/store/shop/guide/catalog/brand)

## 1. 调用方式

### HTTPS 调用

```bash
POST https://api.weixin.qq.com/channels/ec/brand/update?access_token=ACCESS_TOKEN
```

### 云调用

- 调用方法：channels.ec.brand.update

- 出入参和 HTTPS 调用相同，调用方式可查看 [云调用](/doc/oplatform/developers/dev/cloudCall.md) 说明文档。

### 第三方调用

- 本接口支持第三方平台代微信小店商家调用。[第三方服务商调用模式介绍](/doc/store/shop/dev_before/third_party_platforms)

- 该接口所属的权限集 id 为：85、129、192

- 服务商获得其中之一权限集授权后，可通过使用 [authorizer_access_token](/doc/oplatform/developers/dev/AuthorizerAccessToken.md) 代微信小店商家进行调用，具体可查看 [第三方调用](/doc/oplatform/Third-party_Platforms/2.0/Before_Develop/call_interface.md) 说明文档。

## 2. 请求参数

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

```json
[
  {
    "参数名": "access_token",
    "类型": "string",
    "必填": "是",
    "示例": "ACCESS_TOKEN",
    "说明": "接口调用凭证，可使用 [access_token](/doc/store/shop/API/apimgnt/common/api_getaccesstoken)（微信小店商家）、[authorizer_access_token](/doc/oplatform/openApi/ticket-token/api_getauthorizeraccesstoken.md)（服务商代调用）"
  }
]
```

### 请求体 `Request Payload`

```json
[
  {
    "参数名": "brand",
    "类型": "object",
    "必填": "是",
    "说明": "品牌详情"
  }
]
```

### Body.brand `Object Payload`

品牌详情

```json
[
  {
    "参数名": "brand_id",
    "类型": "number",
    "必填": "是",
    "说明": "品牌库中的品牌编号"
  },
  {
    "参数名": "ch_name",
    "类型": "string",
    "必填": "否",
    "说明": "品牌商标中文名，从品牌库获取"
  },
  {
    "参数名": "en_name",
    "类型": "string",
    "必填": "否",
    "说明": "品牌商标英文名，从品牌库获取"
  },
  {
    "参数名": "classification_no",
    "类型": "string",
    "必填": "是",
    "说明": "商标分类号，取值范围 1-45"
  },
  {
    "参数名": "trade_mark_symbol",
    "类型": "number",
    "必填": "是",
    "说明": "商标类型。1=R 标，2=TM 标"
  },
  {
    "参数名": "register_details",
    "类型": "object",
    "必填": "否",
    "说明": "注册信息"
  },
  {
    "参数名": "application_details",
    "类型": "object",
    "必填": "否",
    "说明": "申请信息"
  },
  {
    "参数名": "grant_type",
    "类型": "number",
    "必填": "否",
    "说明": "商标授权类型。1=自有品牌，2=授权品牌"
  },
  {
    "参数名": "grant_details",
    "类型": "object",
    "必填": "否",
    "说明": "品牌信息"
  }
]
```

### Body.brand.register_details `Object Payload`

注册信息

```json
[
  {
    "参数名": "registrant",
    "类型": "string",
    "必填": "是",
    "说明": "商标注册人，R 标时必填"
  },
  {
    "参数名": "register_no",
    "类型": "string",
    "必填": "是",
    "说明": "商标注册号，R 标时必填"
  },
  {
    "参数名": "start_time",
    "类型": "number",
    "必填": "否",
    "说明": "商标注册有效期开始时间，长期有效可不填"
  },
  {
    "参数名": "end_time",
    "类型": "number",
    "必填": "否",
    "说明": "商标注册有效期结束时间，长期有效可不填"
  },
  {
    "参数名": "is_permanent",
    "类型": "boolean",
    "必填": "是",
    "说明": "是否长期有效"
  },
  {
    "参数名": "register_certifications",
    "类型": "array",
    "必填": "否",
    "说明": "商标注册证的 file_id，R 标时必填，限制最多传 1 张，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "renew_certifications",
    "类型": "array",
    "必填": "否",
    "说明": "变更 / 续展证明的 file_id，限制最多传 5 张，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  }
]
```

### Body.brand.application_details `Object Payload`

申请信息

```json
[
  {
    "参数名": "acceptance_time",
    "类型": "number",
    "必填": "是",
    "说明": "商标申请受理时间，TM 标时必填"
  },
  {
    "参数名": "acceptance_certification",
    "类型": "array",
    "必填": "否",
    "说明": "商标注册申请受理书 file_id，TM 标时必填，限制最多传 1 张，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "acceptance_no",
    "类型": "string",
    "必填": "是",
    "说明": "商标申请号，TM 标时必填"
  }
]
```

### Body.brand.grant_details `Object Payload`

品牌信息

```json
[
  {
    "参数名": "grant_certifications",
    "类型": "array",
    "必填": "否",
    "说明": "（旧结构）品牌销售授权书的 file_id，授权品牌必填，限制最多传 9 张，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "grant_level",
    "类型": "number",
    "必填": "否",
    "说明": "授权级数，授权品牌必填，取值 1-3"
  },
  {
    "参数名": "start_time",
    "类型": "number",
    "必填": "否",
    "说明": "（旧结构）授权有效期开始时间，长期有效可不填"
  },
  {
    "参数名": "end_time",
    "类型": "number",
    "必填": "否",
    "说明": "（旧结构）授权有效期结束时间，长期有效可不填"
  },
  {
    "参数名": "is_permanent",
    "类型": "boolean",
    "必填": "否",
    "说明": "（旧结构）是否长期有效"
  },
  {
    "参数名": "brand_owner_id_photos",
    "类型": "array",
    "必填": "否",
    "说明": "品牌权利人证件照的 file_id，限制最多传 2 张，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "use_split_grant_info",
    "类型": "number",
    "必填": "否",
    "说明": "是否使用分级授权书结构，大于 0 即使用。如果使用分级结构，也会兼容填充到旧结构"
  },
  {
    "参数名": "grant_info_lv1",
    "类型": "object",
    "必填": "否",
    "说明": "一级结构"
  },
  {
    "参数名": "grant_info_lv2",
    "类型": "object",
    "必填": "否",
    "说明": "二级结构"
  },
  {
    "参数名": "grant_info_lv3",
    "类型": "object",
    "必填": "否",
    "说明": "三级结构"
  },
  {
    "参数名": "contact_info_list",
    "类型": "objarray",
    "必填": "否",
    "说明": "联系方式"
  }
]
```

### Body.brand.grant_details.grant_info_lv1 `Object Payload`

一级结构

```json
[
  {
    "参数名": "grant_certifications",
    "类型": "array",
    "必填": "否",
    "说明": "（分级结构）品牌销售授权书的 file_id，多于一级授权时必填，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "start_time",
    "类型": "number",
    "必填": "否",
    "说明": "（分级结构）授权有效期开始时间，长期有效可不填"
  },
  {
    "参数名": "end_time",
    "类型": "number",
    "必填": "否",
    "说明": "（分级结构）授权有效期结束时间，长期有效可不填"
  },
  {
    "参数名": "is_permanent",
    "类型": "boolean",
    "必填": "否",
    "说明": "（分级结构）是否长期有效"
  }
]
```

### Body.brand.grant_details.grant_info_lv2 `Object Payload`

二级结构

```json
[
  {
    "参数名": "grant_certifications",
    "类型": "array",
    "必填": "否",
    "说明": "（分级结构）品牌销售授权书的 file_id，多于二级授权时必填，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "start_time",
    "类型": "number",
    "必填": "否",
    "说明": "（分级结构）授权有效期开始时间，长期有效可不填"
  },
  {
    "参数名": "end_time",
    "类型": "number",
    "必填": "否",
    "说明": "（分级结构）授权有效期结束时间，长期有效可不填"
  },
  {
    "参数名": "is_permanent",
    "类型": "boolean",
    "必填": "否",
    "说明": "（分级结构）是否长期有效"
  }
]
```

### Body.brand.grant_details.grant_info_lv3 `Object Payload`

三级结构

```json
[
  {
    "参数名": "grant_certifications",
    "类型": "array",
    "必填": "否",
    "说明": "（分级结构）品牌销售授权书的 file_id，三级授权时必填，需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传"
  },
  {
    "参数名": "start_time",
    "类型": "number",
    "必填": "否",
    "说明": "（分级结构）授权有效期开始时间，长期有效可不填"
  },
  {
    "参数名": "end_time",
    "类型": "number",
    "必填": "否",
    "说明": "（分级结构）授权有效期结束时间，长期有效可不填"
  },
  {
    "参数名": "is_permanent",
    "类型": "boolean",
    "必填": "否",
    "说明": "（分级结构）是否长期有效"
  }
]
```

">

### Body.brand.grant_details.contact_info_list(Array) `Object Payload`

联系方式

```json
[
  {
    "参数名": "key",
    "类型": "string",
    "必填": "否",
    "说明": "联系方式类型，如联系电话"
  },
  {
    "参数名": "value",
    "类型": "string",
    "必填": "否",
    "说明": "联系方式内容"
  }
]
```

## 3. 返回参数

### 返回体 `Response Payload`

```json
[
  {
    "参数名": "errcode",
    "类型": "number",
    "示例": "0",
    "说明": "错误码"
  },
  {
    "参数名": "errmsg",
    "类型": "string",
    "示例": "ok",
    "说明": "错误信息"
  },
  {
    "参数名": "audit_id",
    "类型": "number",
    "示例": "12345678",
    "说明": "审核单 ID，提交审核成功后返回"
  }
]
```

## 4. 注意事项

- 调用该接口会进行提交审核，处于审核中状态的品牌不可重复提交，需要先调用 [API] [撤回品牌资质审核 / cancelauditbrandlogic](api_cancelauditbrandlogic) 接口撤销审核；
- 所有资质文件需要先调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口上传；
- 授权品牌建议使用分级结构，通过 use_split_grant_info 字段区分，新旧结构区别详见结构中（旧结构）、（分级结构）标记。

## 5. 代码示例

请求示例

```json
{
    "brand": {
        "brand_id": "10000531",
        "ch_name": "尼康",
        "en_name": "Nikon",
        "classification_no": "2",
        "trade_mark_symbol": 1,
        "register_details": {
            "registrant": "注册人",
            "register_no": "注册号",
            "start_time": 1665417600,
            "end_time": 1666281600,
            "is_permanent": false,
            "register_certifications": ["file_id_XXXX"],
            "renew_certifications": ["file_id_XXXX"]
        },
        "application_details": {},
        "grant_type": 2,
        "grant_details": {
            "grant_certifications": ["file_id_XXXX"],
            "grant_level": 3,
            "start_time": 1664985600,
            "end_time": 1678896000,
            "is_permanent": false,
            "brand_owner_id_photos": ["file_id_XXXX", "file_id_XXXX"],
            "use_split_grant_info": 1,
            "grant_info_lv1": {
                "grant_certifications": ["file_id_XXXX"],
                "start_time": 1664985600,
                "end_time": 1678896000
            },
            "grant_info_lv2": {
                "grant_certifications": ["file_id_XXXX"],
                "start_time": 1664985600,
                "end_time": 1678896000
            },
            "grant_info_lv3": {
                "grant_certifications": ["file_id_XXXX"],
                "start_time": 1664985600,
                "end_time": 1678896000
            },
            "contact_info_list": [
                {
                    "key": "联系电话",
                    "value": "13012345678"
                }
            ]
        }
    }
}
```

返回示例

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

## 6. 错误码

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

```json
[
  {
    "错误码": "10020050",
    "错误描述": "无权限调用该 api",
    "解决方案": "检查 access_token 与权限集授权"
  },
  {
    "错误码": "10020055",
    "错误描述": "参数有误",
    "解决方案": "检查请求参数格式"
  },
  {
    "错误码": "10020080",
    "错误描述": "提交的资质数量超出限制",
    "解决方案": "减少资质文件数量至限制范围内"
  },
  {
    "错误码": "10020081",
    "错误描述": "品牌的申请记录不存在，请调用新增品牌接口",
    "解决方案": "确认 brand_id 是否正确，或改用 [API] [新增品牌资质 / addbrandlogic](api_addbrandlogic)"
  },
  {
    "错误码": "10020084",
    "错误描述": "品牌名称与品牌库 ID 不匹配",
    "解决方案": "确认 ch_name / en_name 与 brand_id 对应的品牌库信息一致"
  },
  {
    "错误码": "10020085",
    "错误描述": "该品牌申请正在审核中，请不要重复提交",
    "解决方案": "先调用 [API] [撤回品牌资质审核 / cancelauditbrandlogic](api_cancelauditbrandlogic) 接口后再提交"
  },
  {
    "错误码": "10020086",
    "错误描述": "品牌资质文件的 file_id 无效",
    "解决方案": "重新调用 [API] [上传资质图片 / qualificationupload](/doc/store/shop/API/apimgnt/resource/api_qualificationupload) 接口获取有效 file_id"
  },
  {
    "错误码": "10020602",
    "错误描述": "品牌授权类型错误",
    "解决方案": "检查 grant_type 取值"
  },
  {
    "错误码": "10020603",
    "错误描述": "品牌商标类型错误",
    "解决方案": "检查 trade_mark_symbol 取值"
  },
  {
    "错误码": "10020604",
    "错误描述": "品牌状态错误",
    "解决方案": ""
  },
  {
    "错误码": "10020605",
    "错误描述": "品牌授权等级错误",
    "解决方案": "检查 grant_details.grant_level 取值范围 1-3"
  },
  {
    "错误码": "10020606",
    "错误描述": "品牌不支持非 R 标",
    "解决方案": "该品牌仅支持 R 标资质"
  },
  {
    "错误码": "10020607",
    "错误描述": "品牌商标注册号错误",
    "解决方案": "检查 register_details.register_no"
  },
  {
    "错误码": "10020608",
    "错误描述": "品牌授权信息错误",
    "解决方案": "检查 grant_details 授权信息"
  },
  {
    "错误码": "10020609",
    "错误描述": "品牌商标分类号错误",
    "解决方案": "检查 classification_no 取值范围 1-45"
  },
  {
    "错误码": "10020610",
    "错误描述": "品牌申请已存在",
    "解决方案": ""
  },
  {
    "错误码": "10020611",
    "错误描述": "已存在相同品牌入库中",
    "解决方案": ""
  }
]
```

## 7. 适用范围

本接口在不同账号类型下的可调用情况：

```json
[
  {
    "微信小店": "✔",
    "小店供货商": "✔"
  }
]
```

- ✔：该账号可调用此接口。
- 其他未明确声明的账号类型，如无特殊说明，均不可调用此接口。
