第三方开发者模式
1、具备认证公众号的商家,可用商家自己公众号申请卡券功能后,通过微信开放平台“公众号登录授权”授权给开发者,代为开发和应用卡券功能,卡券数据及会员归属在商家自己公众号下。该模式简称为“普通授权”,无额外开发接口,参考卡券整套基础接口即可。
2、针对没有公众号的商家,为了降低商户接入成本,可由第三方背书接入。由开发者所在企业为子商户作为信用背书,并可以帮助 没有能力制作卡券的商户制作卡券。这种降低商户门槛,由第三方背书接入的开发者模式为:第三方代制模式(查看介绍及指引文档)。这模式需额外接口。参考如下接口文档。
目录 1 第三方代制模式
# 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联系我们。