**第三方开发者模式**

![](https://mmbiz.qpic.cn/mmbiz/PiajxSqBRaEIQxibpLbyuSK3Gu8V6AFNUz6icIicQCWa4cm5C6QXNdkxeG3A3oIKQESxXLvnCoycCv4lpeIylDlRfw/0?wx_fmt=png)

1、具备认证服务号的商家，可用商家自己服务号申请卡券功能后，通过微信开放平台“服务号登录授权”授权给开发者，代为开发和应用卡券功能，卡券数据及会员归属在商家自己服务号下。该模式简称为“普通授权”，无额外开发接口，参考卡券整套基础接口即可。

2、针对没有服务号的商家，为了降低商户接入成本，可由第三方背书接入。由开发者所在企业为子商户作为信用背书，并可以帮助 没有能力制作卡券的商户制作卡券。这种降低商户门槛，由第三方背书接入的开发者模式为：第三方代制模式（[查看介绍及指引文档](https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1459357007&version=1&lang=zh_CN&platform=2)）。这模式需额外接口。参考如下接口文档。

目录
1 第三方代制模式

1.1 创建子商户接口

1.2 子商户审核事件推送

1.3 卡券开放类目查询接口

1.4 更新子商户接口

1.5 拉取单个子商户信息接口

1.6 批量拉取子商户信息接口

1.7 创建子商户卡券接口

1.8 错误码说明

1.9 联系我们

# **1 第三方代制模式**

**模式概述**

为了降低商户接入卡券的难度，微信公众平台向所有已具备卡券功能的服务号开放“第三方代制”功能。申请并开通此功能后，具备开发能力的开发者，可通过API接口协助无服务号的商户快速接入并使用卡券。协助制券的开发者称为“母商户”，被协助制券的商户称为“子商户”。

母商户需将旗下子商户资料提前上传报备，通过审核方可生效。在制券过程中允许母商户从报备的子商户列表中，选择一个子商户协助制券。

**开通步骤**

第一步，申请路径：微信公众平台-卡券功能-右上角-商户信息-第三方代制模式。

第二步，商户通过微信公众平台或API接口，提交子商户资料、资质，审核通过后可使用该子商户信息制券。

第三步，调用API接口创建卡券时，需传入该模式的特有字段，具体字段参考创建子商户接口的返回字段说明。该模式下，仅创建卡券接口有变动，其余接口和卡券整体接口的使用保持不变。

## **1.1 创建子商户接口**

**接口说明**

支持母商户调用该接口传入子商户的相关资料，并获取子商户ID，用于子商户的卡券功能管理。 子商户的资质包括：商户名称、商户logo（图片）、卡券类目、授权函（扫描件或彩照）、授权函有效期截止时间。

**接口详情**

> HTTP请求方式: POST URL:https://api.weixin.qq.com/card/submerchant/submit?access_token=TOKEN

**参数说明**

| 参数         | 是否必须 | 说明         |
| ------------ | -------- | ------------ |
| access_token | 是       | 调用接口凭证 |
| POST数据     | 是       | Json数据     |

**POST数据示例**

```json
{
 "info": {
 "brand_name": "aaaaaa",
 "app_id"："xxxxxxxxxxx",
 "logo_url": "http://mmbiz.xxxx",
 "protocol": "xxxxxxxxxx",
 "agreement_media_id":"xxxxxxxxxx",
 "operator_media_id":"xxxxxxxx",
 "end_time": 1438990559,
 "primary_category_id": 1,
 "secondary_category_id": 101
 }
}
```

**字段说明**

| 参数名                | 必填 | 类型         | 示例              | 说明                                                                                     |
| --------------------- | ---- | ------------ | ----------------- | ---------------------------------------------------------------------------------------- |
| info                  | 是   | json结构     |                   |                                                                                          |
| app_id                | 否   | String(36)   | wxxxxxxxxxxx      | 子商户的服务号app_id，配置后子商户卡券券面上的app_id为该app_id。注意：该app_id须经过认证 |
| brand_name            | 是   | String(36)   | 兰州拉面          | 子商户名称（12个汉字内），该名称将在制券时填入并显示在卡券页面上                         |
| logo_url              | 是   | string(128)  | http://mmbiz.xxxx | 子商户logo，可通过 上传图片接口 获取。该logo将在制券时填入并显示在卡券页面上             |
| protocol              | 是   | String(36)   | mdasdfkl ：       | 授权函ID，即通过 上传临时素材接口 上传授权函后获得的media_id                             |
| end_time              | 是   | unsigned int | 15300000          | 授权函有效期截止时间（东八区时间，单位为秒），需要与提交的扫描件一致                     |
| primary_category_id   | 是   | int          | 2                 | 一级类目id,可以通过本文档中接口查询                                                      |
| secondary_category_id | 是   | int          | 2                 | 二级类目id，可以通过本文档中接口查询                                                     |
| agreement_media_id    | 否   | string(36)   | 2343343424        | 营业执照或个体工商户营业执照彩照或扫描件                                                 |
| operator_media_id     | 否   | string(36)   | 2343343424        | 营业执照内登记的经营者身份证彩照或扫描件                                                 |

_备注：授权函请在 (《第三方代制模式指引文档》)[https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1459357007&version=1&lang=zh_CN&platform=2]内下载，手填并加盖鲜章后，上传彩色扫描件或彩照。_

_1、授权函必须加盖企业公章，或个体户店铺章、发票专用章、财务章、合同章等具备法律效力的盖章，不可使用个人私章；_

_2、若子商户是个体工商户，且无上述公章，授权函可用个体工商户经营者签字代替公章，且须同时额外上传《个体工商户营业执照》及该执照内登记的经营者的身份证彩照。（本方案仅适用于子商户是个体工商户，且无公章的场景。其他场景必须在授权函加盖公章）_

_3、子商户若有服务号，且不愿意自己运营，通过授权方式让第三方代制，支持配置子商户服务号。配置后，1）该子商户的制券配额不再限制，2）该卡券详情页关联的服务号为子商户配置这个服务号。_

**返回数据**

```json
{
"info": {
 "merchant_id": 12,
 "app_id":"xxxxxxxxxxxxx",
 "create_time": 1438790559,
 "update_time": 1438790559,
 "brand_name": "aaaaaa",
 "logo_url": "http://mmbiz.xxxx",
 "status": "CHECKING",
 "begin_time": 1438790559,
 "end_time": 1438990559,
 "primary_category_id": 1,
 "secondary_category_id": 101
}
}
```

**特别注意：**

| 参数名                | 描述                                                                                                                                                                           |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| merchant_id           | 子商户id，对于一个母商户服务号下唯一                                                                                                                                           |
| app_id                | 子商户若有服务号，且不愿意自己运营，通过授权方式让第三方代制，支持配置子商户服务号。配置后，1）该子商户的制券配额不再限制，2）该卡券详情页关联的服务号为子商户配置这个服务号。 |
| create_time           | 子商户信息创建时间                                                                                                                                                             |
| update_time           | 子商户信息更新时间                                                                                                                                                             |
| brand_name            | 子商户名称（12个汉字内），该名称将在制券时填入并显示在卡券页面上。                                                                                                             |
| logo_url              | 子商户logo，可通过上传logo接口获取。该logo将在制券时填入并显示在卡券页面上                                                                                                     |
| status                | 子商户状态，"CHECKING" 审核中, "APPROVED" , 已通过；"REJECTED"被驳回, "EXPIRED"协议已过期                                                                                      |
| bengin_time           | 创建时间（非协议开始时间）                                                                                                                                                     |
| end_time              | 授权函有效期截止时间（东八区时间，单位为秒）                                                                                                                                   |
| primary_category_id   | 子商户一级类目                                                                                                                                                                 |
| secondary_category_id | 子商户二级类目                                                                                                                                                                 |

_若子商户资料通过微信公众平台提交，可在微信公众平台卡券功能-子商户管理-子商户详情里查看子商户ID，或通过子商户创建接口返回子商户ID，或通过子商户信息拉取接口获取子商户ID。_

## **1.2 子商户审核事件推送**

开发者所代理的子商户审核通过后，会收到微信服务器发送的事件推送。

```xml
<xml>
  <ToUserName><![CDATA[toUser]]></ToUserName>
  <FromUserName><![CDATA[FromUser]]></FromUserName>
  <CreateTime>123456789</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[card_merchant_check_result]]></Event>
  <MerchantId>0</MerchantId>
  <IsPass>1</IsPass>
  <Reason><![CDATA[reason]]></Reason>
</xml>

```

**字段说明**

| 参数         | 说明                                                 |
| ------------ | ---------------------------------------------------- |
| ToUserName   | 开发者微信号。                                       |
| FromUserName | 发送方账号（一个OpenID）。                           |
| CreateTime   | 消息创建时间 （整型）。                              |
| MsgType      | 消息类型，event。                                    |
| Event        | 事件类型，card_merchant_check_result(子商户审核事件) |
| MerchantId   | 子商户ID。                                           |
| IsPass       | 是否通过，为1时审核通过。                            |
| Reason       | 驳回的原因                                           |

## **1.3卡券开放类目查询接口**

**接口说明**

通过调用该接口查询卡券开放的类目ID，类目会随业务发展变更，请每次用接口去查询获取实时卡券类目。

注意：

1.本接口查询的返回值还有卡券资质ID,此处的卡券资质为：已微信认证的服务号通过微信公众平台申请卡券功能时，所需的资质。

2.对于第三方开发者代制（无服务号）模式，子商户无论选择什么类目，均暂不需按照此返回提供资质，返回值仅参考类目ID 即可。

**接口详情**

**接口调用请求说明**

> HTTP请求方式: GET URL:https://api.weixin.qq.com/card/getapplyprotocol?access_token=TOKEN

**参数说明**

| 参数         | 是否必须 | 说明         |
| ------------ | -------- | ------------ |
| access_token | 是       | 调用接口凭证 |
| GET数据      | 是       | Json数据     |

**返回数据**

```json
{
   "category": [
       {
           "primary_category_id": 1,
           "category_name": "美食",
           "secondary_category": [
               {
                   "secondary_category_id": 101,
                   "category_name": "粤菜",
                   "need_qualification_stuffs": [
                       "food_service_license_id",
                       "food_service_license_bizmedia_id"
                   ],
                   "can_choose_prepaid_card": 1,
                   "can_choose_payment_card": 1
               },
                       }
   ],
   "errcode": 0,
   "errmsg": "ok"
}
```

| 参数名                | 描述              |
| --------------------- | ----------------- |
| errcode               | 错误码，0为正常。 |
| errmsg                | 错误信息。        |
| primary_category_id   | 一级目录id        |
| secondary_category_id | 二级目录id        |

## **1.4 更新子商户接口**

**接口说明**

支持调用该接口更新子商户信息。

**接口详情**

**接口调用请求说明**

> http请求方式: POST https://api.weixin.qq.com/card/submerchant/update?access_token=TOKEN

**参数说明**

| 参数         | 是否必须 | 说明         |
| ------------ | -------- | ------------ |
| access_token | 是       | 调用接口凭证 |
| POST数据     | 是       | Json数据     |

**POST数据示例**

```json
{
  "info": {
  "merchant_id": 12,
  "app_id":"xxxxxxxxxxxxx",
  "brand_name": "aaaaaa",
  "logo_url": "http://mmbiz.xxxx",
  "protocol": "media_id",
  "agreement_media_id":"xxxxxxxxxx",
  "operator_media_id":"xxxxxxxx",
  "end_time": 1438990559,
  "primary_category_id": 1,
  "secondary_category_id": 101
 }
}
```

| 参数名                | 必填 | 类型         | 示例              | 说明                                                                                     |
| --------------------- | ---- | ------------ | ----------------- | ---------------------------------------------------------------------------------------- |
| info                  | 是   | json结构     |                   |                                                                                          |
| merchant_id           | 是   | int          | 12                | 子商户id，一个母商户服务号下唯一。                                                       |
| app_id                | 否   | String(36)   | wxxxxxxxxxxx      | 子商户的服务号app_id，配置后子商户卡券券面上的app_id为该app_id。注意：该app_id须经过认证 |
| brand_name            | 是   | String(36)   | 兰州拉面          | 子商户名称（12个汉字内），该名称将在制券时填入并显示在卡券页面上                         |
| logo_url              | 是   | string(128)  | http://mmbiz.xxxx | 子商户logo，可通过 上传logo接口 获取。该logo将在制券时填入并显示在卡券页面上             |
| protocol              | 是   | String(36)   | mdasdfkl          | 授权函ID ，即通过 上传临时素材接口 上传授权函后获得的media_id                            |
| end_time              | 是   | unsigned int | 15300000          | 授权函有效期截止时间（东八区时间，单位为秒），需要与提交的扫描件一致                     |
| agreement_media_id    | 否   | string(36)   | dhskdjklfjk       | 营业执照或个体工商户营业执照彩照或扫描件                                                 |
| operator_media_id     | 否   | string(36)   | dhskdjklfjk       | 营业执照内登记的经营者身份证彩照或扫描件                                                 |
| primary_category_id   | 是   | int          | 2                 | 一级类目id,可以通过本文档中接口查询                                                      |
| secondary_category_id | 是   | int          | 2                 | 二级类目id，可以通过本文档中接口查询                                                     |

**返回数据**

```json
{
"info": {
 "merchant_id": 12,
 "create_time": 1438790559,
 "update_time": 1438790559,
 "brand_name": "aaaaaa",
 "logo_url": "http://mmbiz.xxxx",
 "status": "CHECKING",
 "begin_time": 1438790559,
 "end_time": 1438990559,
 "primary_category_id": 1,
 "secondary_category_id": 101
 }
}
```

| 参数名                | 描述                                                                                                                                                 |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| merchant_id           | 子商户id，对于一个母商户服务号下唯一。创建卡券时需填入该id号，字段结构如下： base_info：｛sub_merchant_info:｛merchant_id：｝｝，详情见 创建卡券接口 |
| create_time           | 子商户信息创建时间                                                                                                                                   |
| update_time           | 子商户信息更新时间                                                                                                                                   |
| brand_name            | 子商户名称（12个汉字内），该名称将在制券时填入并显示在卡券页面上。                                                                                   |
| logo_url              | 子商户logo，可通过上传logo接口获取。该logo将在制券时填入并显示在卡券页面上                                                                           |
| status                | 子商户状态，"CHECKING" 审核中, "APPROVED" , 已通过；"REJECTED"被驳回, "EXPIRED"协议已过期                                                            |
| bengin_time           | 创建时间（非协议开始时间）                                                                                                                           |
| end_time              | 授权函有效期截止时间（东八区时间，单位为秒）                                                                                                         |
| primary_category_id   | 子商户一级类目                                                                                                                                       |
| secondary_category_id | 子商户二级类目                                                                                                                                       |

特别注意：

若子商户资料通过微信公众平台提交，可在微信公众平台卡券功能-子商户管理-子商户详情里查看子商户ID，或通过子商户创建接口返回子商户ID，或通过子商户信息拉取接口获取子商户ID。

## **1.5 拉取单个子商户信息接口**

**接口说明**

通过指定的子商户appid，拉取该子商户的基础信息。 注意，用母商户去调用接口，但接口内传入的是子商户的appid。

**接口详情**

**接口调用请求说明**

> HTTP请求方式: POST URL:https://api.weixin.qq.com/card/submerchant/get?access_token=TOKEN

**参数说明**

| 参数         | 是否必须 | 说明         |
| ------------ | -------- | ------------ |
| access_token | 是       | 调用接口凭证 |
| POST数据     | 是       | Json数据     |

**POST数据示例**

```json
{  "merchant_id": 12 }
```

**返回数据**

```json
{
 "info": {
 "merchant_id": 12,
 "create_time": 1438790559,
 "update_time": 1438790559,
 "brand_name": "aaaaaa",
 "logo_url": "http://mmbiz.xxxx",
 "status": "CHECKING",
 "begin_time": 1438790559,
 "end_time": 1438990559,
 "primary_category_id": 1,
 "secondary_category_id": 101
 }
}
```

**查询失败返回示例（errcode不为0，errmsg为相应错误信息）：**

```json
{  "errcode":xxxx,  "errmsg":"xxxx" }
```

| 参数名                | 描述                                                                          |
| --------------------- | ----------------------------------------------------------------------------- |
| merchant_id           | 子商户id，一个母商户服务号下唯一。                                            |
| create_time           | 子商户信息创建时间                                                            |
| update_time           | 子商户信息更新时间                                                            |
| app_id                | 子商户的服务号app_id                                                          |
| brand_name            | 子商户名称（12个汉字内），该名称将在制券时填入并显示在卡券页面上              |
| logo_url              | 子商户logo，可通过上传logo接口获取。该logo将在制券时填入并显示在卡券页面上    |
| status                | "CHECKING" 审核中, "APPROVED" , 已通过；"REJECTED"被驳回, "EXPIRED"协议已过期 |
| begin_time            | 创建时间（非协议开始时间），和create_time 重复，待后续去掉该字段              |
| end_time              | 协议截止时间                                                                  |
| primary_category_id   | 子商户一级类目                                                                |
| secondary_category_id | 子商户二级类目                                                                |

## **1.6 批量拉取子商户信息接口**

**接口说明**

母商户可以通过该接口批量拉取子商户的相关信息，一次调用最多拉取100个子商户的信息，可以通过多次拉去满足不同的查询需求

**接口详情**

**接口调用请求说明**

> HTTP请求方式: POST URL:https://api.weixin.qq.com/card/submerchant/batchget?access_token=TOKEN

**参数说明**

| 参数         | 是否必须 | 说明         |
| ------------ | -------- | ------------ |
| access_token | 是       | 调用接口凭证 |
| POST数据     | 是       | Json数据     |

**POST数据示例**

```json
{
  "begin_id": 0,
  "limit": 50,
  "status": "CHECKING"
}
```

**字段说明**

| 参数名   | 描述                                             |
| -------- | ------------------------------------------------ |
| begin_id | 起始的子商户id，一个母商户服务号下唯一           |
| limit    | 拉取的子商户的个数，最大值为100                  |
| status   | 子商户审核状态，填入后，只会拉出当前状态的子商户 |

**返回数据**

```json
{ "info_list": [ {
  "merchant_id": 12,
  "create_time": 1438790559,
  "update_time": 1438790559,
  "brand_name": "aaaaaa",
  "logo_url": "http://mmbiz.xxxx",
  "status": "CHECKING",
  "begin_time": 1438790559,
  "end_time": 1438990559,
  "primary_category_id": 1,
  "secondary_category_id": 101 }, {
  "merchant_id": 13,
  "create_time": 1438790559,
  "update_time": 1438790559,
  "brand_name": "bbbbbb",
  "logo_url": "http://mmbiz.xxxx",
  "status": "APPROVED",
  "begin_time": 1438790559,
  "end_time": 1438990559,
  "primary_category_id": 1,
  "secondary_category_id": 101 } ] "next_begin_id": 13
}

```

| 参数名                | 描述                                                                          |
| --------------------- | ----------------------------------------------------------------------------- |
| merchant_id           | 子商户id，一个母商户服务号下唯一。                                            |
| create_time           | 子商户信息创建时间                                                            |
| update_time           | 子商户信息更新时间                                                            |
| brand_name            | 子商户名称（12个汉字内），该名称将在制券时填入并显示在卡券页面上              |
| logo_url              | 子商户logo，可通过上传logo接口获取。该logo将在制券时填入并显示在卡券页面上    |
| status                | "CHECKING" 审核中, "APPROVED" , 已通过；"REJECTED"被驳回, "EXPIRED"协议已过期 |
| begin_time            | 创建时间（非协议开始时间），和create_time 重复，待后续去掉该字段              |
| end_time              | 协议截止时间                                                                  |
| primary_category_id   | 子商户一级类目                                                                |
| secondary_category_id | 子商户二级类目                                                                |
| next_begin_id         | 拉渠道列表中最后一个子商户的id                                                |

**_开发者注意：_**

_当母商户的子商户数量超过100时，可通过填写begin_id的值，从而多次拉取列表的的方式来满足查询需求。具体的方式是，将上一次调用得到的返回中的next_begin_id的值作为下一次调用中的begin_id的值。_

## **1.7 创建子商户卡券接口**

若母商户需创建自己的卡券，参考原有卡券创建接口

**接口调用请求说明**

> HTTP请求方式: POST URL:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN

**参数说明**

| 参数         | 是否必须 | 说明         |
| ------------ | -------- | ------------ |
| access_token | 是       | 调用接口凭证 |
| POST数据     | 是       | Json数据     |

**POST数据示例**

```json
{
    "card": {
        "card_type": "GROUPON",
        "groupon": {
            "base_info": {
                "sub_merchant_info": {
                    "merchant_id": 123456
                },
                "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0",
                "brand_name": "海底捞",
                "code_type": "CODE_TYPE_TEXT",
                "title": "132元双人火锅套餐",
                "sub_title": "周末狂欢必备",
                "color": "Color010",
                "notice": "使用时向服务员出示此券",
                "service_phone": "020-88888888",
                "description": "不可与其他优惠同享\n如需团购券发票，请在消费时向商户提出\n店内均可使用，仅限堂食",
                "date_info": {
                    "type": "DATE_TYPE_FIX_TIME_RANGE",
                    "begin_timestamp": 1397577600,
                    "end_timestamp": 1422724261
                },
                "sku": {
                    "quantity": 500000
                },
                "get_limit": 3,
                "use_custom_code": false,
                "bind_openid": false,
                "can_share": true,
                "can_give_friend": true,
                "location_id_list": [
                    123,
                    12321,
                    345345
                ],
                "custom_url_name": "立即使用",
                "custom_url": "http://www.qq.com",
                "custom_url_sub_title": "6个汉字tips",
                "promotion_url_name": "更多优惠",
                "promotion_url": "http://www.qq.com",
                "source": "大众点评"
            },
            "deal_detail": "以下锅底2选1（有菌王锅、麻辣锅、大骨锅、番茄锅、清补凉锅、酸菜鱼锅可选）：\n大锅1份 12元\n小锅2份 16元 "
        }
    }

 }
```

优惠券字段详情详见[创建卡券](Create_a_Coupon_Voucher_or_Card)

会员卡字段详情见[创建会员卡](Membership_Cards/Create_a_membership_card)

## **1.8 错误码说明**

| 错误码 | 描述                                                                   |
| ------ | ---------------------------------------------------------------------- |
| －1    | 系统错误。                                                             |
| 40070  | 基本信息base info中填写的库存信息SKU不合法，参考CreateCard创建卡券接口 |
| 40104  | 创建子商户时填的类目id不对                                             |
| 40140  | 子商户状态不对，创建卡券时要求已审核，更新子商户信息时要求已驳回       |
| 40139  | 子商户id不正确                                                         |
| 40079  | 时间填写得不对                                                         |
| 45021  | 参数超长                                                               |
| 43014  | 未经过平台授权，不能创建子商户。。                                     |

## **1.9 联系我们**

第三方代制模式的开发问题，可通过邮箱weixin_card@foxmail.com联系我们。
