




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、免费快递查询接口文档-快递鸟API.报文及报文编码接口提供:快递鸟报文格式:Json格式请求方法的编码格式(utf-8) : application/x-www-form-urlencoded;charset=utf-8交互协议上统一用UTF-8,避免传递中文数据出现乱码。.应用场景(1)电商网站用户打开“我的订单”时调用此API显示物流信息详情。(2)电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题。(3)每日调用次数限制不超过3000次,如超过该限制,可对接物流跟踪API。(4)全流程的物流状态跟踪I住用流程物;无及逑幅以击.关于签名采用IP认证加签名的方式对接,具体
2、方案如下:1)防止数据被篡改在POST请求中会传递 5个必须(R疹数RequestData=数据内容(URL 编码:UTF-8)EBusinessID二期户 IDRequestType= 青求指令类型DataSign=数据内容签名:把(请求内容(未编码)+ApiKey)进彳f MD5加密,然后 Base64编码,最后进行 URL(utf-8)编码DataType=i回数据类型(2-json)注:DataSign生成后,对方接收到数据后,以同样的算法进行签名,生成摘要,对比两者的摘要是否相同,如果不同,说明传递过程中发生数据篡改。2)调用接口的身份认证注册成为接口用户后,会生成对应的用户ID和A
3、PIKey,用户ID相当于用户名,APIKey相当于密码。.接入步骤1)接口网注册账号成为用户;提供的用户ID是调用接口服务的身份证明,不可更改、不可转用,API Key是应用访问 API的签名附加密钥,必须妥善保存。两者关系类似于用户名和密码,两者都会在签名和业务参数中使用。2)登陆用户后台,登陆用户后台, 进行 实名认证, 并 开通会员服务;3)根据技术文档进行开发并在调试平台测试联调;根据技术文档进行开发并在调试平台测试联调;API接口的DEMO(包括:.Net版本、Java版本、PHP版本)供开发参考。4)系统发布上线。系统发布上线。注意:测试环境中获取 的测试快递单号不可用于实际发货
4、。5.Demo.NET开发 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Net;using System.IO;namespace KdGoldAPI public class KdApiSearchDemo /电商IDprivate string EBusinessID = 1237100;电商加密私钥,注意保管,不要泄漏private string AppKey = 518a73d8-1f7f-441a-b644
5、-33e77b49d846”; /请求urlprivate string ReqURL = HYPERLINK http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx http:/api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx;/ / Json方式查询订单物流轨迹/ / public string getOrderTracesByJson() stringrequestData=OrderCode:,ShipperCode:SF,LogisticCode:589707398027;Dic
6、tionary param = new Dictionary();param.Add(RequestData, HttpUtility.UrlEncode(requestData, Encoding.UTF8);param.Add(EBusinessID, EBusinessID);param.Add(RequestType, 1002);string dataSign = encrypt(requestData, AppKey, UTF-8);param.Add(DataSign, HttpUtility.UrlEncode(dataSign, Encoding.UTF8);param.Ad
7、d(DataType, 2);string result = sendPost(ReqURL, param);/根据公司业务处理返回的信息.return result;/ / Post方式提交数据,返回网页的源代码/ / 发送请求的URL/ 请求的参数集合 / 远程资源的响应结果 private string sendPost(string url, Dictionary param) string result = ;StringBuilder postData = new StringBuilder();if (param != null & param.Count 0) foreach
8、(var p in param) if (postData.Length 0)postData.Append(&);postData.Append(p.Key);postData.Append(=);postData.Append(p.Value); byte byteData = Encoding.GetEncoding(UTF-8).GetBytes(postData.ToString(); try HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.ContentType = applicatio
9、n/x-www-form-urlencoded;request.Referer = url;request.Accept = */*;request.Timeout = 30 * 1000;request.UserAgent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)”; request.Method = POST;request.ContentLen
10、gth = byteData.Length;Stream stream = request.GetRequestStream();stream.Write(byteData, 0, byteData.Length);stream.Flush();stream.Close();HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream backStream = response.GetResponseStream();StreamReader sr = new StreamReader(backStream,
11、Encoding.GetEncoding(UTF-8);result = sr.ReadToEnd();sr.Close();backStream.Close();response.Close();request.Abort();)catch (Exception ex) (result = ex.Message;) return result;)/电商Sign签名/ 内容 /Appkey/URL 编码 /DataSign 签名 private string encrypt(String content, String keyValue, String charset) (if (keyVal
12、ue != null) (return base64(MD5(content + keyValue, charset), charset);)return base64(MD5(content, charset), charset);)/字符串MD5加密/ 要加密的字符串 / 编码方式 / 密文 private string MD5(string str, string charset) (byte buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str); try (System.Security.Cryptograph
13、y.MD5CryptoServiceProvider check;check = new System.Security.Cryptography.MD5CryptoServiceProvider();byte somme = check.ComputeHash(buffer);string ret =;foreach (byte a in somme) (if (a 16)ret += 0 + a.ToString(X);elseret += a.ToString(X);return ret.ToLower(); catch (throw;/ / base64 编码/ / 内容 / 编码方式
14、 / private string base64(String str, String charset) (returnConvert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str);PHP开发 EBusinessID,RequestType = 1002,RequestData = urlencode($requestData) ,DataType = 2,);$datasDataSign = encrypt($requestData, AppKey);$result=sendPost(ReqURL
15、, $datas);/根据公司业务处理返回的信息/*return $result;post提交数据paramstring $url 请求 Urlparamarray $datas 提交的数据* return url响应返回的 html*/function sendPost($url, $datas) $temps = array();foreach ($datas as $key = $value) $temps = sprintf(%s=%s, $key, $value);$post_data = implode(&, $temps);$url_info = parse_url($url);
16、if(empty($url_infoport)$url_infoport=80;$httpheader = POST . $url_infopath . HTTP/1.0rn;$httpheader.= Host: . $url_infohost . rn;$httpheader.= Content-Type:application/x-www-form-urlencodedrn;$httpheader.= Content-Length: . strlen($post_data) . rn;$httpheader.= Connection:closernrn;$httpheader.= $po
17、st_data;$fd = fsockopen($url_infohost, $url_infoport);fwrite($fd, $httpheader);$gets =;$headerFlag = true;while (!feof($fd) if ($header = fgets($fd) & ($header = rn | $header = n) break;while (!feof($fd) $gets.= fread($fd, 128);fclose($fd);return $gets;电商Sign签名生成param data 内容param appkey Appkeyretur
18、n DataSign 签名*/function encrypt($data, $appkey) return urlencode(base64_encode(md5($data.$appkey); ?JAVA开发import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import .HttpURLConnection;
19、import .URL;import .URLEncoder;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map;public class KdniaoTrackQueryAPI /DEMOpublic static void main(String args) KdniaoTrackQueryAPI api = new KdniaoTrackQueryAPI();try String result = api.getOrderTracesByJson(ANE, 21000163360
20、5);System.out.print(result); catch (Exception e) e.printStackTrace();电商IDprivate String EBusinessID=请申请 ;电商加密私钥,注意保管,不要泄漏private String AppKey=请申请;请求urlprivate String ReqURL=http:api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx;/*Json方式 查询订单物流轨迹throws Exception/public String getOrderTracesByJson(St
21、ring 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=encryp
22、t(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)
23、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 = resulti & 0 xff;if (val = 0 xf) sb.append(0);sb.append(Integer.toHexString(val);return sb
24、.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 ur
25、lEncoder(String str, String charset) throws UnsupportedEncodingExceptionString result = URLEncoder.encode(str, charset);return result;/*电商Sign签名生成param content 内容param keyValue Appkeyparam charset 编码方式throws UnsupportedEncodingException .Exceptionreturn DataSign 签名*/SuppressWarnings(unused)private S
26、tring encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exceptionif (keyValue != null)return base64(MD5(content + keyValue, charset), charset); )return base64(MD5(content, charset), charset);/*向指定URL发送POST方法的请求param url发送请求的 URLparam params 请求的参数集合return远
27、程资源的响应结果*/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请求必须设置如下两行con
28、n.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,
29、 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的响
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 低价转让转租合同范本
- 公共广播合同范本
- 饭店供应食品合同范本
- 早餐摊位加工合同范本
- 个人煤炭求购合同范本
- 彩钢瓦喷漆翻新合同范本
- 厨房线路改造合同范本
- 装饰工程佣金合同范本
- 2025标准商业租赁合同
- 2025建筑工程的设备采购合同范本
- 内蒙古地区历年中考语文现代文之记叙文阅读63篇(截至2024年)
- 2023年4月信息素养系列培训讲座
- 2025年度马铃薯种薯产业扶贫与乡村振兴合作合同4篇
- 挖掘机司机岗位安全培训课件
- 《退役锂电池清洁循环利用技术规范》编制说明
- 2024年中国浴室套件市场调查研究报告
- 电炉炼钢工职业技能知识考试题(附答案)
- 交通法律法规知识培训
- 依法治县业务培训
- 网络安全课件:防范钓鱼攻击与社工库检测分析
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)宣传海报
评论
0/150
提交评论