快递查询api_快递查询api接口 - CSDN
精华内容
参与话题
  • [快递查询API](https://market.aliyun.com/products/57126001/cmapi010996.html?spm=5176.730005.0.0.mQKSfE#sku=yuncode499600008 "")
  • 快递查询API

    2020-09-14 19:30:10
    友儿 晚安 友儿90后 导航 首页 仓库 友链 书影 留言板 文章归档 关于我 组成 分类 ...快递查询API (http://www.kuaidi.com/) 框架 Yii2前几天申请的key审核...

     

    快递查询API (http://www.kuaidi.com/)

    <?php
    /**
     * Created by http://www.kuaidi.com
     * User: http://www.kuaidi.com
     * Date: 2019/3/28
     * Time: 11:04
     */
    
    namespace apphelper;
    
    class KuaiDiAPI
    {
        private $_APPKEY = '';
        private $_APIURL = "http://api.kuaidi.com/openapi.html?";
        private $_show = 0;
        private $_muti = 0;
        private $_order = 'desc';
    
        /**
         * 您获得的快递网接口查询KEY。
         * @param string $key
         */
    
        public function __construct($key)
        {
            header("Content-type:text/html;charset=utf-8");
            $this->_APPKEY = $key;
        }
    
        /**
         * 设置数据返回类型。0: 返回 json 字符串; 1:返回 xml 对象
         * @param int $show
         */
    
        public function setShow($show = 0)
        {
    
            $this->_show = $show;
        }
    
        /**
         * 设置返回物流信息条目数, 0:返回多行完整的信息; 1:只返回一行信息
         * @param int $muti
         */
    
        public function setMuti($muti = 0)
        {
    
            $this->_muti = $muti;
        }
    
        /**
         * 设置返回物流信息排序。desc:按时间由新到旧排列; asc:按时间由旧到新排列
         * @param string $order
         */
    
        public function setOrder($order = 'desc')
        {
    
            $this->_order = $order;
        }
    
        /**
         * @param string $nu 物流单号
         * @param string $com 公司简码 要查询的快递公司代码,不支持中文,具体请参考快递公司代码文档。 不填默认根据单号自动匹配公司。注:单号匹配成功率高于 95%。
         * @return mixed
         * @throws Exception
         */
    
        public function query($nu, $com = '')
        {
    
            if (function_exists('curl_init') == 1) {
    
                $url = $this->_APIURL;
                $dataArr = array(
                    'id' => $this->_APPKEY,
                    'com' => $com,
                    'nu' => $nu,
                    'show' => $this->_show,
                    'muti' => $this->_muti,
                    'order' => $this->_order
                );
    
                foreach ($dataArr as $key => $value) {
    
                    $url .= $key . '=' . $value . "&";
                }
    
                $curl = curl_init();
                curl_setopt($curl, CURLOPT_URL, $url);
                curl_setopt($curl, CURLOPT_HEADER, 0);
                curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($curl, CURLOPT_TIMEOUT, 10);
                $kuaidresult = curl_exec($curl);
                curl_close($curl);
    
                if ($this->_show == 0) {
    
                    $result = json_decode($kuaidresult, true);
                } else {
    
                    $result = $kuaidresult;
                }
    
                return $result;
    
            } else {
    
                throw new Exception("Please install curl plugin",1);
            }
        }
    }


    调用:

            $key = '1ee2c0d83f6697942d739e54df942429e1';//自己去官网申请
            $kuaidichaxun = new KuaiDiAPI($key);
            $nu = '98951263966645';//物流单号
            $com = 'youzhengguonei';//公司简码 (见官网文档)
            $result = $kuaidichaxun->query($nu,$com);
            Logic::vd($result);


    测试结果:

     

    展开全文
  • 各种快递查询Api接口(快递鸟)

    千次阅读 2018-09-25 18:04:56
    快递查询Api接口 接口文档及各开发语言Demo 查询Api接口定义 系统级输入参数 应用级输入参数 返回结果参数 请求JSON参数 响应JSON参数 查询Api接口使用 温馨提示 同类文章 ...

     

    前提

    项目开发中,有些需求难免会用到关于快递的一些Api接口;本篇主要介绍的是快递的查询Api及与其他各家的不同之处;

    常用的提供快递Api接口的有:

    1. 快递鸟
    2. 快递100
    3. 爱查快递
      等等

    如大家使用过,快递100和爱查快递等等网站提供的快递查询等接口时,你会发现,你所申请的账号或key每天调用Api接口的次数都是被限制的,有的是2000次/天,有的是5000次/次;唯一让你感到麻烦的是,要求用户添加外链,而快递鸟不需要用户添加外链。对于无门户网站的用户,无非就是很苛刻的要求;并且,超出部分需付费才能使用。

    快递鸟,请求Api接口是不限制次数的哟,并且永久免费

    固然,对于你小小的需求的话,快递100和爱查快递都可满足你的需求;但是,当万一某天请求次数太多,你的查询服务就得停止,影响你的产品体验;所以,推荐你直接使用快递鸟,一步到位。

    应用场景


    查询订单的物流信息

    此处输入图片的描述

    可实现需求

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

    申请Key


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

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

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

    此处输入图片的描述

    快递查询Api接口


    接口文档及各开发语言Demo

    http://www.kdniao.com/download

    查询Api接口定义

    系统级输入参数

    参数名称 类型 必须要求 说明
    RequestData String R 请求内容,JSON或XML格式,须和DataType一致
    EBusinessID String R 用户ID
    RequestType String R 请求指令类型:1002
    DataSign String R 数据内容签名
    DataType String O 请求、返回数据类型:1-xml,2-json;默认为xml格式

    应用级输入参数

    参数名称 类型 必须要求 说明
    OrderCode varchar(50) O 订单编号
    ShipperCode varchar(10) R 快递公司编码
    LogisticCode varchar(50) R 物流单号

    返回结果参数

    参数名称 类型 必须要求 说明
    EBusinessID Int R 电商用户ID
    OrderCode Varchar(50) O 订单编号
    ShipperCode varchar(10) R 快递公司编码
    LogisticCode Varchar(50) R 物流运单号
    Success Bool R 成功与否
    Reason Varchar(50) O 失败原因
    State Int R 物流状态1:已取件2:在途中3:签收
    Traces Varchar(Max) R 物流轨迹详情

    物流轨迹详情

    参数名称 类型 必须要求 说明
    AcceptTime DateTime R 时间
    AcceptStation Varchar(50) R 描述
    Remark Varchar(150) O 备注

    请求JSON参数

    {
        "OrderCode" : "",
        "ShipperCode" : "SF",
        "LogisticCode" : "118650888018"
    }
    

    响应JSON参数

    
    
    {
        "EBusinessID" : "1109259",
        "OrderCode" : "",
        "ShipperCode" : "SF",
        "LogisticCode" : "118461988807",
        "Success" : true,
        "State" : 3,
        "Reason" : null,
        "traces" : [{
                "AcceptTime" : "2014/06/25 08:05:37",
                "AcceptStation" : "正在派件..(派件人:邓裕富,电话:18718866310)[深圳 市]",
                "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
            }
        ]
    }
    

    查询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单查询量,建议接入我方物流轨迹订阅推送接口
     * 
     * ID和Key请到官网申请: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<String, String> params = new HashMap<String, String>();
                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= "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"+
                                    "<Content>"+
                                    "<OrderCode></OrderCode>"+
                                    "<ShipperCode>SF</ShipperCode>"+
                                    "<LogisticCode>589707398027</LogisticCode>"+
                                    "</Content>";
    
                Map<String, String> params = new HashMap<String, String>();
                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<String, String> 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<String, String> 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(); 
            }
        }
    

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

    温馨提示

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

    ps:Coolspan kdniao

    同类文章

    各种电子面单-Api接口(顺丰、快递鸟、菜鸟)

    --------------------- 本文来自 Cool-span 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qxs965266509/article/details/51762707?utm_source=copy

    展开全文
  • 电商网站、在线管理系统、微信公众号平台等都能集成使用,免费查询国内外三百多家快递及物流公司的快递单号,稳定性超强,无限制哦!!! 说明: 1.KuadidiAPI.php 不需要修改改任何东西 2.example.php 按照说明...
  • 各种快递查询--Api接口

    万次阅读 热门讨论 2019-03-05 10:55:13
    强烈推荐 分享一个大神的人工智能教程。零基础!通俗易懂!...这篇博客从发布到现在已经很久了,根据我对这篇博客的统计及数据观察,对快递查询接口的使用的人还是比较多的,所以我准备把博客重新梳...

    这里写图片描述

    强烈推荐

    分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!

    人工智能与快递接口的结合会使明天更加美好,期待!

    点击一下,也是对作者的支持!http://captainbed.coolspan.com

    背景

    这篇博客从发布到现在已经很久了,根据我对这篇博客的统计及数据观察,对快递查询接口的使用的人还是比较多的,所以我准备把博客重新梳理一下并附加上一下代码。

    使用快递的接口,之前是为了做公众号,用户输入订单号,微信后台进行查询并反馈给微信用户,可以收到关于此单号的物流信息情况,以此目的才写了这篇博客,希望可以帮助到大家。

    若有转载,请注明来自Coolspan: http://blog.csdn.net/qxs965266509,谢谢大家的支持.


    快递查询接口

    提供开发者平台查询快递接口的公司有:

    快递鸟,支持全球400余家快递物流公司接口,请求Api接口是不限制次数的哟,并且永久免费

    如果你的请求次数很少可以考虑其他家,反之,请求量大,快递鸟免费Api就是很不错的选择。

    点击免费申请快递鸟APIKey授权才能做对接,申请后加他们技术支持QQ群很快就能对接

    下面是以快递100提供的开发者接口进行展开,如有错误,请指正并及时修改。

    首先,申请一个快递100的账号;
    然后进入http://www.kuaidi100.com/openapi/界面点击免费申请,免费申请的接口每天接口的请求次数都是有限制的,如果不想被限制,可能就得考虑商务合作或者另求它处。

    按照申请流程一步步做完后,静等审核通过。
    调用频率选择 2000次/每天,邮箱必须正确,因为审核通过后会给你发送邮件,邮件内容会有请求接口使用的key密钥,不通过会告知你具体什么原因导致不通过。


    使用

    案例分为3个

    • 使用的是Chrome的postman插件进行Api测试调用
    • 使用Nodejs环境进行快递查询
    • 在Android使用快递接口查询

    打开http://www.kuaidi100.com/openapi/api_post.shtml查看Api接口定义文档,了解url、请求参数及响应数据。
    主要对运单查询API进行讲解测试.

    API URL 所支持的快递公司及参数说明
    支持的国际类快递及参数说明

    这里写图片描述
    这里写图片描述

    使用postman查询

    填写请求url及请求参数,下方就是响应的数据,看效果:
    这里写图片描述


    Nodejs查询订单

    请求:

    /**
     * Created by Coolspan on 2016/5/18.
     */
    
    var ajax = require("./ajax.js")
    
    ajax.ajax({
        type: "POST",
        url: "http://api.kuaidi100.com/api",
        data: {
            id: "28a3e64ebad725d5",
            com: "tiantian",
            nu: "666509962436",
            show: 0,
            muti: 1,
            order: "desc"
        },
        success: function (data) {
            var orderInfo = JSON.parse(data);
            console.log(orderInfo)
        }
    })

    ajax.js –>

    var https = require("https");
    var http = require("http");
    var Url = require("url");
    var querystring = require('querystring');
    
    // 默认值
    var defaultSetting = {
        // 如果返回false可以取消本次请求
        beforeSend: function (req) {
        },
        complete: function (req) {
        },
        data: '', // Object, String
        dataType: 'JSON',
        error: function () {
        },
        headers: {}, // {k:v, ...}
        statusCode: {},
        success: function (data) {
        },
        timeout: 10,
        type: 'GET', // GET, POST
        url: "www.baidu.com"
    };
    
    /**
     *
     */
    function ajax(settings) {
        // ajaxlbs.js(settings)
        if (typeof settings === "object") {
            // 处理默认值继承
            // todo ...
            for (key in defaultSetting) {
                if (settings[key] == null) {
                    settings[key] = defaultSetting[key];
                }
            }
        }
    
        var params = Url.parse(settings.url, true);
        // params 解析出来的参数如下
        // {
        // "protocol":"http:",
        // "slashes":true,
        // "host":"localhost:3000",
        // "port":"3000",
        // "hostname":"localhost",
        // "href":"http://localhost:3000/?d=1",
        // "search":"?d=1",
        // "query":{"d":"1"},
        // "pathname":"/",
        // "path":"/?d=1"
        // }
    
        var options = {
            host: params.hostname,
            port: params.port || 80,
            path: params.path,
            method: settings.type
        };
    
        if (settings.data != null) {
            options.path += "?"
            for (var key in settings.data) {
                options.path = options.path + "&" + key + "=" + settings.data[key];
            }
            console.log(options.path);
        }
    
        var httpUnity = http;
        if (params.protocol == "https:") {
            options.port = 443;
            var httpUnity = https;
        }
    
        var req = httpUnity.request(options,function (res) {
            var data = '';
            res.on('data',function (chunk) {
                data += chunk;
            }).on('end', function () {
                    if (settings.dataType === "json") {
                        try {
                            data = JSON.parse(data);
                        } catch (e) {
                            data = null;
                        }
                    }
                    settings.success(data);
                    settings.complete(req);
                });
        }).on('error', function (e) {
                settings.error(e);
            });
    
    //    if (typeof settings.beforeSend === "function") {
    //        if (!settings.beforeSend(req)) {
    //            settings.complete(req);
    //            req.end();
    //            return false;
    //        }
    //    }
    
        if (settings.type === "POST") {
            var dataStr = querystring.stringify(settings.data);
            req.setHeader("Content-Length", dataStr.length);
            req.write(dataStr);
        }
    
        req.setTimeout(settings.timeout);
        req.end();
    }
    
    exports.ajax = ajax;

    ps: ajax.js和请求接口的代码都是放在同一层目录的,如果目录接口不对,请修改require中的路径。

    结果如图所示:
    这里写图片描述


    Android查询快递

    使用的网络库是Google‘Volley’

    package cn.coolspan.andframe1;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    
    import com.android.volley.AuthFailureError;
    import com.android.volley.Request;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.StringRequest;
    import com.android.volley.toolbox.Volley;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * Coolspan
     */
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    next();
                }
            });
        }
    
        private void next() {
            StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://api.kuaidi100.com/api",
                    new Response.Listener<String>() {
                        @Override
                        public void onResponse(String response) {
    
                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    Map<String, String> params = new HashMap<String, String>();
                    params.put("id", "28a3e64ebad725d5");
                    params.put("com", "tiantian");
                    params.put("nu", "666509962436");
                    params.put("show", "0");
                    params.put("muti", "1");
                    params.put("order", "desc");
                    return params;
                }
            };
    
            Volley.newRequestQueue(this).add(stringRequest);
        }
    }
    

    ps:如有其它快递接口网站想借此介绍,请左边QQ我

    转载请注明,来自Coolspan:http://blog.csdn.net/qxs965266509


    推荐同类文章

    各种快递查询Api接口(快递鸟)

    各种电子面单-Api接口(顺丰、快递鸟、菜鸟)

    推荐Android热修复博客

    Android-App增量更新的使用姿势
    Android-FixBug热修复框架的使用及源码分析(不发版修复bug)
    Alibaba-Dexposed Bug框架原理及源码解析
    Alibaba-Dexposed框架在线热补丁修复的使用
    Alibaba-AndFix Bug热修复框架原理及源码解析
    Alibaba-AndFix Bug热修复框架的使用
    各种快递查询Api接口(快递鸟)


    ps:如有其它快递接口网站想借此介绍,请左边QQ我

    转载请注明,来自Coolspan:http://blog.csdn.net/qxs965266509

    展开全文
  • 快递查询接口API 快递查询接口是指快递查询网对外开放的应用程序接口,开发人员能够通过调用该接口与快递查询网进行交互,并基于该接口开发自己的快递查询应用程序。目前比较常用的第三方接口有快递鸟。 应用场景 ...

    快递查询接口API
    快递查询接口是指快递查询网对外开放的应用程序接口,开发人员能够通过调用该接口与快递查询网进行交互,并基于该接口开发自己的快递查询应用程序。目前比较常用的第三方接口有快递鸟

    应用场景

    1. 最常见的应用场景如下:

    (1)电商网站:例如B2C、团购、B2B、批发分销站、C2C、本地生活交易等网站。

    (2)管理系统:订单处理平台、订货平台、发货平台、分销系统、渠道管理系统、客户管理系统、ERP等。

    1. 快递API的用途如下:

    (1)让顾客登录网站后,直接在“我的订单”页面内就能看到订单的物流状态。

    (2)自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。

    (3)改变订单的状态和交易流程,例如单号变为“已签收”,就能让订单变为可以确认退换货等。

    (4)评估选择快递公司,根据“已签收”的运单数,可以算出销售人员的业绩,且便于应对货到付款的结算。

    (5)邮件、短信提醒用户运单的最新状态,可以安抚用户,也可以利用邮件短信二次营销

    对接说明
    不同公司的快递查询接口接入类似,到快递鸟上申请账号获取KEY和ID,如果是订阅接口需要技术联调。
    根据快递单号和快递公司编码查询物流轨迹信息。接口需要指定快递单号的快递公司编码,格式不对或则编码错误都会返失败的信息。如:申通物流单号应选择快递公司编码(STO),查看快递公司编码返回的物流跟踪信息按照发生的时间升序排列。
    请求系统参数:
    在这里插入图片描述
    返回参数定义
    在这里插入图片描述
    Java调用示例

    import java.io.BufferedReader;  
    import java.io.IOException;  
    import java.io.InputStreamReader;  
    import   
      
    java.io.OutputStreamWriter;  
    import   
      
    java.io.UnsupportedEncodingExcept  
      
    ion;  
    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/YundanChaxu 
     
    nAPI.aspx 
     * @copyright: 深圳市快金数据技术 
     
    服务有限公司 
     * 
     * DEMO中的电商ID与私钥仅限测试使 
     
    用,正式环境请单独注册账号 
     * 单日超过500单查询量,建议接入 
     
    我方物流轨迹订阅推送接口 
     *  
     * ID和Key请到官网申请: 
     
    http://www.kdniao.com/ServiceAppl 
     
    y.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/ServiceAppl  
      
    y.aspx";  
        //电商加密私钥,快递鸟提  
      
    供,注意保管,不要泄漏  
        private String AppKey="请  
      
    到快递鸟官网申请  
      
    http://www.kdniao.com/ServiceAppl  
      
    y.aspx";  
        //请求url  
        private String   
      
    ReqURL="http://api.kdniao.cc/Ebus  
      
    iness/EbusinessOrderHandle.aspx";     
       
        /** 
         * Json方式 查询订单物流轨迹 
         * @throws Exception  
         */  
        public String   
      
    getOrderTracesByJson(String   
      
    expCode, String expNo) throws   
      
    Exception{  
            String   
      
    requestData=   
      
    "{'OrderCode':'','ShipperCode':'"   
      
    + expCode + "','LogisticCode':'"   
      
    + expNo + "'}";  
              
            Map<String,   
      
    String> params = new   
      
    HashMap<String, String>();  
            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= "<?xml version=  
      
    \"1.0\" encoding=\"utf-8\" ?>"+  
                          
      
            "<Content>"+  
                          
      
              
      
    "<OrderCode></OrderCode>"+  
                          
      
              
      
    "<ShipperCode>SF</ShipperCode>"+  
                          
      
              
      
    "<LogisticCode>589707398027</Logi  
      
    sticCode>"+  
                          
      
            "</Content>";  
              
            Map<String,   
      
    String> params = new   
      
    HashMap<String, String>();  
            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<String, String>   
      
    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<String, String> 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();   
        }  
    }  
    
    展开全文
  • 快递查询API接口

    千次阅读 2012-04-04 16:00:20
    快递查询API是爱查快递推出的一款免费的快递(物流)单号查询的应用接口,可应用于B2C商城、电脑软件、手机应用等领域,目前支持国内外常见的70余家快递公司。 爱查快递API优势 支持快递公司广泛,除了圆通、...
  • 快递接口---分析对比

    万次阅读 2016-12-15 10:27:40
    快递接口—分析对比·标签(空格分隔): 接口 快递接口 快递 快递Api快递快递接口?快递查询快递下单接口?你需要快递什么接口?是找不到?使用的是次数限制,还是收费的呢?是否有技术支持?是否能给予我们 全...
  • 1、应用场景 (1)电商网站用户打开“我的订单”时调用此API显示结果 (2)物流系统对帐前调用此API查一次所有运单的...是,请到 快递查询API申请地址 申请 3、请求地址(注意这里错误丶) http://api.ku
  • 极兔快递单号查询API

    千次阅读 2020-08-28 11:33:44
    极兔快递单号查询API 1) 请求地址 https://official.jtexpress.com.cn/official/waybill/trackingCustomerByWaybillNo/v_3?waybillList=JT1252161236123 2) 调用方式:HTTP get 3) 接口描述: 接口描述详情 ...
  • 分享一些开放的免费的API接口

    万次阅读 多人点赞 2018-12-04 15:16:11
    最近在做一个电商系统,用到快递接口,然后就在网络上面找API接口,发现了下面的一些,收藏起来。 但是免费的不稳定,而且还有些快递不能查询,比如:顺丰 还有请求多了,也就限制访问了。 后面在阿里云里面找到...
  • 最全快递API接口及应用详解

    万次阅读 2019-07-05 10:03:50
    因为需要对接物流/快递公司接口,时常会陷入选择服务商的困境,这次我整理了市场上几乎所有主流的物流/快递api接口,并且按照支持数量、接口的丰富性/稳定性/即时性,以及价格等因素,对各大服务商做了一个评级。...
  • 目前网上的快递查询API都是查询订单信息的,有没有哪里提供查询各个快递公司价格的API呢?
  • 淘宝API item_get 获取商品详情 根据商品ID查询商品标题价格描述等详情数据 淘宝API item_search 按关键字搜索商品 搜索关键字,显示商品总数,标题,图片,优惠价等数据 淘宝API item_fee 获取商品快递费用 输入...
  • 一、图灵聊天机器人 ... 二、百度地图开放平台 http://lbsyun.baidu.com/index.php?title=webapi 三、Eolinker - API Shop ...常见疾病查询:https://www.apishop.net/#/api/detail/?productID=215...
  • 快递单号自动识别

    万次阅读 2014-11-24 17:17:26
    许多网友都是在想如何能够实现快递单号自动识别,甚
  • 快递查询 api

    千次阅读 2012-09-25 15:00:49
    http://code.google.com/p/kuaidi-api/wiki/Open_API_API_URL ...API的使用说明已迁快递100网站,要了解Api url使用说明...API URL 所支持的快递公司及参数说明 分类 快递公司代码 公司名称 A
  • 介绍智选物流是综合地址库+时效库+逻辑库(成本、订单属性、仓库)选择出最优快递,通过多家快递网点地址库精准数据,点对点的运输时间,各种行业包裹的所有快递价格逻辑,不同产品类型、支付方式等分析,实现不同...
  • 百度物流API实例

    千次阅读 2017-12-11 15:38:05
    实例下载:点击打开链接 官方参考文档:点击打开链接
  • 在本文中,我们列出微信公众平台上可以使用的API接口以及举例如何在微信公众平台调用这些接口实现相应的功能。 接口调用说明: ① Appkey请使用的微信公众号,不要使用默认的trailuser ② 接口返回类型为文本、...
1 2 3 4 5 ... 20
收藏数 5,121
精华内容 2,048
关键字:

快递查询api