批量活码API接口文档

一、功能说明

该接口文档适用于:调用账号下的批量模板,在自有系统或网页中,批量生成不同内容的子码。

对接后,可在自有系统里,批量生成二维码。无需导出数据在我们平台再导入数据生码。例如可对接产品、资产等管理系统,当有新增数据时,可根据规则自动拼接,在系统里批量生成对应产品、资产二维码。

生成的码与系统后台的信息关联,当后台对信息进行修改时,扫码的内容会自动更新。可以通过扫码快速获取最新的资产信息,无需手动更新或重新生码。

file

二、接口调用说明

URL

https://open-api.cli.im/cli-open-platform-service/v1/dynamicQrcode/dynamicSingleCreate 

HTTP请求方式

POST

数据协议

application/json

请求参数

参数名称

是否必须

类型

说明

template_num

 string

批量模板编号,例如M10

api_key

 string

用户api key

sign

 string

签名,生成方式见加签方式

values

 string

模板字段值数组,不支持音频、视频字段,字段没有值传入空字符串。对于不同字段格式,传入参数说明如下

可变内容类型传入说明:

类型

传入参数

单行文本、多行文本、数字

传入内容字符串,如:"消防栓"

日期

传入日期,如:"2022-10-23"

单选项

传入选中项数,如:1,说明选中第一项

多选项

传入选中项数,英文逗号分隔,如:"1,2",说明选中第一项,第二项

定位

传入json数据格式,如不需要导航功能,传入地址即可,如:"{"address":"浙江省
宁波市"}";如果需要导航功能,需要传入经纬度,如:"{"address":"浙江省宁波
市","lat": 29.86089244498819,"log": 121.54615961015224}"

图片、文件

传入公网可访问静态资源地址,如:"https://cli-api.oss-cn-hangzhou-internal.aliy
uncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467-60fbb0c4
4621_source.jpg“

返回参数

参数名称

类型

说明

code

int

状态码,0-成功

message

 string

返回信息

data

json

图片参数,详解如下

date:

参数名称

类型

说明

web_ur

string

码内容

qrstyle_url

string

二维码图片地址,保留一天有效

加签方式

1、将请求参数按照键的字典序排列,然后用 & 拼接成字符串,例如使用以下请求参数:

{ "template_num":"M8", "api_key":"CLb87ea759f877622c", "values":["消防栓","A23154","宁波市","张成杰","13023214212","资产运营 部","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg"] }

排序拼接后字符串为:

api_key=CLb87ea759f877622c&template_num=M8&values=["消防栓","A23154","宁波市","张成 杰","13023214212","资产运营部","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg"]

拼接系统提供的用户api secret到上述字符串最后,假设secret为ddb42b7299b90cb5e0fd6c41e154c15d,得到如下字符串:

api_key=CLb87ea759f877622c&template_num=M8&values=["消防栓","A23154","宁波市","张成 杰","13023214212","资产运营部","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg"]ddb42b7299b90cb5e0fd6c41e154c15d

将以上字符串进行md5加密,全部取小写,得到签名sign:

a6bb0eb47c5bdd67bdfccbf0a0aec903

将得到签名sign放入原请求参数体中,如下所示:

{ "template_num":"M8", "api_key":"CLb87ea759f877622c", "values":["消防栓","A23154","宁波市","张成杰","13023214212","资产运营 部","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg"], "sign":"a6bb0eb47c5bdd67bdfccbf0a0aec903" }

请求参数示例

{ "template_num":"M8", 
"api_key":"CLb87ea759f877622c", 
"values":["消防栓","A23154","宁波市","张成杰","13023214212","资产运营 部","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg"],
"sign":"a6bb0eb47c5bdd67bdfccbf0a0aec903" }

返回示例

{ "data": { 
"web_url": "http://qr61.cn/og9o2j/qYu20pX",
"qrstyle_url": "https://ncstatic.clewm.net/free/2023/1108/15/myzxdwuonl2keoqjj4yo5yy3h3heacvx.png" },
"code": 0, 
"message": "操作成功" }

错误码

错误码

错误码取值

解决方案

200

成功

成功

400

请求的数据格式不符!

请检查参数正确性

40000

系统繁忙,请稍后再试

系统可能维护升级中,等待后续功能恢复

40001

参数错误

检查传递参数是否按照文档规范

40004

签名错误

请检查签名方式

三、调用代码示例

活码批量模板页选择一个模板,如果没有模板,也可以先创建一个模板。 创建批量模板

在草料工作台,批量模板列表下,找到需要调用的模板,以M8模板为准:

file

在模板详情页开通活码API,即可获取到APIkey和API_secret。还可设置调用范围,可选择公开或者指定IP域名可调用。

file

进入模板修改页可以看到M8模板有8个可变字段,第7个为图片字段,第8个为文件字段,以下为示例代码:

file

package org.cli.platform.service.util;

import com.alibaba.fastjson.JSON;
import org.apache.commons.codec.digest.DigestUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors; 
public class CliApiV1Demo { 
public static void main(String[] args) throws IOException { String secret = "ddb42b7299b90cb5e0fd6c41e154c15d";

Map<String,Object> params = new HashMap<>(); params.put("api_key", "CLb87ea759f877622c"); params.put("template_num", "M8"); 
params.put("values", new String[]{"消防栓","A23154","宁波市","张成 杰","13023214212","资产运营部","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg","https://cli-api.oss-cn-hangzhou- internal.aliyuncs.com/example/2023/1108/15/44/i9528fa4d7ba3-60fa-4ea2-b467- 60fbb0c44621_source.jpg"}); 

String data = JSON.parseObject(JSON.toJSONString(params)).entrySet().stream().sorted(Map.Entry. comparingByKey()).map(entry -> entry.getKey() + "=" + entry.getValue()).collect(Collectors.joining("&")); 
data += secret; String sign = DigestUtils.md5Hex(data); params.put("sign", sign); 

//生成url请求 
URL url = new URL("https://open-api.cli.im/cli-open-platform- service/v1/dynamicQrcode/dynamicSingleCreate"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("Connection", "keep-Alive"); 
connection.setRequestProperty("Content-Type", "application/json");
connection.connect(); OutputStream out = connection.getOutputStream(); out.write(JSON.toJSONString(params).getBytes(StandardCharsets.UTF_8));
out.flush(); 
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8)); 
StringBuilder content = new StringBuilder(); String line; while (null != (line = br.readLine())) { content.append(line);
}
System.out.println(content);
} 
}

四、调用说明

  1. Beta期间 开通API 的用户可长期免费调用;

  2. API调用根据IP秒级并发20次,如需更高并发次数,可 前往社区反馈

  3. 如果标签API调用流程、速度等方面问题,可以 前往社区反馈 ,草料官方顾问和技术会定期查看并回复