快递公司单号查询接口编码说明

发布时间:2016-08-21 19:43:32   来源:文档文库   
字号:

快递公司编码说明

以下是快递鸟API接口对外开放的部分快递公司编码的列表,接口需要指定快递单号的快递公司编码,格式不对或则编码错误都会返失败的信息。如:EMS物流单号应选择快递公司编码(EMS)德邦物流单号应选择快递公司编码(DBL天天快递物流单号应选择快递公司编码(HHTT圆通速递物流单号应选择快递公司编码(YTO中通速递快递物流单号应选择快递公司编码(ZTO亚马逊物流单号应选择快递公司编码(AMAZON、顺丰物流单号应选择快递公司编码(SF百世快运物流单号应选择快递公司编码(BTWL宅急送物流单号应选择快递公司编码(ZJS。适用于即时查询API接口订阅推送API接口如果在下面没有找到您所要的快递公司,请添加快递鸟全球物流接口QQ群:200121393 在群共享文件下载

国内快递查询接口编码

国际快递查询接口

转运查询接口

快递查询接口应用场景

查询订单的物流信息

可实现需求

1. App中直接集成实现快递物流信息查询Api接口

2. 在微信公众号中,根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递Api接口,实现自动查询的功能

3. 等等

申请Key

http://www.kdniao.com/ServiceApply.aspx

按照你的信息,依次把信息填写完整,点击提交申请即可。

登录成功后,就可以看到IDkey等信息,有这些信息就可以请求查询等其他的接口Api

快递查询Api接口

接口文档及各开发语言Demo

http://www.kdniao.com/download

查询Api接口定义

系统级输入参数

应用级输入参数

返回结果参数

物流轨迹详情

请求JSON参数

{

"OrderCode" : "",

"ShipperCode" : "SF",

"LogisticCode" : "118650888018"

}

1

2

3

4

5

6

响应JSON参数

{

"EBusinessID" : "1109259",

"OrderCode" : "",

"ShipperCode" : "SF",

"LogisticCode" : "118461988807",

"Success" : true,

"State" : 3,

"Reason" : null,

"traces" : [{

"AcceptTime" : "2014/06/25 08:05:37",

"AcceptStation" : "正在派件..(派件人:邓裕富,电话:187********)[深圳 ]",

"Remark" : null

}, {

"AcceptTime" : "2014/06/25 04:01:28",

"AcceptStation" : "快件在 深圳集散中心 ,准备送往下一站 深圳 [深圳市]",

"Remark" : null

}, {

"AcceptTime" : "2014/06/25 01:41:06",

"AcceptStation" : "快件在 深圳集散中心 [深圳市]",

"Remark" : null

}, {

"AcceptTime" : "2014/06/24 20:18:58",

"AcceptStation" : "已收件[深圳市]",

"Remark" : null

}, {

"AcceptTime" : "2014/06/24 20:55:28",

"AcceptStation" : "快件在 深圳 ,准备送往下一站 深圳集散中心 [深圳市]",

"Remark" : null

}, {

"AcceptTime" : "2014/06/25 10:23:03",

"AcceptStation" : "派件已签收[深圳市]",

"Remark" : null

}, {

"AcceptTime" : "2014/06/25 10:23:03",

"AcceptStation" : "签收人是:已签收[深圳市]",

"Remark" : null

}

]

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

查询Api接口使用

Java开发语言为例,进行展开

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.security.MessageDigest;

import java.util.HashMap;

import java.util.Map;

/**

*

* 快递鸟物流轨迹即时查询接口

*

* @技术QQ: 456320272

* @see: http://www.kdniao.com/YundanChaxunAPI.aspx

* @copyright: 深圳市快金数据技术服务有限公司

*

* DEMO中的电商ID与私钥仅限测试使用,正式环境请单独注册账号

* 单日超过500单查询量,建议接入我方物流轨迹订阅推送接口

*

* IDKey请到官网申请:http://www.kdniao.com/ServiceApply.aspx

*/

public class KdniaoTrackQueryAPI {

//DEMO

public static void main(String[] args) {

KdniaoTrackQueryAPI api = new KdniaoTrackQueryAPI();

try {

String result = api.getOrderTracesByJson("ANE", "210001633605");

System.out.print(result);

} catch (Exception e) {

e.printStackTrace();

}

}

//电商ID

private String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";

//请求url

private String ReqURL="http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";

/**

* Json方式 查询订单物流轨迹

* @throws Exception

*/

public String getOrderTracesByJson(String expCode, String expNo) throws Exception{

String requestData= "{'OrderCode':'','ShipperCode':'" + expCode + "','LogisticCode':'" + expNo + "'}";

Map params = new HashMap();

params.put("RequestData", urlEncoder(requestData, "UTF-8"));

params.put("EBusinessID", EBusinessID);

params.put("RequestType", "1002");

String dataSign=encrypt(requestData, AppKey, "UTF-8");

params.put("DataSign", urlEncoder(dataSign, "UTF-8"));

params.put("DataType", "2");

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息......

return result;

}

/**

* XML方式 查询订单物流轨迹

* @throws Exception

*/

public String getOrderTracesByXml() throws Exception{

String requestData= ""+

""+

""+

"SF"+

"589707398027"+

"";

Map params = new HashMap();

params.put("RequestData", urlEncoder(requestData, "UTF-8"));

params.put("EBusinessID", EBusinessID);

params.put("RequestType", "1002");

String dataSign=encrypt(requestData, AppKey, "UTF-8");

params.put("DataSign", urlEncoder(dataSign, "UTF-8"));

params.put("DataType", "1");

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息......

return result;

}

/**

* MD5加密

* @param str 内容

* @param charset 编码方式

* @throws Exception

*/

@SuppressWarnings("unused")

private String MD5(String str, String charset) throws Exception {

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(str.getBytes(charset));

byte[] result = md.digest();

StringBuffer sb = new StringBuffer(32);

for (int i = 0; i < result.length; i++) {

int val = result[i] & 0xff;

if (val <= 0xf) {

sb.append("0");

}

sb.append(Integer.toHexString(val));

}

return sb.toString().toLowerCase();

}

/**

* base64编码

* @param str 内容

* @param charset 编码方式

* @throws UnsupportedEncodingException

*/

private String base64(String str, String charset) throws UnsupportedEncodingException{

String encoded = base64Encode(str.getBytes(charset));

return encoded;

}

@SuppressWarnings("unused")

private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{

String result = URLEncoder.encode(str, charset);

return result;

}

/**

* 电商Sign签名生成

* @param content 内容

* @param keyValue Appkey

* @param charset 编码方式

* @throws UnsupportedEncodingException ,Exception

* @return DataSign签名

*/

@SuppressWarnings("unused")

private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception

{

if (keyValue != null)

{

return base64(MD5(content + keyValue, charset), charset);

}

return base64(MD5(content, charset), charset);

}

/**

* 向指定 URL 发送POST方法的请求

* @param url 发送请求的 URL

* @param params 请求的参数集合

* @return 远程资源的响应结果

*/

@SuppressWarnings("unused")

private String sendPost(String url, Map params) {

OutputStreamWriter out = null;

BufferedReader in = null;

StringBuilder result = new StringBuilder();

try {

URL realUrl = new URL(url);

HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// POST方法

conn.setRequestMethod("POST");

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.connect();

// 获取URLConnection对象对应的输出流

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

// 发送请求参数

if (params != null) {

StringBuilder param = new StringBuilder();

for (Map.Entry entry : params.entrySet()) {

if(param.length()>0){

param.append("&");

}

param.append(entry.getKey());

param.append("=");

param.append(entry.getValue());

//System.out.println(entry.getKey()+":"+entry.getValue());

}

//System.out.println("param:"+param.toString());

out.write(param.toString());

}

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line;

while ((line = in.readLine()) != null) {

result.append(line);

}

} catch (Exception e) {

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result.toString();

}

private static char[] base64EncodeChars = new char[] {

'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',

'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',

'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',

'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',

'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',

'o', 'p', 'q', 'r', 's', 't', 'u', 'v',

'w', 'x', 'y', 'z', '0', '1', '2', '3',

'4', '5', '6', '7', '8', '9', '+', '/' };

public static String base64Encode(byte[] data) {

StringBuffer sb = new StringBuffer();

int len = data.length;

int i = 0;

int b1, b2, b3;

while (i < len) {

b1 = data[i++] & 0xff;

if (i == len)

{

sb.append(base64EncodeChars[b1 >>> 2]);

sb.append(base64EncodeChars[(b1 & 0x3) << 4]);

sb.append("==");

break;

}

b2 = data[i++] & 0xff;

if (i == len)

{

sb.append(base64EncodeChars[b1 >>> 2]);

sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);

sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);

sb.append("=");

break;

}

b3 = data[i++] & 0xff;

sb.append(base64EncodeChars[b1 >>> 2]);

sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);

sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);

sb.append(base64EncodeChars[b3 & 0x3f]);

}

return sb.toString();

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

其他Api接口,请转到快递鸟具体查看相关文档。

温馨提示

如你的产品需对接或集成快递接口,快递鸟是不错的选择;会给您提供专业的技术支持人员;查询次数不限,并永久免费。

在线下单接口编码

电子面单接口公司编码

电子面单接口定义及说明

Request Params

Api接口:http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx 
请求方式:POST 
编码:UTF-8

系统级参数(公共参数)

备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)。

接口参数

Response Params

Java栗子

注:此栗子仅供参考,如要使用请到官方下载对应语言的Demo即可。

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import java.security.MessageDigest;

/**

*

* 快递鸟电子面单接口

*

* @技术QQ: 4009633321

* @技术QQ: 200121393

* @see: http://www.kdniao.com/MiandanAPI.aspx

* @copyright: 深圳市快金数据技术服务有限公司

*

* IDKey请到官网申请:http://www.kdniao.com/ServiceApply.aspx

*/

public class KdGoldAPIDemo {

//电商ID

private String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";

//请求url, 正式环境地址:http://api.kdniao.cc/api/Eorderservice

private String ReqURL="http://testapi.kdniao.cc:8081/api/Eorderservice";

/**

* Json方式 电子面单

* @throws Exception

*/

public String orderOnlineByJson() throws Exception{

String requestData= "{'OrderCode': '012657700387'," +

"'ShipperCode':'EMS'," +

"'PayType':1," +

"'ExpType':1," +

"'Cost':1.0," +

"'OtherCost':1.0," +

"'Sender':" +

"{" +

"'Company':'LV','Name':'Taylor','Mobile':'150********','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73'}," +

"'Receiver':" +

"{" +

"'Company':'GCCUI','Name':'Yann','Mobile':'150********','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'}," +

"'Commodity':" +

"[{" +

"'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}]," +

"'Weight':1.0," +

"'Quantity':1," +

"'Volume':0.0," +

"'Remark':'小心轻放'," +

"'IsReturnPrintTemplate':1}";

Map params = new HashMap();

params.put("RequestData", urlEncoder(requestData, "UTF-8"));

params.put("EBusinessID", EBusinessID);

params.put("RequestType", "1007");

String dataSign=encrypt(requestData, AppKey, "UTF-8");

params.put("DataSign", urlEncoder(dataSign, "UTF-8"));

params.put("DataType", "2");

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息......

return result;

}

/**

* MD5加密

* @param str 内容

* @param charset 编码方式

* @throws Exception

*/

@SuppressWarnings("unused")

private String MD5(String str, String charset) throws Exception {

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(str.getBytes(charset));

byte[] result = md.digest();

StringBuffer sb = new StringBuffer(32);

for (int i = 0; i < result.length; i++) {

int val = result[i] & 0xff;

if (val <= 0xf) {

sb.append("0");

}

sb.append(Integer.toHexString(val));

}

return sb.toString().toLowerCase();

}

/**

* base64编码

* @param str 内容

* @param charset 编码方式

* @throws UnsupportedEncodingException

*/

private String base64(String str, String charset) throws UnsupportedEncodingException{

String encoded = Base64.encode(str.getBytes(charset));

return encoded;

}

@SuppressWarnings("unused")

private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{

String result = URLEncoder.encode(str, charset);

return result;

}

/**

* 电商Sign签名生成

* @param content 内容

* @param keyValue Appkey

* @param charset 编码方式

* @throws UnsupportedEncodingException ,Exception

* @return DataSign签名

*/

@SuppressWarnings("unused")

private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception

{

if (keyValue != null)

{

return base64(MD5(content + keyValue, charset), charset);

}

return base64(MD5(content, charset), charset);

}

/**

* 向指定 URL 发送POST方法的请求

* @param url 发送请求的 URL

* @param params 请求的参数集合

* @return 远程资源的响应结果

*/

@SuppressWarnings("unused")

private String sendPost(String url, Map params) {

OutputStreamWriter out = null;

BufferedReader in = null;

StringBuilder result = new StringBuilder();

try {

URL realUrl = new URL(url);

HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// POST方法

conn.setRequestMethod("POST");

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.connect();

// 获取URLConnection对象对应的输出流

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

// 发送请求参数

if (params != null) {

StringBuilder param = new StringBuilder();

for (Map.Entry entry : params.entrySet()) {

if(param.length()>0){

param.append("&");

}

param.append(entry.getKey());

param.append("=");

param.append(entry.getValue());

System.out.println(entry.getKey()+":"+entry.getValue());

}

System.out.println("param:"+param.toString());

out.write(param.toString());

}

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line;

while ((line = in.readLine()) != null) {

result.append(line);

}

} catch (Exception e) {

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result.toString();

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

其他Api接口,请转到快递鸟具体查看相关文档。

代收货款(COD货到付款公司编码

代收货款或货到付款接口对接及使用

快递鸟

快递鸟货款金融服务基于下线在单、电子面单服务上,为用户提供货款金融服务,如代收货款、垫付(即将上线)等货款服务,方便用户在接入快递鸟服务后,能享受更优质的、更专业、更安全的货款服务,为用户的生意保驾护航。

使用用户

主要为非淘系用户服务。如行业ERPB2BB2C电商平台、电商网站、仓储、清关公司、电商ERP等。

申请流程

申请账号获得IDKEY—技术对接(在线下单接口/电子面单接口)向快递网点申请账号联调使用。

收费标准

代收货款对接及使用

基于电子面单接口的接入方式

1. 订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码。

2. 接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8)”application/x-www-form-urlencoded;charset=utf-8”

3. API测试地址:http://testapi.kdniao.cc:8081/api/EOrderService

4. API正式地址:http://api.kdniao.cc/api/EOrderService

5. 请求系统级参数说明 
 
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional

6. JAVA接入demo

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import java.security.MessageDigest;

/**

*

1. 快递鸟电子面单接口

2. IDKey请到官网申请:http://www.kdniao.com/ServiceApply.aspx

*/

public class KdGoldAPIDemo {

//电商ID

private String EBusinessID="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

private String AppKey="请到快递鸟官网申请http://www.kdniao.com/ServiceApply.aspx";

//请求url, 正式环境地址:http://api.kdniao.cc/api/Eorderservice

private String ReqURL="http://testapi.kdniao.cc:8081/api/Eorderservice";

/**

* Json方式 电子面单

* @throws Exception

*/

public String orderOnlineByJson() throws Exception{

String requestData= "{'OrderCode': '012657700387'," +

"'ShipperCode':'EMS'," +

"'PayType':1," +

"'ExpType':1," +

"'Cost':1.0," +

"'OtherCost':1.0," +

"'Sender':" +

"{" +

"'Company':'LV','Name':'Taylor','Mobile':'150********','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73'}," +

"'Receiver':" +

"{" +

"'Company':'GCCUI','Name':'Yann','Mobile':'150********','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'}," +

"'Commodity':" +

"[{" +

"'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}]," +

"'Weight':1.0," +

"'Quantity':1," +

"'Volume':0.0," +

"'Remark':'小心轻放'," +

"'IsReturnPrintTemplate':1}";

Map params = new HashMap();

params.put("RequestData", urlEncoder(requestData, "UTF-8"));

params.put("EBusinessID", EBusinessID);

params.put("RequestType", "1007");

String dataSign=encrypt(requestData, AppKey, "UTF-8");

params.put("DataSign", urlEncoder(dataSign, "UTF-8"));

params.put("DataType", "2");

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息......

return result;

}

/**

* MD5加密

* @param str 内容

* @param charset 编码方式

* @throws Exception

*/

@SuppressWarnings("unused")

private String MD5(String str, String charset) throws Exception {

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(str.getBytes(charset));

byte[] result = md.digest();

StringBuffer sb = new StringBuffer(32);

for (int i = 0; i < result.length; i++) {

int val = result[i] & 0xff;

if (val <= 0xf) {

sb.append("0");

}

sb.append(Integer.toHexString(val));

}

return sb.toString().toLowerCase();

}

/**

* base64编码

* @param str 内容

* @param charset 编码方式

* @throws UnsupportedEncodingException

*/

private String base64(String str, String charset) throws UnsupportedEncodingException{

String encoded = Base64.encode(str.getBytes(charset));

return encoded;

}

@SuppressWarnings("unused")

private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{

String result = URLEncoder.encode(str, charset);

return result;

}

/**

* 电商Sign签名生成

* @param content 内容

* @param keyValue Appkey

* @param charset 编码方式

* @throws UnsupportedEncodingException ,Exception

* @return DataSign签名

*/

@SuppressWarnings("unused")

private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception

{

if (keyValue != null)

{

return base64(MD5(content + keyValue, charset), charset);

}

return base64(MD5(content, charset), charset);

}

/**

* 向指定 URL 发送POST方法的请求

* @param url 发送请求的 URL

* @param params 请求的参数集合

* @return 远程资源的响应结果

*/

@SuppressWarnings("unused")

private String sendPost(String url, Map params) {

OutputStreamWriter out = null;

BufferedReader in = null;

StringBuilder result = new StringBuilder();

try {

URL realUrl = new URL(url);

HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// POST方法

conn.setRequestMethod("POST");

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.connect();

// 获取URLConnection对象对应的输出流

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

// 发送请求参数

if (params != null) {

StringBuilder param = new StringBuilder();

for (Map.Entry entry : params.entrySet()) {

if(param.length()>0){

param.append("&");

}

param.append(entry.getKey());

param.append("=");

param.append(entry.getValue());

System.out.println(entry.getKey()+":"+entry.getValue());

}

System.out.println("param:"+param.toString());

out.write(param.toString());

}

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line;

while ((line = in.readLine()) != null) {

result.append(line);

}

} catch (Exception e) {

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result.toString();

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

基于在线下单接口的接入方式

1. 订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码。

2. 接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8)”application/x-www-form-urlencoded;charset=utf-8”

3. API测试地址:http://testapi.kdniao.cc:8081/api/OOrderService

4. API正式地址:http://api.kdniao.cc/api/OOrderService

5. 请求系统级参数说明 
 
备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一定条件下可选(Conditional)。

6. JAVA接入demo

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;

import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

import java.security.MessageDigest;

public class KdGoldAPIDemo {

//电商ID

private String EBusinessID="1237100";

//电商加密私钥,快递鸟提供,注意保管,不要泄漏

private String AppKey="518a73d8-1f7f-441a-b644-33e77b49d846";

//请求url

private String ReqURL="http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";

/**

* Json方式 在线下单

* @throws Exception

*/

public String orderOnlineByJson() throws Exception{

String requestData= "{'LogisticsWeight':2.0,"+

"'LogisticsVol':2.0,"+

"'HQPOrderDesc':'尽快上门收件',"+

"'HQPPayType':1,"+

"'IsNeedPay':2,"+

"'Payment':121.0,"+

"'OrderCode':'test_1234567890',"+

"'StartDate':'2015-05-13 21:20:53',"+

"'EndDate':'2015-05-14 21:20:53',"+

"'ShipperCode':'LB',"+

"'LogisticCode':'109932607391',"+

"'ToCompany':'华为科技',"+

"'ToName':'张三',"+

"'ToAddressArea':'深圳市南山区桂庙路555',"+

"'ToTel':'',"+

"'ToMobile':'138********',"+

"'OrderType':2,"+

"'ToPostCode':'518128',"+

"'ToProvinceID':'广东省',"+

"'ToCityID':'深圳市',"+

"'ToExpAreaID':'南山区',"+

"'FromCompany':'小米科技',"+

"'FromName':'李四',"+

"'FromAddressArea':'深圳市福田区华强北路222',"+

"'FromTel':'88888888',"+

"'FromMobile':'',"+

"'FromPostCode':'529800',"+

"'FromProvinceID':'广东省',"+

"'FromCityID':'深圳市',"+

"'FromExpAreaID':'福田区',"+

"'Cost':21.0,"+

"'OtherCost':2.0,"+

"'Commoditys':"+

"[{"+

"'Goodsquantity':12,"+

"'GoodsName':'手机屏幕',"+

"'GoodsCode':'kjyhu878787',"+

"'GoodsPrice':121.0,"+

"}]}";

Map params = new HashMap();

params.put("RequestData", urlEncoder(requestData, "UTF-8"));

params.put("EBusinessID", EBusinessID);

params.put("RequestType", "1001");

String dataSign=encrypt(requestData, AppKey, "UTF-8");

params.put("DataSign", urlEncoder(dataSign, "UTF-8"));

params.put("DataType", "2");

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息......

return result;

}

/**

* XML方式 在线下单

* @throws Exception

*/

public String orderOnlineByXml() throws Exception{

String requestData= ""+

""+

"1.5"+

"test_123456789"+

"0.5"+

"测试在线下单接口 20150510"+

"1"+

"1"+

"1000"+

"1"+

"2015-05-10 19:36:50"+

"2015-05-11 19:36:50"+

"LB"+

""+

"张三"+

"深圳市南山区南新路2055"+

""+

"138********"+

""+

"广东省"+

"深圳市"+

"南山区"+

"快递鸟科技"+

"李四"+

"深圳市福田区华强北路211"+

""+

"138********"+

""+

"广东省"+

"深圳市"+

"福田区"+

"12"+

"1"+

""+

""+

"惠普显示器"+

"ABCD_123456789"+

"2"+

"850"+

""+

""+

"神州笔记本"+

"QWERT_456456"+

"2"+

"4200"+

""+

""+

"";

Map params = new HashMap();

params.put("RequestData", urlEncoder(requestData, "UTF-8"));

params.put("EBusinessID", EBusinessID);

params.put("RequestType", "1001");

String dataSign=encrypt(requestData, AppKey, "UTF-8");

params.put("DataSign", urlEncoder(dataSign, "UTF-8"));

params.put("DataType", "1");

String result=sendPost(ReqURL, params);

//根据公司业务处理返回的信息......

return result;

}

/**

* MD5加密

* @param str 内容

* @param charset 编码方式

* @throws Exception

*/

@SuppressWarnings("unused")

private String MD5(String str, String charset) throws Exception {

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(str.getBytes(charset));

byte[] result = md.digest();

StringBuffer sb = new StringBuffer(32);

for (int i = 0; i < result.length; i++) {

int val = result[i] & 0xff;

if (val <= 0xf) {

sb.append("0");

}

sb.append(Integer.toHexString(val));

}

return sb.toString().toLowerCase();

}

/**

* base64编码

* @param str 内容

* @param charset 编码方式

* @throws UnsupportedEncodingException

*/

private String base64(String str, String charset) throws UnsupportedEncodingException{

String encoded = Base64.encode(str.getBytes(charset));

return encoded;

}

@SuppressWarnings("unused")

private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{

String result = URLEncoder.encode(str, charset);

return result;

}

/**

* 电商Sign签名生成

* @param content 内容

* @param keyValue Appkey

* @param charset 编码方式

* @throws UnsupportedEncodingException ,Exception

* @return DataSign签名

*/

@SuppressWarnings("unused")

private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception

{

if (keyValue != null)

{

return base64(MD5(content + keyValue, charset), charset);

}

return base64(MD5(content, charset), charset);

}

/**

* 向指定 URL 发送POST方法的请求

* @param url 发送请求的 URL

* @param params 请求的参数集合

* @return 远程资源的响应结果

*/

@SuppressWarnings("unused")

private String sendPost(String url, Map params) {

OutputStreamWriter out = null;

BufferedReader in = null;

StringBuilder result = new StringBuilder();

try {

URL realUrl = new URL(url);

HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();

// 发送POST请求必须设置如下两行

conn.setDoOutput(true);

conn.setDoInput(true);

// POST方法

conn.setRequestMethod("POST");

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

conn.connect();

// 获取URLConnection对象对应的输出流

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

// 发送请求参数

if (params != null) {

StringBuilder param = new StringBuilder();

for (Map.Entry entry : params.entrySet()) {

if(param.length()>0){

param.append("&");

}

param.append(entry.getKey());

param.append("=");

param.append(entry.getValue());

System.out.println(entry.getKey()+":"+entry.getValue());

}

System.out.println("param:"+param.toString());

out.write(param.toString());

}

// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line;

while ((line = in.readLine()) != null) {

result.append(line);

}

} catch (Exception e) {

e.printStackTrace();

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException ex){

ex.printStackTrace();

}

}

return result.toString();

}

}

智选物流接口定义

接口规则

接口申请地址(申请后可立即对接)

请求方式:POST 
数据格式:JSON 
数据编码:UTF-8 
持增值服务,保价、代收货款、货款直退、货款垫付等

测试(开发)地址: http://112.74.112.208:8085/api/exrecommend/ 
正式(生产)地址:http://api.kdniao.cc/api/exrecommend/

系统级请求参数

应用级请求参数

响应参数

其他Api接口,请转到快递鸟具体查看相关文档

本文来源:https://www.2haoxitong.net/k/doc/de39716a83d049649a665812.html

《快递公司单号查询接口编码说明.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式