一、电子面单下单接口
通过快递公司或网点、菜鸟与淘宝提供的电子面单账号,进行快递下单和打单。支持只下单,或者生成图片使用本地打印设备打印输出面单,以及调用快递100云打印设备打印输出面单。
1.1 接口格式
提供统一格式的HTTP POST或GET调用接口,并统一返回JSON格式数据。
1.2 请求地址
https://api.kuaidi100.com/label/order
请求参数(header)
名称 | 类型 | 默认值 |
---|---|---|
Content-Type | string | application/x-www-form-urlencoded |
请求参数(body)
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
method | 是 | string | 业务类型(默认:order) |
key | 是 | string | 授权码,请到快递100页面申请企业版接口获取 |
sign | 是 | string | 32位大写,签名,用于验证身份,按MD5 (param +t+key+ secret)的顺序进行MD5加密,不需要加上“+”号,secret在企业管理后台获取 |
t | 是 | string | 时间戳如:1576123932000 |
param | 是 | param | 由其他字段拼接 |
param数据结构:
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
printType | 是 | string | 打印类型,NON:只下单不打印(默认); IMAGE:生成图片短链;HTML:生成html短链; CLOUD:使用快递100云打印机打印,使用CLOUD时siid必填 |
partnerId | 是 | string | 电子面单客户账户或月结账号,需贵司向当地快递公司网点申请(参考电子面单申请指南); 是否必填该属性,请查看参数字典 |
partnerKey | 否 | string | 电子面单密码,需贵司向当地快递公司网点申请; 是否必填该属性,请查看参数字典 |
partnerSecret | 否 | string | 电子面单密钥,需贵司向当地快递公司网点申请; 是否必填该属性,请查看参数字典 |
partnerName | 否 | string | 电子面单客户账户名称,需贵司向当地快递公司网点申请; 是否必填该属性,请查看参数字典 |
net | 否 | string | 收件网点名称,由快递公司当地网点分配, 若使用淘宝授权填入(taobao),使用菜鸟授权填入(cainiao), 使用京东授权填入(jdalpha),使用拼多多授权填入(pinduoduoWx),使用抖音授权填入(douyin),使用快手授权填入(kuaishou),使用唯品会授权填入(weipinhui),使用视频号授权填入(wechatChannels),使用小红书授权填入(xiaohongshu)。 是否必填该属性,请查看参数字典 (若通过第三方授权方式获取单号partnerId,partnerKey参数为必填,参数值可通过第三方授权接口获取) |
code | 否 | string | 电子面单承载编号,需贵司向当地快递公司网点申请; 是否必填该属性,请查看参数字典 |
checkMan | 否 | string | 电子面单承载快递员名,需贵司向当地快递公司网点申请; 是否必填该属性,请查看参数字典 |
tbNet | 否 | string | 在使用菜鸟/淘宝/拼多多授权电子面单时,若月结账号下存在多个网点,则tbNet="网点名称,网点编号" ,注意此处为英文逗号 |
kuaidicom | 是 | string | 快递公司的编码,一律用小写字母,请查看参数字典 |
ΘrecMan | 是 | recMan | 收件人信息 |
¬name | 是 | string | 收件人姓名 |
¬mobile | 是 | string | 收件人的手机号,手机号和电话号二者其一必填 |
¬tel | 是 | string | 收件人的电话号,手机号和电话号二者其一必填 |
¬printAddr | 是 | string | 收件人所在完整地址,如广东深圳市南山区科技南十二路金蝶软件园B10 |
¬company | 否 | string | 收件人所在公司名称 |
ΘsendMan | 是 | sendMan | 寄件人信息 |
¬name | 是 | 寄件人姓名 | |
¬mobile | 是 | string | 寄件人的手机号,手机号和电话号二者其一必填 |
¬tel | 是 | string | 寄件人的电话号,手机号和电话号二者其一必填 |
¬printAddr | 是 | string | 寄件人所在的完整地址,如广东深圳市南山区科技南十二路金蝶软件园B10 |
¬company | 否 | string | 寄件人所在公司名称 |
cargo | 是 | string | 物品名称,例:文件 |
count | 是 | int | 包裹总数量。该属性与子单有关,如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号),needChild = 1、count 需要大于1,如count = 2 则一个主单 一个子单,count = 3则一个主单 二个子单;返回的子单号码见返回结果的childNum字段 |
weight | 否 | Double | 物品总重量KG,例:1.5,单位kg。极兔速递必填,其他快递公司非必填 |
payType | 否 | string | 支付方式: SHIPPER:寄方付(默认) CONSIGNEE:到付 MONTHLY:月结 THIRDPARTY:第三方支付 (详细请查看参数字典 ) |
expType | 否 | string | 产品类型: 如标准快递(默认) 顺丰标快(陆运) EMS经济 (详细请请查看参数字典 ) |
remark | 否 | string | 备注 |
siid | 否 | string | 打印设备,通过打印机输出的设备码进行获取,printType为CLOUD时必填 |
direction | 否 | string | 打印方向, 0:正方向(默认); 1:反方向;只有printType为CLOUD时该参数生效 |
tempId | 否 | string | 主单模板,通过管理后台的快递公司模板V2信息获取 |
childTempId | 否 | string | 子单模板,部分快递公司需指定。通过管理后台的快递公司模板V2信息获取 |
backTempId | 否 | string | 回单模板,部分快递公司需指定。通过管理后台的快递公司模板V2信息获取 |
面单扩展属性 | |||
valinsPay | 否 | double | 保价额度,单位:元 |
collection | 否 | double | 代收货款额度,单位:元 |
needChild | 否 | string | 是否需要子单: 1:需要 0:不需要(默认) 如果需要子单(指同一个订单打印出多张电子面单,即同一个订单返回多个面单号); needChild = 1、count 需要大于1,如count = 2 一个主单 一个子单,count = 3 一个主单 二个子单,返回的子单号码见返回结果的childNum字段 |
needBack | 否 | string | 是否需要回单: 1:需要 0:不需要(默认) 返回的回单号见返回结果的returnNum字段 |
backSign | 否 | int | 回单张数,默认为1,目前仅支持跨越 |
orderId | 否 | string | 贵司内部自定义的订单编号,需要保证唯一性,非必填 |
reorder | 否 | boolean | 是否重新下单,默认true,配合orderId使用;当orderId不为空,reorder设置为false,48小时内只会返回第一次下单成功的内容(返回信息代码为30011);否则每次下单都认为重新下发订单 |
callBackUrl | 否 | string | 数据回调地址(打印状态以及OCR识别结果) |
salt | 否 | string | 签名用随机字符串,用于验证签名sign。salt值不为null时,推送数据将包含该加密签名,加密方式:md5(param+salt)。注意: salt值为空串时,推送的数据也会包含sign,此时可忽略sign的校验。 |
needSubscribe | 否 | boolean | 是否开启订阅功能 false:不开启(默认) true:开启 说明开启订阅功能时:pollCallBackUrl必须填入 此功能只针对有快递单号的单 |
pollCallBackUrl | 否 | string | 如果needSubscribe 设置为true时,pollCallBackUrl必须填入,用于跟踪回调 |
resultv2 | 否 | string | 添加此字段表示开通行政区域解析或地图轨迹功能 。 0:关闭(默认) 1或4:开通行政区域解析功能(不同值下的参数返回详见:快递信息推送接口文档), 3或5:开通地图轨迹及时效返回(不同值下的参数返回详见地图轨迹推送服务技术文档) |
needDesensitization | 否 | boolean | 是否脱敏 ,false:关闭(默认)true:开启。开启后生成的面单收寄件人手机号码会脱敏,使用前请先跟网点确认是否支持使用脱敏电话 |
needLogo | 否 | boolean | 面单是否需要logo false:关闭(默认)true:开启 |
thirdOrderId | 否 | string | 平台导入返回的订单id:如平台类加密订单,使用此下单为必填 |
oaid | 否 | string | 淘宝订单收件人ID (Open Addressee ID),长度不超过128个字符,淘宝订单加密情况用于解密 |
caid | 否 | string | 菜鸟解密地址ID,1688订单加密情况用于解密 |
thirdTemplateURL | 否 | string | 第三方平台面单基础模板链接,如为第三方平台导入订单选填,如不填写,默认返回两联面单模板; 查看详情 |
thirdCustomTemplateUrl | 否 | string | 第三方平台自定义区域模板地址 |
customParam | 否 | Map<String,String> | 面单自定义参数。方式传入为key-value格式,注意这里的key优先级高于面单生成的参数,例如:面单里面默认的快递单号对应参数为kuaidinum,如果这里的key也包含kuaidinum,将会覆盖原来的值。使用第三方平台订单时,也可配合thirdCustomTemplateUrl,实现自定义区域的传值 |
needOcr | 否 | boolean | 第三方平台订单是否需要开启ocr,开启后将会通过推送方式推送 false:关闭(默认)true:开启 |
ocrInclude | 否 | String[] | orc需要检测识别的面单元素。取值范围:barcode,qrcode,receiver,sender,bulkpen。不传或者 null 则默认为 ["barcode", "receiver", "sender"] |
height | 否 | string | 打印纸的高度,以mm为单位(该参数只有第三方平台订单,并且printType为CLOUD时起作用) |
width | 否 | string | 打印纸的宽度,以mm为单位(该参数只有第三方平台订单,并且printType为CLOUD时起作用) |
1.3 请求参数示例
method = order
key = ** ** *
sign = ** ** *
t = 1470304729724
param = {
"partnerId": "123456",
"partnerKey": "",
"code": "",
"kuaidicom": "zhaijisong",
"recMan": {
"name": "张三",
"mobile": "13888888888",
"printAddr": "广东深圳市南山区金蝶软件园",
"company": ""
},
"sendMan": {
"name": "李四",
"mobile": "13888888888",
"printAddr": "广东深圳市南山区金蝶软件园",
"company": ""
},
"cargo": "test",
"tempId": "60f6c17c7c223700131d8bc3",
"childTempId": "61bff9efc66fb00013a1b168",
"backTempId": "61bffa26c66fb00013a1b16c",
"payType": "SHIPPER",
"expType": "标准快递",
"remark": "测试下单,请勿发货",
"collection": "0",
"needChild": "0",
"needBack": "0",
"count": 1,
"printType": "CLOUD",
"siid": "KX100*******",
"needDesensitization": true,
"needLogo": true,
"needOcr": false
}
1.4 返回结果
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
success | boolean | 提交结果 | true提交成功,false失败 |
code | int | 返回编码 | 200为成功 |
message | string | 返回报文描述 | |
data | Object |
data数据结构
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
taskId | string | 任务ID | |
kuaidinum | string | 快递单号 | |
childNum | string | 子单号 | 多个子单时使用”,”隔开。比如JD6666666,JD888888,JD99999 |
returnNum | string | 回单号 | 部分快递公司回单会返回回单号 |
label | string | 面单短链,printType为IMAGE或者HTML时的面单短链 | 多个面单时使用”,”隔开。比如http://api.kuaidi100.com/label/1, http://api.kuaidi100.com/label/2, http://api.kuaidi100.com/label/3 面单异步生成,请求还未生成时,可以稍后重试 |
bulkpen | string | 大头笔 | 用于显示于电子面单上规定位置,非必需,是否有值取决于快递公司 |
orgCode | string | 始发地区域编码 | |
orgName | string | 始发地/始发网点名称 | |
destCode | string | 目的地区域编码 | |
destName | string | 目的地/到达网点 | |
orgSortingCode | string | 始发分拣编码 | |
orgSortingName | string | 始发分拣名称 | |
destSortingCode | string | 目的分栋编码 | |
destSortingName | string | 目的分栋中心名称 | |
orgExtra | string | 始发其他信息 | |
destExtra | string | 目的其他信息 | |
pkgCode | string | 集包编码 | |
pkgName | string | 集包地名称 | |
road | string | 路区 | |
qrCode | string | 二维码 | |
kdComOrderNum | string | 快递公司订单号 | |
expressCode | string | 快递业务类型编码 | |
expressName | string | 快递业务类型名称 |
注意:当net入参为taobao/cainiao/jdalpha/pinduoduoWx/douyin/kuaishou/weipinhui时,printType将不起作用,label返回的结果除了jdalpha是jpg,其他都是pdf格式
1.5 返回结果示例
成功示例
{
"code": 200,
"data": {
"kuaidinum": "ZJS8888888888",
"bulkpen": "371-转9999-C482",
"sameCity": "1",
"sameProv": "1",
"taskId": "7EEAFD6CBEF64FEBAA10022BD32378BC"
},
"message": "success",
"time": 0,
"success": true
}
失败示例
{
"code": 30005,
"message": "电子面单账号校验失败,请确认账号信息是否正确",
"time": 0,
"success": false
}
1.6 返回信息代码含义
信息代码 | 信息内容描述 | 原因及建议处理方式 |
---|---|---|
-1 | 服务器错误 | 快递100的服务器出现间歇或临时性异常,有时如果因为不按规范提交请求,比如快递公司参数写错等,也会报此错误 |
200 | 提交成功 | 提交成功 |
30001 | 参数错误 | 请根据技术文档请求,注意参数类型及是否必填 |
30002 | 验证签名失败 | 检查加密方式,param +t+key+ secret的顺序进行MD5加密,加密后字符串转32位大写,不用加上“+”号 |
30003 | 账号信息不正确 | 检查key是否正确 |
30004 | 账号单量不足 | 单量不足需要充值 |
30005 | 快递公司返回异常 | 按照描述可以自行检查是否参数缺失或者错误 |
30006 | 参数转换异常 | 按照描述可以自行检查参数的数据类型是否正确 |
30007 | 模板id不正确 | 检查传入tempId、childTempId、backTempId是否正确 |
30008 | 第三方平台生成面单失败 | 平台订单面单生成失败,一般是网络问题可以稍后重试 |
30010 | 打印机状态不正确 | 打印机当前状态无法打单,需要检查 |
30011 | 重新获取面单内容成功 | 重新获取面单内容成功 |
二、电子面单复打接口
该接口支持在提交打印请求2天内且打印方式(printType)为“CLOUD”的打印任务进行复打10次的操作。
2.1 接口格式
提供统一格式的HTTP POST或GET调用接口,并返回统一格式JSON数据。
2.2 请求地址
https://api.kuaidi100.com/label/order
请求参数:
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
method | 是 | string | 业务类型(默认:printOld) |
key | 是 | string | 授权码,请申请企业版获取 |
sign | 是 | string | 32位大写,签名,用于验证身份,按MD5 (param +t+key+ secret)的顺序进行MD5加密,不需要加上“+”号secret在企业管理后台查看 |
t | 是 | string | 时间戳如:1576123932000 |
param | 是 | param | 由其他字段拼接 |
param数据结构:
参数名 | 是否必填 | 类型 | 说明 |
---|---|---|---|
taskId | 是 | string | 任务ID |
siid | 否 | string | 快递100打印机,不填默认为下单时填入的siid |
2.3 返回结果
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
success | boolean | 提交结果 | true提交成功,false失败 |
code | string | 返回编码 | |
message | String | 返回报文描述 | |
data | String | 图片复打时会有返回 |
2.4 提供数据内容
打印设备复打成功返回示例
{
"code": 200,
"message": "success",
"time": 0,
"success": true
}
错误示例:
{
"code": 30009,
"message": "查无此单",
"time": 0,
"success": false
}
2.5 返回信息代码含义
信息代码 | 信息内容描述 | 原因及建议处理方式 |
---|---|---|
-1 | 服务器错误 | 快递100的服务器出现间歇或临时性异常,有时如果因为不按规范提交请求,比如快递公司参数写错等,也会报此错误 |
200 | 提交成功 | 提交成功 |
30001 | 参数错误 | 请根据技术文档请求,注意参数类型及是否必填 |
30002 | 验证签名失败 | 检查加密方式,param +t+key+ secret的顺序进行MD5加密,加密后字符串转32位大写,不用加上“+”号 |
30003 | 账号信息不正确 | 检查key是否正确 |
30004 | 账号单量不足 | 单量不足需要充值 |
30009 | 查无此单 | 可能调用过期或复打次数超过限制 |
三、打印状态回调
通过上述接口提交的打印请求,进行打印状态返回。
3.1 接口格式
提供统一格式的HTTP POST或GET调用接口,并返回统一格式JSON数据。
3.2 请求地址
由贵司在电子面单打印请求中通过callBackUrl字段提供
<form method="post" name="" action="[callbackUrl]">
<input type="text" name="taskId" value="{XXX}" />
<input type="text" name="param" value="{XXX}" />
<input type="text" name="sign" value="签名字符串" />
<input type="text" name="pushType" value="printStatus" />
</form>
请求参数:
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
taskId | string | 任务ID | |
sign | string | 加密字符串签名:MD5 (param +salt) | |
pushType | string | 推送类型,默认为 printStatus | |
param | param | 参数主体 |
param数据结构:
参数名 | 类型 | 说明 |
---|---|---|
status | string | 状态编码,200:打印成功,201打印不成功 |
message | string | 状态描述 |
请求参数示例
taskId=***
param={"message":"打印成功","status":"200"}
sign=***
pushType=printStatus
3.3 返回结果
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
result | boolean | 提交结果 | true提交成功,false失败 |
returnCode | string | 返回编码 | |
message | string | 返回报文描述 |
3.4 返回结果示例
{
"result": true,
"returnCode": "200",
"message": "提交成功"
}
说明:
字段名称 | 字段含义 |
---|---|
result | true表示成功,false表示失败。如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃 |
returnCode | 200: 提交成功 500: 服务器错误 其他错误请自行定义 |
message | 返回的提示 |
其他信息快递100会忽略。
四、OCR识别结果回调
通过上述接口提交的第三方平台打单,开启ocr后(needOcr为true时),会通过callBackUrl推送。
4.1 接口格式
提供统一格式的HTTP POST或GET调用接口,并返回统一格式JSON数据。
4.2 请求地址
由贵司在电子面单打印请求中通过callBackUrl字段提供
<form method="post" name="" action="[callbackUrl]">
<input type="text" name="taskId" value="{XXX}" />
<input type="text" name="param" value="{XXX}" />
<input type="text" name="sign" value="签名字符串" />
<input type="text" name="type" value="ocr" />
</form>
请求参数:
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
taskId | string | 任务ID | |
sign | string | 加密字符串签名:MD5 (param +salt) | |
type | string | 推送类型,默认为 ocr | |
param | param | 参数主体 |
param数据结构:
参数名称 | 数据类型 | 是否必填 | 参数描述 |
---|---|---|---|
barcode | string[] | 否 | 条形码值 |
qrcode | string[] | 否 | 二维码值 |
Θreceiver | Object | 否 | 收件人信息,明细项目请展开 |
└ address | string | 否 | 详细地址 |
└province | string | 否 | 省 |
└ city | string | 否 | 市 |
└ county | string | 否 | 县/区 |
└ mobile | string | 否 | 电话 |
└ name | string | 否 | 姓名 |
└ text | string | 否 | 原始文本 |
└confidence | number | 否 | 可信度,仅供参考 |
Θsender | Object | 否 | 寄件人信息,明细项目请展开 |
└ address | string | 否 | 详细地址 |
└province | string | 否 | 省 |
└ city | string | 否 | 市 |
└ county | string | 否 | 县/区 |
└ mobile | string | 否 | 电话 |
└ name | string | 否 | 姓名 |
└ text | string | 否 | 原始文本 |
└confidence | number | 否 | 可信度 |
Θbulkpen | Object | 否 | 大头笔信息,明细项目请展开 |
└confidence | number | 否 | 可信度 |
└ text | string | 否 | 原始文本 |
4.3 返回结果
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
result | boolean | 提交结果 | true提交成功,false失败 |
returnCode | string | 返回编码 | |
message | string | 返回报文描述 |
4.4 返回结果示例
{
"result": true,
"returnCode": "200",
"message": "提交成功"
}
说明:
字段名称 | 字段含义 |
---|---|
result | true表示成功,false表示失败。如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃 |
returnCode | 200: 提交成功 500: 服务器错误 其他错误请自行定义 |
message | 返回的提示 |
其他信息快递100会忽略。
五、订阅/ocr异常结果回调
开启订阅或ocr后,如果当前账号没有余额,将会通过callBackUrl推送
5.1 接口格式
提供统一格式的HTTP POST或GET调用接口,并返回统一格式JSON数据。
5.2 请求地址
由贵司在电子面单下单请求中通过callBackUrl字段提供
<form method="post" name="" action="[callbackUrl]">
<input type="text" name="taskId" value="{XXX}" />
<input type="text" name="param" value="{XXX}" />
<input type="text" name="sign" value="签名字符串" />
<input type="text" name="type" value="exception" />
</form>
请求参数:
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
taskId | string | 任务ID | |
sign | string | 加密字符串签名:MD5 (param +salt) | |
pushType | string | 推送类型,默认为exception | |
param | param | 参数主体(订阅失败:key已过期 ocr失败:key已过期) |
5.3 返回结果
字段 | 类型 | 说明 | 备注 |
---|---|---|---|
result | boolean | 提交结果 | true提交成功,false失败 |
returnCode | string | 返回编码 | |
message | string | 返回报文描述 |
5.4 返回结果示例
{
"result": true,
"returnCode": "200",
"message": "提交成功"
}
说明:
字段名称 | 字段含义 |
---|---|
result | true表示成功,false表示失败。如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃 |
returnCode | 200: 提交成功 500: 服务器错误 其他错误请自行定义 |
message | 返回的提示 |
其他信息快递100会忽略。