第三方微信开发者模式
第三方开发者模式
更新通知
版本号 | 更新内容 | 更新时间 |
---|---|---|
V1.0 | 第三方代制模式,支持第三方为子商户代创建会员卡 | 2016-3-20 |
V1.1 | 第三方代制模式,支持开发者创建有app_id的子商户,创建有app_id的子商户卡券时,领卡页面及卡券详情页支持关联配置子商户公众号,但卡券数据仍归属第三方账号 | 2016-4-28 |
V1.2 | 第三方开发者代制(有公众号模式)名称逐步规范为“第三方强授权模式”; 第三方开发者代制(无公众号模式)名称逐步规范为“第三方代制模式”; 第三方普通授权模式、强授权模式、代制模式,统称第三方开发者模式。 | 2016-5-17 |
第三方开发者模式
1、具备认证公众号的商家,可用商家自己公众号申请卡券功能后,通过微信开放平台“公众号登陆授权”授权给开发者,代为开发和应用卡券功能,卡券数据及会员归属在商家自己公众号下。该模式简称为“普通授权”,无额外开发接口,参考卡券整套基础接口即可。
2、针对没有公众号或未认证的公众号,或者有认证公众号但不想自己运营公众号的商家,为了降低商户接入成本,可由第三方背书接入。子商户将卡券制作权限授权给开发者所在企业,由开发者所在企业为子商户作为信用背书,并可以帮助 没有能力制作卡券的商户制作卡券。
目前,这种降低商户门槛,由第三方背书接入的开发者模式分为:第三方代制模式(查看介绍及指引文档)和第三方强授权模式(查看介绍及指引文档)。这两种模式需额外接口。参考如下接口文档。
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接口获取。该logo将在制券时填入并显示在卡券页面上 |
protocol | 是 | String(36) | mdasdfkl : | 授权函ID,即通过上传临时素材接口上传授权函后获得的meida_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 | 营业执照内登记的经营者身份证彩照或扫描件 |
备注:授权函请在《第三方代制模式指引文档》内下载,手填并加盖鲜章后,上传彩色扫描件或彩照。
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,对于一个母商户公众号下唯一 |
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 ,即通过上传临时素材接口上传授权函后获得的meida_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":xxx
},
"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联系我们。
2 第三方强授权模式
模式概述
“第三方强授权模式”是腾讯为降低卡券接入门槛,商户可快速接入,由具备开发能力的开发者代商户制卡券的功能。为商户提供开发能力的开发者简称“母商户”,商户简称“子商户”。
该模式下,子商户公众号无需微信认证,子商户也不需单独申请卡券功能,只需将资料提供给母商户代为提交。 该模式下,卡券的商户名和logo均为子商户的商户名和logo,且卡券创建、投放、核销等流程均只能由母商户通过调用API接口完成,子商户本身不具备直接调用卡券接口或在卡券商户后台手工操作的能力。
“第三方强授权”功能,面向微信开放平台所有已全网发布的第三方平台开放,第三方平台需达到一定注册资本金额,提供相关资质,经审核通过后才可获得协助制券能力。 “子商户”面向未认证的微信公众号开放,可选择已开放的卡券类目接入,子商户资质需由母商户代为提交,审核通过后可由母商户协助使用卡券功能。
母商户每月可为每个子商户代制券10个cardid,且每个cardid累计sku不超过5万。具体的数量限制会随运营规则调整。
开通步骤
第一步:开发者所在企业申请第三方开发者代制能力,提交资料并审核;
第二步:母商户为子商户提交资质认证资料审核;
第三步:子商户发起授权,母商户确认授权;
第四步:母商户代子商户调用卡券接口,进行卡券制作、投放、核销等动作;
第五步:母商户可以调用数据接口代子商户获取数据;
2.1 母商户资质申请接口
接口说明
母商户资质申请接口是第三方平台用以申请第三方强授权能力,并提交自身资质资料的上传接口,只有上传相关资质,并审核通过后才可代名下子商户提交资质。
母商户提交资质包括:注册资本、营业执照(扫描件)、税务登记证(扫描件)、上季度缴税清单(扫描件);
母商户必须先上传相应扫描件获取media_id后,传入media_id。详见上传图片media接口
同一个appid的申请,仅当驳回时可以再次提交,审核中和审核通过时不可重复提交
接口详情
接口调用请求说明
http请求方式: POST http:// api.weixin.qq.com /cgi-bin/component/upload_card_agent_qualification?access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{
"register_capital": 100000,
"business_license_media_id": "Y0vGhBIycyhEFTyq6km0pGpCPzdqoxMnr1wjs574LqeWzsPtido2VM5grKk5gzn3",
"tax_registration_certificate_media_id": "Y0vGhBIycyhEFTyq6km0pGpCPzdqoxMnr1wjs574LqeWzsPtido2VM5grKk5gzn3",
"last_quarter_tax_listing_media_id": "Y0vGhBIycyhEFTyq6km0pGpCPzdqoxMnr1wjs574LqeWzsPtido2VM5grKk5gzn3"
}
字段说明
参数名 | 必填 | 说明 |
---|---|---|
register_capital | 是 | 注册资本,数字,单位:分 |
business_license_media_id | 是 | 营业执照扫描件的media_id |
tax_registration_certificate_media_id | 是 | 税务登记证扫描件的media_id |
last_quarter_tax_listing_media_id | 是 | 上个季度纳税清单扫描件media_id |
返回数据
上传成功示例:
{ "errcode":0, "errmsg":"ok" }
上传失败示例(errcode不为0,errmsg为相应错误信息):
{ "errcode":61011, "errmsg":"invalid component" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
2.2 母商户资质审核查询接口
接口说明
该接口用于查询母商户资质审核的结果,审核通过后才能用接口继续提交子商户资质。
接口详情
接口调用请求说明
http请求方式: GET http:// api.weixin.qq.com / cgi-bin/component/check_card_agent_qualification?access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
GET数据 | 是 | Json数据 |
返回数据’’’
查询成功返回示例:
{
"result":"RESULT_PASS",
}
{
"result":" RESULT_NOT_PASS ",
}
{
"result":"RESULT_CHECKING",
}
{
"result":"RESULT_NOTHING_TO_CHECK",
}
查询失败返回示例:(errcode不为0,errmsg为相应错误信息):
{ "errcode":xxxx, "errmsg":"xxxx" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
result | 查询结果 1.RESULT_PASS:审核通过 2.RESULT_NOT_PASS:审核驳回 3.RESULT_CHECKING:待审核 4.RESULT_NOTHING_TO_CHECK:无提审记录 |
2.3 子商户资质申请接口
接口说明
母商户(第三方平台)申请获得第三方强授权能力后,才可提交名下子商户的资质。
子商户资质审核通过后,才可进行后续的授权流程。
子商户的资质包括:商户名称、商户logo(图片)、卡券类目、AppID、营业执照或个体户经营执照(扫描件)、授权协议(扫描件)。
注意: 1、请用母商户(第三方平台)的账号提交子商户资料。
2、母商户必须先上传子商户的相应扫描件获取media_id后,传入media_id。
3、母商户必须先通过卡券类目查询接口获取卡券实时对外开放的一级、二级类目ID,传入类目ID。
4、商户名称在12个汉字长度内。
5、同一个appid的申请,仅当驳回时可再次提交,审核中和审核通过时不可重复提交。
接口详情
接口调用请求说明
http请求方式: POST http:// api.weixin.qq.com /cgi-bin/component/upload_card_merchant_qualification?access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{
"appid": "wxf8b4f85e442a4e77",
"name": "灰太狼烧烤店",
"logo_media_id": "Y0vGhBIycyhEFTyq6km0pGpCPzdqoxMnr1wjs574LqeWzsPtido2VM5grKk5gzn3",
"business_license_media_id": "Y0vGhBIycyhEFTyq6km0pGpCPzdqoxMnr1wjs574LqeWzsPtido2VM5grKk5gzn3",
"operator_id_card_media_id":"xxxxxxxxx"
"agreement_file_media_id": "Y0vGhBIycyhEFTyq6km0pGpCPzdqoxMnr1wjs574LqeWzsPtido2VM5grKk5gzn3",
"primary_category_id": "1",
"secondary_category_id": "101"
}
字段说明
参数名 | 必填 | 说明 |
---|---|---|
appid | 是 | 子商户公众号的appid |
name | 是 | 子商户商户名,用于显示在卡券券面 |
logo_meida_id | 是 | 子商户logo,用于显示在子商户卡券的券面 |
business_license_media_id | 是 | 营业执照或个体工商户执照扫描件的media_id |
operator_id_card_media_id | 否 | 当子商户为个体工商户且无公章时,授权函须签名,并额外提交该个体工商户经营者身份证扫描件的media_id |
agreement_file_media_id | 是 | 子商户与第三方签署的代理授权函的media_id |
primary_category_id | 是 | 一级类目id |
secondary_category_id | 是 | 二级类目id |
返回数据
上传成功示例:
{ "errcode":0, "errmsg":"ok" }
上传失败示例(errcode不为0,errmsg为相应错误信息):
{ "errcode":40013, "errmsg":"invalid appid" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
2.4 授权子商户审核事件推送
当子商户资质审核通过时,开发者将收到微信服务器推送的事件。
<xml>
<AppId><![CDATA[AppId]]></AppId>
<CreateTime>1449471727</CreateTime>
<InfoType><![CDATA[card_merchant_auth_check_result]]></InfoType>
<SubMerchantAppId><![CDATA[AppId]]></SubMerchantAppId>
<IsPass>0</IsPass>
<Reason><![CDATA[Reason]]></Reason>
</xml>
字段说明
参数 | 说明 |
---|---|
AppId | “公众号第三方平台”账号(即母商户)的AppID。 |
CreateTime | 消息创建时间 (整型)。 |
InfoType | 消息类型,card_merchant_auth_check_result(第三方开发者代制有公众号模式,子商户资料审核事件) |
SubMerchantAppId | 子商户账号的AppID。 |
IsPass | 是否通过,为1时审核通过,为0时审核驳回。 |
Reason | 驳回的原因 |
IsPass | 是否通过,为1时审核通过。 |
2.5 子商户资质审核查询接口
接口说明
该接口用于查询子商户资质审核的结果,审核通过后才能进行后续授权流程。 注意,用母商户去调用接口,但接口内传入的是子商户的appid。
接口详情
接口调用请求说明
http请求方式: POST http:// api.weixin.qq.com / cgi-bin/component/check_card_merchant_qualification?access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{ “appid”:”wx********” }
返回数据’’’
查询成功返回示例:
{
"result":"RESULT_PASS",
}
{
"result":" RESULT_NOT_PASS ",
}
{
"result":"RESULT_CHECKING",
}
{
"result":"RESULT_NOTHING_TO_CHECK",
}
查询失败返回示例:(errcode不为0,errmsg为相应错误信息):
{ "errcode":xxxx, "errmsg":"xxxx" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
result | 查询结果 1.RESULT_PASS:审核通过 2.RESULT_NOT_PASS:审核驳回 3.RESULT_CHECKING:待审核 4.RESULT_NOTHING_TO_CHECK:无提审记录 |
2.6 图片上传media接口
开发者经常需要用到一些临时性的多媒体素材的场景,例如在使用接口(特别是发送消息时),对多媒体文件、多媒体消息的获取和调用等操作,都需通过media_id来进行。
为了卡券第三方代理模式相关接口调用顺畅,现已为所有对外的第三方平台账号配置“图片上传media接口”的权限。
注意:
1.对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地),以节省服务器资源。
2.media_id是可复用的。
3.素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式
4.需使用https调用本接口。
5.请使用第三方平台账号的ACCESS_TOKEN调用(已开权限)
接口详情
接口调用请求说明
https请求方式: POST https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
type | 是 | 媒体文件类型,此处为图片类型(image) |
POST数据 | 是 | 用FORM表单方式上传一个多媒体文件,form-data中媒体文件标识,有filename、filelength、content-type等信息 |
调用示例
curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"
返回数据
上传成功示例:
{ "type":"TYPE", "media_id":"MEDIA_ID", "created_at":123456789 }
上传失败示例(errcode不为0,errmsg为相应错误信息):
{ "errcode":40004, "errmsg":"invalid media type" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
2.7 卡券开放类目查询接口
接口说明
通过调用该接口查询卡券开放的类目ID,类目会随业务发展变更,请每次用接口去查询获取实时卡券类目。
注意:
1.本接口查询的返回值还有卡券资质ID,此处的卡券资质为:已微信认证的公众号通过微信公众平台申请卡券功能时,所需的资质。
2.对于第三方强授权模式,子商户无论选择什么类目,均提交营业执照即可,所以不用考虑此处返回的资质字段,返回值仅参考类目ID即可。
接口详情
接口调用请求说明
https请求方式: GET 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 |
2.8 拉取单个子商户信息接口
接口说明
通过指定的子商户appid,拉取该子商户的基础信息。 注意,用母商户去调用接口,但接口内传入的是子商户的appid。
接口详情
接口调用请求说明
http请求方式: POST http:// api.weixin.qq.com / cgi-bin/component/get_card_merchant?access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{ “appid”:”wx********” }
返回数据
{
"appid":"wxd395ea50d8b6867a",
"name":"灰太狼烧烤店",
"primary_category_id":1,
"secondary_category_id":101,
"submit_time":1440580664,
"result":"RESULT_PASS"
}
查询失败返回示例(errcode不为0,errmsg为相应错误信息):
{ "errcode":xxxx, "errmsg":"xxxx" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
2.9 拉取子商户列表接口
接口说明
通过指定的子商户appid,拉取该子商户的基础信息。 注意,用母商户去调用接口,但接口内传入的是子商户的appid。
接口详情
接口调用请求说明
http请求方式: POST http:// api.weixin.qq.com / cgi-bin/component/batchget_card_merchant?access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{ "next_get": "" }
字段说明
参数名 | 描述 |
---|---|
next_get | 获取子商户列表,注意最开始时为空。每次拉取20个子商户,下次拉取时填入返回数据中该字段的值,该值无实际意义。 |
返回数据
查询成功返回示例:
{
"list":[
{
"appid":"wxd395ea50d8b6867a",
"name":"灰太狼烧烤店",
"primary_category_id":1,
"secondary_category_id":101,
"submit_time":1440580664,
"result":"RESULT_PASS"
},
{"appid":"wx6384a98262a87262",
"name":"灰太狼烧烤店",
"primary_category_id":1,
"secondary_category_id":101,
"submit_time":1440580515,
"result":"RESULT_PASS"
},
{"appid":"wx42cf28f28b77d653",
"name":"灰太狼烧烤店",
"primary_category_id":1,
"secondary_category_id":101,
"submit_time":1440386151,
"result":"RESULT_CHECKING"
},
{"appid":"wx5aecba35a7d70c14",
"name":"灰太狼烧烤店",
"primary_category_id":1,
"secondary_category_id":101,
"submit_time":1440385851,
"result":"RESULT_PASS"
}
],
"next_get":"13"
}
查询失败返回示例(errcode不为0,errmsg为相应错误信息):
{ "errcode":xxxx, "errmsg":"xxxx" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
开发者注意:
当母商户的子商户数量超过20时,可通过填写next_get的值,从而多次拉取列表的的方式来满足查询需求。具体的方式是,将上一次调用得到的返回中的next_get的值作为下一次调用中的next_get的值。
2.10 第三方强授权相关接口
接口说明
1.普通授权,即公众号本身已有某接口或业务的权限,通过第三方授权,第三方代公众号代公众号调用该接口或实现该业务。
2.普通授权的相关接口请参考微信开放平台相关文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318587&lang=zh_CN
3.强授权,即公众号本身无某接口或业务的权限,但第三方获取了该接口或业务的权限后,通过强授权过程,公众号也额外获得该权限。
4.强授权过程变更2个API,并增加了1个第三方平台确认授权的API。api_query_auth, 增加返回字段:need_confirm, already_confirm, 分别表示是否需要确认,是否已经确认。api_getauthorizer_info,增加返回字段:need_confirm, already_confirm, 分别表示是否需要确认,是否已经确认。api_confirm_authorization, 第三方平台确认授权API。
注意: 若子商户公众号本身有卡券功能,不用调用强授权确认接口,直接可调用卡券接口。 建议在进行强授权接口确认前,通过普通授权接口内的“5、获取授权方的账户信息“接口查询该公众号是否具备“卡券功能”。
【强授权权限集,必须调接口进行授权确认,才能真正获得强授权特性】
2.10.1 使用授权码换取公众号的授权信息
接口说明
该API用于使用授权码换取授权公众号的授权信息,并换取authorizer_access_token和authorizer_refresh_token。 授权码的获取,需要在用户在第三方平台授权页中完成授权流程后,在回调URI中通过URL参数提供给第三方平台方。
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{ "component_appid":"appid_value", "authorization_code": "auth_code_value" }
字段说明
参数名 | 描述 |
---|---|
component_appid | 第三方平台appid |
authorization_code | 授权code,会在授权成功时返回给第三方平台,详见第三方平台授权流程说明。 |
返回数据
返回结果示例
{
"authorization_info": {
"authorizer_appid": "wxf8b4f85f3a794e77",
"authorizer_access_token": "QXjUqNqfYVH0yBE1iI_7vuN_9gQbpjfK7hYwJ3P7xOa88a89- Aga5x1NMYJyB8G2yKt1KCl0nPC3W9GJzw0Zzq_dBxc8pxIGUNi_bFes0qM",
"expires_in": 7200,
"authorizer_refresh_token": "dTo-YCXPL4llX-u1W1pPpnp8Hgm4wpJtlR6iV0doKdY",
"func_info": [
{"funcscope_category": {"id": 1},confirm_info”:{"need_confirm": 1,"already_confirm":0}},
{"funcscope_category": {"id": 2},confirm_info”:{"need_confirm": 1,"already_confirm":0}},
{"funcscope_category": {"id": 50},confirm_info”:{"need_confirm": 1,"already_confirm":1}}
]
}
参数名 | 描述 |
---|---|
authorization_info | 授权信息 |
authorization_appid | 授权方appid |
authorizer_access_token | 授权方令牌(在授权的公众号具备API权限时,才有此返回值)。 |
expires_in | 有效期(在授权的公众号具备API权限时,才有此返回值) |
authorizer_refresh_token | 刷新令牌(在授权的公众号具备API权限时,才有此返回值),刷新令牌主要用于公众号第三方平台获取和刷新已授权用户的access_token,只会在授权时刻提供,请妥善保存。 一旦丢失,只能让用户重新授权,才能再次拿到新的刷新令牌 |
func_info | 公众号授权给开发者的权限集列表(请注意,当出现用户已经将消息与菜单权限集授权给了某个第三方,再授权给另一个第三方时,由于该权限集是互斥的,后一个第三方的授权将去除此权限集,开发者可以在返回的func_info信息中验证这一点,避免信息遗漏), id位对应的权限集编号。 confirm_info是强授权相关字段。 其中need_confirm:是否需要第三方平台确认(0,不需确认,1,需要认), already_confirm:是否已经确认。(0,未确认,1,已经确认)。 |
funcscope_category_id | 权限集说明 |
---|---|
1 | 消息与菜单权限集 |
2 | 用户管理权限集 |
3 | 账号管理权限集 |
4 | 网页授权权限集 |
5 | 微信小店权限集 |
6 | 多客服权限集 |
7 | 业务通知权限集 |
8 | 微信卡券权限集 |
9 | 扫一扫权限集 |
10 | Wi-Fi权限集 |
11 | 素材管理权限集 |
12 | 摇周边权限集 |
13 | 离线数据权限集 |
2.10.2 确认授权
接口说明
该API用于使用授权码换取授权公众号的授权信息,并换取authorizer_access_token和authorizer_refresh_token。 授权码的获取,需要在用户在第三方平台授权页中完成授权流程后,在回调URI中通过URL参数提供给第三方平台方。
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/ cgi-bin/component/api_confirm_authorization?component_access_token =TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{ "component_appid":"appid_value", "authorizer_appid": "authorizer_appid_value", "funcscope_category_id":8, "confirm_value": 1 }
字段说明
参数名 | 描述 | 必填 |
---|---|---|
component_appid | 第三方平台appid | 是 |
authorizer_appid | 授权方appid | 是 |
funscope_category_id | 授权集id | 是 |
confirm_value | 是否确认,1为确认,2为取消 | 是 |
返回数据
{ "errcode":xxxx, "errmsg":"xxxx" }
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
2.10.3 获取授权方的账户信息
接口说明
该API用于获取授权方的公众号基本信息,包括头像、昵称、帐号类型、认证类型、微信号、原始ID和二维码图片URL。 需要特别记录授权方的帐号类型,在消息及事件推送时,对于不具备客服接口的公众号,需要在5秒内立即响应;而若有客服接口,则可以选择暂时不响应,而选择后续通过客服接口来发送消息触达粉丝。
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/ cgi-bin/component/api_get_authorizer_info?component_access_token=TOKEN
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
POST数据 | 是 | Json数据 |
POST数据示例
{ ”component_appid":"appid_value" , "authorizer_appid": "auth_appid_value" }
字段说明
参数名 | 描述 | 必填 |
---|---|---|
component_appid | 第三方平台appid | 是 |
authorizer_appid | 授权方appid | 是 |
返回数据
返回结果示例
{
"authorizer_info": {
"nick_name": "微信SDK Demo Special",
"head_img": "http://wx.qlogo.cn/mmopen/GPyw0pGicibl5Eda4GmSSbTguhjg9LZjumHmVjybjiaQXnE9XrXEts6ny9Uv4Fk6hOScWRDibq1fI0WOkSaAjaecNTict3n6EjJaC/0",
"service_type_info": { "id": 2 },
"verify_type_info": { "id": 0 },
"user_name":"gh_eb5e3a772040",
"alias":"paytest01"
},
"qrcode_url":"URL",
"authorization_info": {
"appid": "wxf8b4f85f3a794e77",
"func_info": [
{"funcscope_category": {"id": 1},confirm_info”:{"need_confirm": 1,"already_confirm":0}},
{"funcscope_category": {"id": 2},confirm_info”:{"need_confirm": 1,"already_confirm":0}},
{"funcscope_category": {"id":,8},confirm_info”:{"need_confirm": 1,"already_confirm":1}}
]
}
}
参数名 | 描述 |
---|---|
errcode | 错误码,0为正常。 |
errmsg | 错误信息。 |
authorizer_info | 授权方昵称。 |
head_img | 授权方头像 |
service_type_info | 授权方公众号类型,0代表订阅号,1代表由历史老帐号升级后的订阅号,2代表服务号 |
verify_type_info | 授权方认证类型,-1代表未认证,0代表微信认证,1代表新浪微博认证,2代表腾讯微博认证,3代表已资质认证通过但还未通过名称认证,4代表已资质认证通过、还未通过名称认证,但通过了新浪微博认证,5代表已资质认证通过、还未通过名称认证,但通过了腾讯微博认证 |
user_name | 授权方公众号原始id |
alias | 授权方公众号设置的微信号,可能为空。 |
qrcode_url | 二维码图片链接,开发者最好保存 |
authorization_info | 授权信息 |
appid | 授权方appid |
func_info | 参见api_query_auth的返回结果func_info说明 |
2.11 错误码说明
错误码 | 描述 |
---|---|
-1 | 系统错误。 |
-1000 | 系统错误 |
61017 | 子商户未发起授权,不能进行授权确认 |
61020 | 提交的参数错误,即不包含在接口字段范围内 |
61022 | 审核中和审核通过的商户资料均不能重提。仅审核驳回可重提 |
43014 | 母商户资料未提交、未审核或审核未通过(母商户资料提交并审核通过后,才能提交子商户资料) |
41004 | appid为空 |
40013 | 无效的appid,请检查提交的子商户账号是否正确。 |
40007 | 无效的media_id |
61019 | 非强授权,不能用confirm确认 |
61018 | 已经confirm确认,无需重复确认 |
61021 | 尚未进行资料提交,不可confirm |
43016 | 第三方平台账号需要完成认证 |
40035 | 不符合的图片大小 |