免开发寄件组件对接文档
一、接口介绍
本文档面向快递100API开放平台的客户,指导其通过对接寄件H5组件,快速在其应用或网页中集成寄件功能。
对接流程概览:
- 获取授权:调用授权接口,获取业务接口的访问凭证(
Authorization)。 - 导入订单:调用订单导入接口,预填寄件信息,生成任务ID(
id)。 - 嵌入组件:拼接URL,通过iframe将寄件H5组件嵌入您的页面。
- 接收回调:监听回调接口,获取用户下单结果。
- 管理订单:根据业务需要,调用取消订单等接口。
二、授权接口
后续所有业务接口(订单导入、取消订单等)均需在请求头中携带授权凭证(Authorization)。此凭证通过本接口获取,有效期为30分钟,过期后需刷新。
2.1 获取授权凭证
接口地址:POST https://api.kuaidi100.com/apisentback/auth/token Content-Type:application/json
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
key | String | 是 | 第三方平台的授权key(由快递100后台提供) |
timestamp | Long | 是 | 当前时间的毫秒时间戳 |
sign | String | 是 | 签名,大写MD5加密(加密串:key+secret+timestamp) |
请求示例:
{
"key": "your_authorized_key",
"timestamp": 1646819137650,
"sign": "223C4078B7D664A86D1722FE5E9F5430"
}
响应参数:
| 字段名 | 类型 | 描述 |
|---|---|---|
result | Boolean | true:成功;false:失败 |
returnCode | Integer | 状态码:200-成功;其他-失败 |
message | String | 描述信息 |
data | Object | 数据体,包含授权凭证及过期时间 |
data字段详情:
| 字段名 | 类型 | 描述 |
|---|---|---|
authorization | String | 授权凭证。后续请求需在Header中携带此值,键为Authorization |
expireTime | Long | 有效时长,单位:毫秒(默认1800000,即30分钟) |
响应示例:
{
"result": true,
"returnCode": 200,
"message": "SUCCESS",
"data": {
"authorization": "gmtCe4eee9xuBdxKjWdBo_kLA4jGjvBWfBTtcvjMblAcZ_654564543mUSk",
"expireTime": 1800000
}
}
凭证使用方法: 将data.authorization的值放入后续请求的Header中:
Authorization: gmtCe4eee9xuBdxKjWdBo_kLA4jGjvBWfBTtcvjMblAcZ_dYYvmGjNXyEmUSk
2.2 刷新授权凭证
授权凭证(authorization)默认有效期为30分钟。在有效期内,您可以通过本接口刷新凭证,获取新的authorization和expireTime。
接口地址:https://api.kuaidi100.com/apisentback/auth/refresh
请求方式:POST 或 GET
Content-Type:application/json
请求头:
| 字段名 | 必填 | 类型 | 描述 |
|---|---|---|---|
Authorization | 是 | String | 待刷新的授权凭证(即将过期的凭证) |
请求示例(无请求体,仅携带Header):
Authorization: gmtCe4eee9xuBdxKjWdBo_kLA4jGjvBWfBTtcvjMblAcZ_dYYvmGjNXyEmUSk
响应参数:
| 字段名 | 类型 | 描述 |
|---|---|---|
result | Boolean | true:成功;false:失败 |
returnCode | Integer | 返回状态码:200-成功;其他-失败 |
message | String | 返回描述信息 |
data | Object | 数据体内容,包含新的授权凭证及过期时间 |
data字段内容:
| 字段名 | 类型 | 描述 |
|---|---|---|
authorization | String | 新的授权凭证。后续业务接口需使用此新凭证 |
expireTime | Long | 新凭证的有效时长,单位:毫秒 |
响应示例:
{
"result": true,
"returnCode": 200,
"message": "SUCCESS",
"data": {
"authorization": "gmtCe4eee9xuBdxKjWdBo_kLA4jGjvBWfBTtcvjMblAcZ_dYYvmGjNXyEmUSk",
"expireTime": 1800000
}
}
三、业务接口
3.1 寄件信息预导入接口
在用户进入H5组件前,通过此接口预填寄件人、收件人、物品等信息,简化用户操作。
接口地址:POST https://api.kuaidi100.com/apisentback/border/importOrderInfo Content-Type:application/json
请求参数:
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
key | String | 是 | 授权码,请到快递100页面申请企业版接口获取 |
sign | String | 是 | 32位大写签名,用于验证身份。加密顺序:MD5(param + t + key + secret),不需要加“+”号。secret在企业管理后台获取 |
t | String | 是 | 时间戳,例如:1576123932000 |
param | String | 是 | JSON字符串,由具体订单字段拼接而成,数据结构见下表 |
param数据结构:
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
thirdOrderId | 是 | String | 第三方订单号,请确保唯一性,用于后续订单状态回调时匹配 |
kuaidiCom | 否 | String | 快递公司编码,小写字母,例如:yuantong。详见《快递公司编码》 |
recName | 否 | String | 收件人姓名 |
recMobile | 否 | String | 收件人手机号码 |
recPrintAddr | 否 | String | 收件人详细地址(含省市区+街道门牌) |
sendPrintAddr | 否 | String | 发件人详细地址(含省市区+街道门牌) |
sendName | 否 | String | 发件人姓名 |
sendMobile | 否 | String | 发件人手机号码 |
callbackUrl | 否 | String | 回调地址,用于接收订单状态变更通知。若不传,则使用快递100后台配置的默认地址 |
cargo | 否 | String | 物品名称 |
weight | 否 | String | 物品总重量,单位:KG |
remark | 否 | String | 备注信息 |
payer | 否 | String | 运费支付方:1-用户支付,2-平台支付,默认为1 |
valinsPay | 否 | String | 保价额度,单位:元,默认为0。当前仅京东、德邦、圆通、极兔、申通支持线上保价,其他快递公司传值无效 |
请求示例:
{
"key": "your_key",
"t": "1750317297077",
"sign": "28E47AC27E283D09CDD6BC623CD23E3F",
"param": "{\"thirdOrderId\":\"123456\",\"kuaidiCom\":\"yuantong\",\"recName\":\"张三\",\"recMobile\":\"13800138000\",\"recPrintAddr\":\"上海市浦东新区xx路1号\",\"sendPrintAddr\":\"广东省深圳市南山区xx路2号\",\"sendName\":\"李四\",\"sendMobile\":\"13900139000\",\"cargo\":\"文件\",\"weight\":\"0.5\",\"payer\":1,\"callbackUrl\":\"https://your.domain.com/callback\"}"
}
响应参数:
| 字段名 | 类型 | 描述 |
|---|---|---|
result | Boolean | true:成功;false:失败 |
returnCode | String | 状态码:200-成功;其他-失败 |
message | String | 描述信息 |
data | String | 任务ID,用于拼接H5寄件链接 |
响应示例:
{
"result": true,
"returnCode": "200",
"message": "成功",
"data": "111111"
}
3.2 取消订单接口
通过此接口取消用户已下单但快递员尚未取件的订单。
接口地址:POST https://api.kuaidi100.com/apisentback/ent/cancelOrder Content-Type:application/x-www-form-urlencoded
请求参数:
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
key | 是 | String | 授权码 |
t | 是 | String | 时间戳 |
sign | 是 | String | 32位大写签名,用于验证身份。加密顺序:MD5(param + t + key + secret),不需要加“+”号。secret在企业管理后台查看 |
param | 是 | String | JSON字符串,包含取消信息,数据结构见下表 |
param数据结构:
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
orderId | 是 | String | 快递100平台生成的订单ID |
cancelMsg | 是 | String | 取消原因(100字以内) |
请求示例:
key=your_key
sign=4BBDE07660E5EFF90873642CFAE9A8DD
t=1647258957705
param={"orderId":"694509391680","cancelMsg":"用户取消"}
响应参数:
| 字段名 | 类型 | 描述 |
|---|---|---|
result | Boolean | true:处理成功;false:失败 |
returnCode | String | 状态码 |
message | String | 描述信息 |
data | Object | 成功时返回“成功”,失败返回null |
响应示例:
{
"result": true,
"returnCode": "200",
"message": "SUCCESS",
"data": "成功"
}
四、回调接口
4.1 订单状态回调
用户通过H5组件下单后,订单状态发生变更(下单成功、快递员接单、取消、签收等)时,快递100服务器会向您在导入订单接口传入的回调地址(callbackUrl)推送订单状态。
推送方式:POST Content-Type:application/x-www-form-urlencoded
回调参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
taskId | String | 是 | 任务ID(对应导入接口返回的data) |
param | String | 是 | JSON字符串,包含订单最新状态,数据结构见下表 |
sign | String | 是 | 签名,MD5(param)(用于校验回调请求合法性) |
param数据结构:
| 字段名 | 必填 | 类型 | 说明 |
|---|---|---|---|
kuaidicom | 是 | String | 快递公司编码 |
kuaidinum | 是 | String | 快递单号 |
status | 是 | String | 状态码(如:200) |
message | 是 | String | 状态描述 |
data | 是 | Object | 订单详情,包含状态、运费、快递员信息等 |
data数据结构:
| 字段名 | 必填 | 类型 | 说明 |
|---|---|---|---|
orderId | 是 | String | 快递100平台订单ID |
status | 是 | Int | 订单状态说明:0-下单成功;1-已接单;2-收件中;9-用户主动取消;10-已取件;11-揽货失败;12-已退回;13-已签收;14-异常签收;15-已结算;99-订单已取消;101-运输中;200-已出单;201-出单失败;610-下单失败;155-修改重量(需在工单系统发起异常反馈并由快递100服务人员确认调重后才有此回调,回调内容包含修改重量后的重量、运费、费用明细、业务类型);166-订单复活(订单被取消但包裹已发出,正常计费);400-派送中 |
cancelMsg9 | 否 | String | 用户取消原因(状态为9时返回) |
cancelMsg99 | 否 | String | 系统取消或下单失败原因(状态为99或610时返回) |
courierName | 否 | String | 快递员姓名 |
courierMobile | 否 | String | 快递员电话 |
netTel | 否 | String | 网点电话,目前仅圆通会推送 |
netCode | 否 | String | 网点编码,目前仅圆通会推送 |
serviceType | 是 | String | 开单类型 |
weight | 否 | String | 计费重量,单位:kg |
defPrice | 否 | String | 标准运费,单位:元 |
freight | 否 | String | 折后运费,单位:元 |
volume | 否 | String | 体积,单位:cm³ |
actualWeight | 否 | String | 称重重量,单位:kg |
feeDetails | 否 | List | 费用明细列表 |
└ feeType | 否 | String | 费用类型 |
└ feeDesc | 否 | String | 费用名称 |
└ amount | 否 | String | 费用明细金额,单位:元 |
└ payStatus | 否 | Int | 支付状态:-1-支付失败;0-未支付;1-已支付;2-无需支付;3-已退款 |
printTaskId | 否 | String | 打印任务ID |
label | 否 | String | 面单短链,下单请求中returnType为20时返回 |
pickupCode | 否 | String | 取件码,目前仅中通、申通、极兔、快递100智选会返回,在状态1时返回 |
pollToken | 是 | String | 查询密钥,调用实时快递查询接口时入参此字段可免费查询该快递单号,一个快递单号对应一个密钥 |
thirdOrderId | 否 | String | 第三方平台订单号,最大32位,通过下单接口传入 |
回调请求示例:
sign=58686F006D7860706188314BF3BCEC02
taskId=58686F006D7860706188314BF3BCEC08
param={
"data": {
"courierName": "向力军",
"defPrice": null,
"mktId": null,
"orderId": "288222524",
"courierMobile": "1772***105",
"price": null,
"freight": null,
"weight": null,
"pollToken": "0DnLJY3be0zNp71yJ7XWWK0mhNys4teXATSL1+3Fn7Y=",
"status": 9
},
"kuaidicom": "shentong",
"kuaidinum": "772042264852909",
"message": "成功",
"status": "200"
}
您需返回的响应: 接收到回调后,请返回如下JSON,告知快递100服务器已成功接收。
{
"result": true,
"returnCode": "200",
"message": "SUCCESS"
}
五、前端嵌入说明
5.1 H5链接拼接规则
通过iframe嵌入寄件H5组件,URL拼接规则如下:
https://m.kuaidi100.com/h5activities/apiReverseShipping/?key=<授权凭证>&id=<任务ID>&hideTitleBar=1
Query参数说明:
| 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|
key | 是 | String | 授权凭证:拼接2.1章节接口返回的authorization |
id | 是 | String | 任务ID:拼接3.1章节接口返回的data(即导入的任务ID) |
hideTitleBar | 否 | String | 是否隐藏标题栏:1-隐藏,0-显示(默认) |
5.2 示例代码
<iframe
src="https://m.kuaidi100.com/h5activities/apiReverseShipping/?key=gmtCe4eee9xuBdxKjWdBo_kLA4jGjvBWfBTtcvjMblAcZ_654564543mUSk&id=111111&hideTitleBar=1"
width="100%"
height="800px"
frameborder="0">
</iframe>
效果示意图:
六、发票接口
针对寄件订单寄件人直接支付运费场景,平台提供线上开票功能,支持单笔或多笔订单合并申请发票。请注意,寄件金支付订单无法使用此接口开票,请联系快递100商务处理。
6.1 开票申请接口
提交开票申请,最多支持 10笔订单 合并开票。开票成功后,系统会主动回调您传入的 callbackUrl。
接口地址:POST https://api.kuaidi100.com/apisentback/invoice/apply
Content-Type:application/x-www-form-urlencoded
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 客户授权 key(企业管理后台获取) |
| sign | String | 是 | 32位大写签名,加密顺序:MD5(param + t + key + secret),不需要加“+”号。key,secret在企业管理后台查看 |
| t | String | 是 | 时间戳,例如:1747200000 |
| param | String | 是 | 业务参数,JSON格式字符串,结构见下表 |
param 参数结构
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| importOrderId | List | 是 | 快递100平台订单ID列表(来源于回调或订单查询),最多10笔合并开票 |
| invoiceType | Integer | 是 | 发票类型:1 - 电子普通发票,2 - 增值税专用发票 |
| titleType | Integer | 是 | 抬头类型:1 - 企业,2 - 个人/非企业 |
| title | String | 是 | 发票抬头 |
| taxNo | String | 否 | 企业税号(抬头类型为 1(企业)时必填) |
| remark | String | 否 | 备注,不超过100字符 |
| callbackUrl | String | 否 | 回调地址,用于接收开票状态通知,不超过100字符。若不传,则使用后台默认回调地址 |
请求示例
POST /invoice/apply
Content-Type: application/x-www-form-urlencoded
key=your_key&sign=sign_value&t=1747200000¶m={"importOrderId":["ORDER001","ORDER002"],"invoiceType":1,"titleType":1,"title":"测试企业","taxNo":"91110000MA00XXXXXX","remark":"测试开票","callbackUrl":"https://your-domain.com/callback"}
响应参数
| 字段名 | 类型 | 说明 |
|---|---|---|
| result | Boolean | true - 成功,false - 失败 |
| code | Integer | 状态码,200 表示成功 |
| message | String | 返回描述信息 |
| data | Object | 返回数据,详见下表 |
data 结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| taskId | String | 发票任务ID,后续查询及回调识别用 |
| pdfUrl | String | PDF版式文件下载地址(仅开票成功后立即返回,否则为空,需等待回调) |
| ofdUrl | String | OFD版式文件下载地址(同上) |
| xmlUrl | String | XML结构化数据下载地址(同上) |
响应示例
{
"result": true,
"code": 200,
"message": "成功",
"data": {
"taskId": "123456789",
"pdfUrl": "https://example.com/invoice/123.pdf",
"ofdUrl": "https://example.com/invoice/123.ofd",
"xmlUrl": "https://example.com/invoice/123.xml"
}
}
6.2 发票详情接口
根据开票申请返回的 taskId 查询发票最新状态及下载链接。
接口地址:POST https://api.kuaidi100.com/apisentback/invoice/detail
Content-Type:application/x-www-form-urlencoded
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | 客户授权 key |
| sign | String | 是 | 32位大写签名 |
| t | String | 是 | 时间戳 |
| param | String | 是 | 业务参数,JSON格式字符串,结构见下表 |
param 参数结构
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| taskId | String | 是 | 发票任务ID |
请求示例
POST /invoice/detail
Content-Type: application/x-www-form-urlencoded
key=your_key&sign=sign_value&t=1747200000¶m={"taskId":"123456789"}
响应参数
| 字段名 | 类型 | 说明 |
|---|---|---|
| result | Boolean | true - 成功,false - 失败 |
| code | Integer | 状态码,200 表示成功 |
| message | String | 返回描述信息 |
| data | Object | 发票详情,结构见下表 |
data 结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| taskId | String | 发票任务ID |
| pdfUrl | String | PDF下载地址 |
| ofdUrl | String | OFD下载地址 |
| xmlUrl | String | XML下载地址 |
| status | Integer | 开票状态:0 - 开票中,1 - 已开票,2 - 开票失败 |
| failReason | String | 失败原因(仅在 status=2 时返回) |
| invoiceAmount | String | 发票金额(单位:元) |
| title | String | 发票抬头 |
| titleType | Integer | 抬头类型:1 - 企业,2 - 个人/非企业 |
| taxNo | String | 企业税号(企业抬头时返回) |
| remark | String | 备注 |
| invoiceType | Integer | 发票类型:1 - 电子普通发票,2 - 增值税专用发票 |
响应示例
{
"result": true,
"code": 200,
"message": "成功",
"data": {
"taskId": "123456789",
"pdfUrl": "https://example.com/invoice/123.pdf",
"ofdUrl": "https://example.com/invoice/123.ofd",
"xmlUrl": "https://example.com/invoice/123.xml",
"status": 1,
"invoiceAmount": "100.00",
"title": "测试企业",
"titleType": 1,
"taxNo": "91110000MA00XXXXXX",
"remark": "测试开票",
"invoiceType": 1
}
}
6.3 发票状态回调
当您提交开票申请时指定了 callbackUrl,平台将在开票状态变更(开票成功、开票失败)时,以 HTTP POST 方式主动向该地址推送通知。
推送方式:POST
Content-Type:application/x-www-form-urlencoded
回调参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| taskId | String | 是 | 发票任务ID |
| sign | String | 是 | 签名,值为 param 参数的 MD5 值(用于校验回调合法性),即MD5(param) |
| param | String | 是 | 回调数据,JSON格式字符串,内容见下表 |
param 参数结构
| 字段名 | 类型 | 说明 |
|---|---|---|
| taskId | String | 发票任务ID |
| status | Integer | 发票状态:0 - 开票中,1 - 已开票,2 - 开票失败 |
| pdfUrl | String | PDF下载地址(status=1 时返回) |
| ofdUrl | String | OFD下载地址 |
| xmlUrl | String | XML下载地址 |
| failReason | String | 失败原因(status=2 时返回) |
回调请求示例
POST https://your-domain.com/callback
Content-Type: application/x-www-form-urlencoded
param={"taskId":"123456789","status":1,"pdfUrl":"https://example.com/invoice/123.pdf","ofdUrl":"https://example.com/invoice/123.ofd","xmlUrl":"https://example.com/invoice/123.xml"}&sign=md5_hash_value&taskId=123456789
您需返回的响应
接收到回调后,请返回以下 JSON,告知平台已成功接收。
{
"result": true,
"code": 200,
"message": "成功"
}
| 字段名 | 类型 | 说明 |
|---|---|---|
| result | Boolean | 必须返回 true,表示接收成功 |
| code | Integer | 状态码,建议返回 200 |
| message | String | 返回消息 |
重试机制:若您返回的 result 不为 true 或 HTTP 状态码非 200,系统会在 5分钟 后重试,最多重试 3次。
七、 附录
7.1 全局状态码说明
| 状态码 | 信息内容描述 | 原因及建议处理方式 |
|---|---|---|
| 200 | 提交成功 | 请求已成功处理 |
| 400 | 参数错误 | 请根据技术文档检查参数类型、格式及必填性 |
| 500 | 服务器错误 | 快递100服务器出现临时性异常;若持续出现,请检查请求参数是否合法(如快递公司编码错误) |
| 501 | 重复提交 | 同一请求已在处理中,请勿重复提交 |
| 503 | 验证签名失败 | 请检查加密方式:按param + t + key + secret顺序进行MD5加密,加密后字符串转大写,不要加“+”号 |
| 600 | 您不是合法的用户 | 授权Key错误或账户无可用余额,需要充值 |
| 601 | KEY已过期 | 账户余额不足,需要充值 |
| 700 | 错误的回调地址 | 检查回调地址是否可公网访问,或联系快递100工作人员 |
7.2 快递公司编码(常用示例)
| 快递公司 | 编码 |
|---|---|
| 圆通速递 | yuantong |
| 申通快递 | shentong |
| 中通快递 | zhongtong |
| 韵达快递 | yunda |
| 京东快递 | jd |
| 顺丰速运 | shunfeng |
更多编码见快递100官网:https://api.kuaidi100.com/manager/v2/express-company