C端快递寄件功能支持德邦、京东、顺丰、中通、顺心捷达、百世的下单。该接口提供运力查询、快递下单、取消功能,请先调用运力查询接口查询对应地址支持的快递,再选择快递公司进行下单,快递费用需要您与快递员或者快递公司进行结算。
无参数
无参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
secret_key | string | true | 用户授权key |
secret_code | string | true | 接口编号 |
secret_sign | string | true | 加密签名:md5(secret_key+secret_secret)转大写 |
com | string | true | 快递公司的编码,一律用小写字母,见《快递公司编码》 |
recManName | string | true | 收件人姓名 |
recManMobile | string | true | 收件人的手机号,手机号和电话号二者其一必填 |
recManPrintAddr | string | true | 收件人所在完整地址,包含省、市、区、街道等 |
sendManName | string | true | 寄件人姓名 |
sendManMobile | string | true | 寄件人的手机号,手机号和电话号二者其一必填 |
sendManPrintAddr | string | true | 寄件人所在的完整地址,包含省、市、区、街道等 |
cargo | string | true | 物品名称,例:文件 |
weight | string | false | 物品总重量KG,不需带单位,例:1.5 |
remark | string | false | 备注 |
salt | string | false | 签名用随机字符串 |
callBackUrl | string | true | 订单信息回调,回调具体说明请见产品详情 |
payment | string | false | 支付方式,SHIPPER: 寄付(默认),CONSIGNEE: 到付 |
dayType | string | false | 预约日期,例如:今天/明天/后天 |
pickupStartTime | string | false | 预约起始时间(HH:mm),例如:09:00 |
pickupEndTime | string | false | 预约截止时间(HH:mm),例如:10:00 |
expType | string | false | 产品类型 |
curl http://cloud.kuaidi100.com/api -X POST -d \
"secret_key=***&secret_code=ddffadd3df4b4c0d8d6f9942c7a8c990&secret_sign=md5(***)&com=&recManName=&recManMobile=&recManPrintAddr=&sendManName=&sendManMobile=&sendManPrintAddr=&cargo=&weight=&remark=&salt=&callBackUrl=&payment=&dayType=&pickupStartTime=&pickupEndTime=&expType="
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
public class CloudDemo {
public static void main (String[] args) {
CloudDemo cloudDemo = new CloudDemo();
Map params = new HashMap();
params.put("secret_key", "***");
params.put("secret_code", "ddffadd3df4b4c0d8d6f9942c7a8c990");
params.put("secret_sign", "md5(***)");
params.put("com", "");
params.put("recManName", "");
params.put("recManMobile", "");
params.put("recManPrintAddr", "");
params.put("sendManName", "");
params.put("sendManMobile", "");
params.put("sendManPrintAddr", "");
params.put("cargo", "");
params.put("weight", "");
params.put("remark", "");
params.put("salt", "");
params.put("callBackUrl", "");
params.put("payment", "");
params.put("dayType", "");
params.put("pickupStartTime", "");
params.put("pickupEndTime", "");
params.put("expType", "");
cloudDemo.post(params);
}
public String post(Map params) {
StringBuilder response = new StringBuilder("");
BufferedReader reader = null;
try {
StringBuilder builder = new StringBuilder();
for (Map.Entry param : params.entrySet()) {
if (builder.length() > 0) {
builder.append('&');
}
builder.append(URLEncoder.encode(param.getKey(), "UTF-8"));
builder.append('=');
builder.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
byte[] bytes = builder.toString().getBytes("UTF-8");
URL url = new URL("http://cloud.kuaidi100.com/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setRequestMethod("POST");
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(bytes.length));
conn.setDoOutput(true);
conn.getOutputStream().write(bytes);
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line = "";
while ((line = reader.readLine()) != null) {
response.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != reader) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return response.toString();
}
}
class MD5Utils { private static MessageDigest mdigest = null;
private static char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static MessageDigest getMdInst() {
if (null == mdigest) {
try {
mdigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
return mdigest;
}
public static String encode(String s) {
if(null == s) {
return "";
}
try { byte[] bytes = s.getBytes();
getMdInst().update(bytes);
byte[] md = getMdInst().digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for(int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = digits[byte0 >>> 4 & 0xf];
str[k++] = digits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
暂无示例
<?php
$params = "";
$params .= 'secret_key=***'.'&';
$params .= 'secret_code=ddffadd3df4b4c0d8d6f9942c7a8c990'.'&';
$params .= 'secret_sign=md5(***)'.'&';
$params .= 'com='.'&';
$params .= 'recManName='.'&';
$params .= 'recManMobile='.'&';
$params .= 'recManPrintAddr='.'&';
$params .= 'sendManName='.'&';
$params .= 'sendManMobile='.'&';
$params .= 'sendManPrintAddr='.'&';
$params .= 'cargo='.'&';
$params .= 'weight='.'&';
$params .= 'remark='.'&';
$params .= 'salt='.'&';
$params .= 'callBackUrl='.'&';
$params .= 'payment='.'&';
$params .= 'dayType='.'&';
$params .= 'pickupStartTime='.'&';
$params .= 'pickupEndTime='.'&';
$params .= 'expType='.'&';
$params .= substr($params, 0, -1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'http://cloud.kuaidi100.com/api');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
echo $result;
?>
# coding = utf-8
import sys,os
import requests,json,hashlib
params = {}
params['secret_key'] = '***'
params['secret_code'] = 'ddffadd3df4b4c0d8d6f9942c7a8c990'
params['secret_sign'] = 'md5(***)'
params['com'] = ''
params['recManName'] = ''
params['recManMobile'] = ''
params['recManPrintAddr'] = ''
params['sendManName'] = ''
params['sendManMobile'] = ''
params['sendManPrintAddr'] = ''
params['cargo'] = ''
params['weight'] = ''
params['remark'] = ''
params['salt'] = ''
params['callBackUrl'] = ''
params['payment'] = ''
params['dayType'] = ''
params['pickupStartTime'] = ''
params['pickupEndTime'] = ''
params['expType'] = ''
result = requests.post('http://cloud.kuaidi100.com/api', params)
print(result.text)
无参数
{
"code":200, //响应码
"message":"success", //响应结果描述
"data":{ //响应数据
"taskId”:“1234567" //任务id
"orderId”:“1234567" //快递100返回给您的平台订单id
}
}
{
"code":500, //响应码
}
状态码 | 状态码信息 | 描述 |
---|---|---|
200 | 成功 | |
20008 | 重复提交 | |
20010 | 下单失败(具体原因) | 德邦营业时间9:00-18:00;京东营业时间9:00-21:00;顺丰速运营业时间8:30-21:30。超出营业时间会返回20010 |
20009 | 回调地址错误 | |
-1 | 系统繁忙,请稍后重试 | |
10001 | 参数错误 |
无参数
无参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
secret_key | string | true | 用户授权key |
secret_code | string | true | 接口编号 |
secret_sign | string | true | 加密签名:md5(secret_key+secret_secret)转大写 |
taskId | string | true | 任务ID |
orderId | string | true | 订单ID |
cancelMsg | string | true | 取消原因 |
curl http://cloud.kuaidi100.com/api -X POST -d \
"secret_key=***&secret_code=bcb0428c1dd84aca9d6e19ea4dcf683d&secret_sign=md5(***)&taskId=&orderId=&cancelMsg="
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
public class CloudDemo {
public static void main (String[] args) {
CloudDemo cloudDemo = new CloudDemo();
Map params = new HashMap();
params.put("secret_key", "***");
params.put("secret_code", "bcb0428c1dd84aca9d6e19ea4dcf683d");
params.put("secret_sign", "md5(***)");
params.put("taskId", "");
params.put("orderId", "");
params.put("cancelMsg", "");
cloudDemo.post(params);
}
public String post(Map params) {
StringBuilder response = new StringBuilder("");
BufferedReader reader = null;
try {
StringBuilder builder = new StringBuilder();
for (Map.Entry param : params.entrySet()) {
if (builder.length() > 0) {
builder.append('&');
}
builder.append(URLEncoder.encode(param.getKey(), "UTF-8"));
builder.append('=');
builder.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
}
byte[] bytes = builder.toString().getBytes("UTF-8");
URL url = new URL("http://cloud.kuaidi100.com/api");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setRequestMethod("POST");
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(bytes.length));
conn.setDoOutput(true);
conn.getOutputStream().write(bytes);
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line = "";
while ((line = reader.readLine()) != null) {
response.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != reader) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return response.toString();
}
}
class MD5Utils { private static MessageDigest mdigest = null;
private static char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
private static MessageDigest getMdInst() {
if (null == mdigest) {
try {
mdigest = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
return mdigest;
}
public static String encode(String s) {
if(null == s) {
return "";
}
try { byte[] bytes = s.getBytes();
getMdInst().update(bytes);
byte[] md = getMdInst().digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for(int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = digits[byte0 >>> 4 & 0xf];
str[k++] = digits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
暂无示例
<?php
$params = "";
$params .= 'secret_key=***'.'&';
$params .= 'secret_code=bcb0428c1dd84aca9d6e19ea4dcf683d'.'&';
$params .= 'secret_sign=md5(***)'.'&';
$params .= 'taskId='.'&';
$params .= 'orderId='.'&';
$params .= 'cancelMsg='.'&';
$params .= substr($params, 0, -1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'http://cloud.kuaidi100.com/api');
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
echo $result;
?>
# coding = utf-8
import sys,os
import requests,json,hashlib
params = {}
params['secret_key'] = '***'
params['secret_code'] = 'bcb0428c1dd84aca9d6e19ea4dcf683d'
params['secret_sign'] = 'md5(***)'
params['taskId'] = ''
params['orderId'] = ''
params['cancelMsg'] = ''
result = requests.post('http://cloud.kuaidi100.com/api', params)
print(result.text)
无参数
{
"code":200,
"message":"success",
"data":"取消成功"
}
{
"code":400, //响应码
}
状态码 | 状态码信息 | 描述 |
---|---|---|
200 | 成功 |
请先调用运力查询接口查询对应地址支持的快递,再选择快递公司进行下单。
取消订单说明:由于订单同步给快递公司需要时间,如遇下单后取消失败,请隔两分钟后再试。
该接口提供运力查询、快递下单、取消功能,快递费在快递员上门取件时进行结算。
关于到付的问题:优选运力不支持到付,如需到付,请选择官方运力。
运力查询接口、寄件服务接口和取消订单接口默认为10QPS。
回调接口(对应快递寄件接口中的callbackurl)是用来接受订单信息及状态
订单有状态变更是会触发回调,回调后如果没有得到合作方正确返回,会重复回调多2次,即最多回调3次。间隔30分钟。
提供统一格式的HTTP POST,并返回统一格式JSON数据。
请求报头:Content-Type=application/x-www-form-urlencoded;charset=UTF-8
请求参数:
字段 |
类型 |
说明 |
备注 |
taskId |
string |
操作的任务ID |
|
sign |
string |
签名 |
MD5 (param +salt) |
param |
param |
参数主体 |
|
param数据结构:
参数名 |
是否必填 |
类型 |
说明 |
kuaidicom |
是 |
string |
快递公司的编码,一律用小写字母,见《快递公司编码》,选填。 |
kuaidinum |
是 |
string |
快递单号,单号的最大长度是32个字符。 |
status |
是 |
string |
状态码:200(成功)、500(服务器错误) |
message |
是 |
string |
状态描述 |
data |
是 |
data |
订单内容 |
data数据结构:
参数名 |
是否必填 |
类型 |
说明 |
orderId |
是 |
string |
快递100提供的平台订单ID |
status |
是 |
string |
订单状态: 0,'下单成功'(部分快递公司不会返回该状态) 1,'已接单' 2,'收件中' 9,'用户主动取消' 10,'已取件' 11,'揽货失败' 12,'已退回' 13,'已签收' 14,'异常签收' 99,'订单已取消' 101,'在途中' |
courierName |
否 |
string |
快递员姓名 |
courierMobile |
否 |
string |
快递员电话 |
weight |
否 |
string |
重量 |
freight |
否 |
string |
运费 |
字段 |
说明 |
备注 |
result |
提交结果 |
true提交成功,false失败 |
returnCode |
返回编码 |
|
message |
返回报文描述 |
德邦营业时间9:00-18:00;京东营业时间9:00-21:00;顺丰速运营业时间8:30-21:30。超出营业时间会返回“下单失败,超出营业时间” |
{
"result":true,
"returnCode":"200",
"message":"成功"
}
说明:
200: 成功
500: 服务器错误
其他错误请自行定义
result:true表示回调成功,false表示失败,如果提交回调接口的地址失败,30分钟后重新回调,3次仍旧失败的,自动放弃。
其他信息快递100会忽略。
5、快递公司编码
1、德邦营业时间9:00-18:00;京东营业时间9:00-21:00;顺丰速运营业时间8:30-21:30。超出营业时间会返回“下单失败,超出营业时间”
2、快递类型为“优选”的快递公司,取件时间为9:00-21:00点。
快递公司 |
编码 |
快递类型 |
德邦快递 |
debangkuaidi |
官方 |
京东物流 |
jd |
官方 |
顺丰速运 |
shunfeng |
官方 |
中通快递 |
zhongtong |
官方 |
顺丰快运 |
shunfengkuaiyun |
官方 |
顺心捷达 |
sxjdfreight |
官方 |
顺丰冷运 |
shunfenglengyun |
官方 |
百世快运 |
baishiwuliu |
官方 |