免费常用的快递物流查询api接口介绍,快递接口api

4747 1850 2022-09-11

本文讲述了免费常用的快递物流查询api接口介绍,快递接口api。

快递查询接口API

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

应用场景

最常见的应用场景如下:

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

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

快递API的用途如下:

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

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

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

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

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

对接说明

不同公司的快递查询接口接入类似,到APISpace上申请账号获取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;   

/** 

 * 

 * APISpace物流轨迹即时查询接口 

 * 

 * @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="请到APISpace官网申请  

http://www.kdniao.com/ServiceAppl  

y.aspx";  

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

    private String AppKey="请到APISpace官网申请  

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();   

    }  

}  

1. 前言

随着我国电子商务的迅猛发展,物流行业也开始突飞猛进,人们的日常生活越来越离不开快递服务,查快递、寄快递的需求越来越大,随之而来,常用快递接口的需求也越来越大。

全国快递查询接口,支持各大快递公司物流查询,包括圆通、高铁速递、中通快递、申通快递、百世快递(原汇通)、韵达快递、顺丰速运。内部包含4个APIs。

查看接口信息:https://www.apispace.com/eolink/api/wlgj1/api/?utm_source=shh&utm_term=qqwl

APISpace(https://www.apispace.com/?utm_source=shh&utm_term=qqwl) 有很多免费通用的API接口,利用这些接口可以帮你实现去开发出很多功能丰富,服务稳定的网页、APP还有小程序,无论是练手还是实战都是不错的选择。

2. 接口详情

注意:接口请求头中的 X-APISpace-Token 需要注册 APISpace 账户,注册成功后自动生成,全部API通用。

2.1 物流轨迹查询:实时查询

- 接口地址:https://eolink.o.apispace.com/wlgj1/paidtobuy_api/trace_search

- 返回格式:JSON

- 请求方法:POST

- 返回示例:

2.2 智能识别单号

- 接口地址:https://eolink.o.apispace.com/wlgj1/paidtobuy_api/mail_discern

- 返回格式:JSON

- 请求方法:POST

- 接口介绍:输入快递单号,查询快递公司。

2.3 物流时效性查询

- 接口地址:https://eolink.o.apispace.com/wlgj1/paidtobuy_api/timeliness_get

- 返回格式:JSON

- 请求方法:POST

- 接口介绍:查询快递的到达时间。

上文是小编为大家整理的免费常用的快递物流查询api接口介绍,快递接口api。

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)快递api分析、比较及推荐。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:k8s中nginx+tomcat实现动静分离
下一篇:k8s删除Terminating状态的ns
相关文章

 发表评论

暂时没有评论,来抢沙发吧~