# 目录

# 1. 业务流程

# 1.1 申请及获取二维码

# 1.2 用户扫描二维码

# 2. 接口

# 2.1 接口规则

# 2.2 申请二维码接口

# 2.3 查询二维码申请单接口

# 2.4 下载二维码包接口

# 2.5 激活二维码接口

# 2.6 查询二维码激活状态接口

# 2.7 CODE_TICKET换CODE接口

# 3.二维码包解密说明

# 3.1 解密说明

# 1. 业务流程

1.1申请及获取二维码

1.2用户扫描二维码

# 2. 接口

2.1接口规则

提交方式:采用POST方法提交。API调用凭证 accesstoken,参照说明:获取access_token

数据格式:提交和返回数据JSON格式,数据格式如:

{
"field1":"data1",
"field2":"data2",
"int_field":123
}

字符编码:统一采用UTF-8字符编码。

2.2申请二维码接口

API:https://api.weixin.qq.com/intp/marketcode/applycode?access_token=ACCESSTOKEN

ACCESSTOKEN参见接口规则说明。

请求参数:

字段名 中文解释 类型 是否必填 备注
code_count 申请码的数量 Uint64 Y ≥10000,≤20000000,10000的整数倍
isv_application_id 外部单号 String128 Y 相同isv_application_id视为同一申请单

返回参数:

字段名 中文解释 类型 是否必填 备注
errcode 返回状态码 Int32 Y 0
errmsg 错误提示 String128 N 返回信息,如errcode不为0,则errmsg为错误信息
application_id 申请单号 Uint64 Y

入参示例:

{
"code_count":100000,
"isv_application_id":"testid124"
}

返回示例:

{
"errcode":0,
"errmsg":"ok",
"application_id":581865877
}

2.3 查询二维码申请单接口

API:https://api.weixin.qq.com/intp/marketcode/applycodequery?access_token=ACCESSTOKEN ACCESSTOKEN参见接口规则说明。

请求参数:

字段名 中文解释 类型 是否必填 备注
application_id 申请单号 Uint64 Y
isv_application_id 外部单号 String128 Y 相同isv_application_id视为同一申请单

返回参数:

字段名 中文解释 类型 是否必填 备注
errcode 返回状态码 Int32 Y 0
errmsg 错误提示 String128 N 返回信息,如errcode不为0,则errmsg为错误信息
status 申请单状态 String128 Y INIT PROCESSING FINISH为可下载
isv_application_id 外部单号 String128 Y
application_id 申请单号 Uint64 Y
create_time 创建时间 Uint32 Y
update_time 更新时间 Uint32 Y
code_start 开始位置 Uint64 Y 包含,如0
code_end 结束位置 Uint64 Y 包含,如49999,上述0-49999为一个号码段

入参示例:

{
"application_id":"581865877"
}

返回示例:

{
"errcode": 0,
"errmsg": "ok",
"status": "FINISH",
"code_generate_list": [{
   "code_start": 0,
   "code_end": 49999
  },{
   "code_start": 50000,
   "code_end": 99999
   }]
}

2.4 下载二维码包接口

API:https://api.weixin.qq.com/intp/marketcode/applycodedownload?access_token=ACCESSTOKE ACCESSTOKEN参见接口规则说明。

请求参数:

字段名 中文解释 类型 是否必填 备注
application_id 申请单号 Uint64 Y
code_start 开始位置 Uint64 Y 来自查询二维码申请接口
code_end 结束位置 Uint64 Y 来自查询二维码申请接口

返回参数:

字段名 中文解释 类型 是否必填 备注
errcode 返回状态码 Int32 Y 0
errmsg 错误提示 String128 N 返回信息,如errcode不为0,则errmsg为错误信息
buffer 文件buffer String128 Y 需要先base64 decode,再做解密操作(解密参见3.1)

解密后的数据格式为:

a1 b1 c1 d1
a2 b2 c2 d2

即以 /n 换行,每行四个元素以 /t 分隔。

a为361字节的01点阵,用于支持生成19*19的微型码,0为白,1为黑,

b为原始码数据,最长9位,

c为该码在此次申请的索引位置,

d为28位字符,用于支持转为普通二维码。可生成码制2,纠错等级Q的二维码。

入参示例:

如下表示获取该申请单的0-49999这一段的码。

{
"application_id":581865877,
"code_start": 0,
"code_end": 49999
}

返回示例:

{
"errcode":0,
"errmsg":"ok",
"buffer": "ajfiwejfoiawjfijweofi"
}

2.5 激活二维码接口

API:https://api.weixin.qq.com/intp/marketcode/codeactive?access_token=ACCESSTOKEN

请求参数:

字段名 中文解释 类型 是否必填 备注
application_id 申请单号 Uint64 Y
activity_name 活动名称 String128 Y 数据分析活动区分依据,请规范命名
product_brand 商品品牌 String128 Y 数据分析品牌区分依据,请规范命名
product_title 商品标题 String128 Y 数据分析商品区分依据,请规范命名
product_code 商品条码 String128 Y EAN商品条码,请规范填写
wxa_appid 小程序的appid String128 Y 扫码跳转小程序的appid
wxa_path 小程序的path String128 Y 扫码跳转小程序的path
wxa_type 小程序版本 Int32 N 默认为0正式版,开发版为1,体验版为2
code_start 激活码段的起始位 Uint64 Y 如0(包含该值)
code_end 激活码段的结束位 Uint64 Y 如9999(包含该值)

返回参数:

字段名 中文解释 类型 是否必填 备注
errcode 返回状态码 Int32 Y 0
errmsg 错误提示 String128 N 返回信息,如errcode不为0,则errmsg为错误信息

入参示例:

{
"application_id":581865877,
"code_start":0,
"code_end":200,
"activity_name":"test_name",
"product_brand":"test_brand",
"product_title":"test_title",
"product_code":"test_code",
"wxa_appid":"wx3sxjifjwojfsffef",
"wxa_path":"pages/index/index"
}

返回示例:

{"errcode":0,"errmsg":"ok"}

2.6 查询二维码激活状态接口

API:https://api.weixin.qq.com/intp/marketcode/codeactivequery?access_token=ACCESSTOKEN 这里提供两种查询方式:1)传入application_id和code_index;2)传入九位原始码code或28位普通码字符code_url。 返回原始码信息和激活状态,可以在小程序内扫码等场景使用。

请求参数:

字段名 中文解释 类型 是否必填 备注
application_id 申请单号 Uint64 N
code_index 该码在批次中的偏移量 Uint64 N 传入application_id时必填
code_url 28位普通码字符 String128 N code与code_url二选一
code 九位的字符串原始码 String16 N code与code_url二选一

返回参数:

字段名 中文解释 类型 是否必填 备注
errcode 返回状态码 Int32 Y 0
errmsg 错误提示 String128 N 返回信息,如errcode不为0,则errmsg为错误信,,errcode为0时返回下列字段
code 原始码 String16 Y 返回原始码数据,并返回对应的激活信息
application_id 申请单号 Uint64 Y
isv_application_id 外部单号 String128 Y
activity_name 活动名称 String128 Y
product_brand 商品品牌 String128 Y
product_title 商品标题 String128 Y
wxa_appid 小程序的appid String128 Y
wxa_path 小程序的path String128 Y
wxa_type 小程序版本 Int32 Y
code_start 激活码段的起始位 Uint64 Y 如0(包含该值)
code_end 激活码段的结束位 Uint64 Y 如9999(包含该值)

入参示例:

{
"code_url":"P.URL.CN/0U.JYJXP3HJI2C98A9O"
}

返回示例:

{
"errcode": 0,
"errmsg": "ok",
"code": "8",
"code_start": 0,
"code_end": 200,
"activity_name": "test_name",
"product_brand": "test_brand",
"product_title": "test_title",
"product_code": "test_code",
"wxa_appid": "test_appid",
"wxa_path": "test_path"
"application_id":581865877,
"isv_application_id":"test_id"
}

2.7 code_ticket换code接口

API:https://api.weixin.qq.com/intp/marketcode/tickettocode?access_token=ACCESSTOKEN ACCESSTOKEN参见接口规则说明。

请求参数:

字段名 中文解释 类型 是否必填 备注
openid 用户的openid String Y
code_ticket 跳转时带上的code_ticket参数 String256 Y

返回参数:

字段名 中文解释 类型 是否必填 备注
errcode 返回状态码 Int32 Y 0
errmsg 错误提示 String128 N 返回信息,如errcode不为0,则errmsg为错误信息
code 原始码 String16 Y 返回原始码数据,并返回对应的激活信息
application_id 申请单号 Uint64 Y
isv_application_id 外部单号 String128 Y
activity_name 活动名称 String128 Y
product_brand 商品品牌 String128 Y
product_title 商品标题 String128 Y
wxa_appid 小程序的appid String128 Y
wxa_path 小程序的path String128 Y
code_start 激活码段的起始位 Uint64 Y 如0(包含该值)
code_end 激活码段的结束位 Uint64 Y 如9999(包含该值)

入参示例:

{
"code_ticket":"6cb4bc95e1f1abc97034cbe8fd484989",
"openid":"oiV2luCau8Cx0TMOy9lvZSLqRcKc"
}

返回示例:

{
"errcode": 0,
"errmsg": "ok",
"code": "8",
"code_start": 0,
"code_end": 200,
"activity_name": "test_name",
"product_brand": "test_brand",
"product_title": "test_title",
"product_code": "test_code",
"wxa_appid":"wx3sxjifjwojfsffef",
"wxa_path":"pages/index/index",
"application_id":581865877,
"isv_application_id":"test_id"
}

# 3. 二维码包解密说明

3.1 解密说明

实名数据的加密方式使用AES的CBC模式,iv使用加解密钥,填充使用PKCS7Padding,最后使用base64进行编码。

解密时,先进行base64解码,然后使用密钥及AES/CBC/PKCS7Padding进行解密。 密钥在申请实名接口权限时,会提供到申请方。