第三方开发者模式

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

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数据示例

{
 "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)该卡券详情页关联的公众号为子商户配置这个公众号。

返回数据

{
"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> 
  <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数据

返回数据

{
   "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数据示例

{
  "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,可以通过本文档中接口查询

返回数据

{
"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数据示例

{  "merchant_id": 12 }

返回数据

{
 "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为相应错误信息):

{  "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数据示例

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

字段说明

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

返回数据

{ "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数据示例

{
    "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元 "
        }
    }

 }

优惠券字段详情详见创建卡券

会员卡字段详情见创建会员卡

# 1.8 错误码说明

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

# 1.9 联系我们

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