使用手机号查询物流信息

复盘一下。客户当时新增的需求。查了下,没找到对外开放的手机号查物流接口,但是有通过物流单号查询的。
思路如下:首先我们可以通过手机号。查出物流单号。再用物流单号去调用这个对外开放的物流信息接口。然后将得到的物流信息提取你想要的封装一下给前端显示就行了。至于物流单号的话,入库由发货人员填写。提供一个接口就好。用poi 下载发货信息表。然后发货人员填完已发货的一批单号后再导入。导入后就可以通过手机号查询到物流信息。导入前则显示商家暂未发货。

我用的接口
使用手机号查询物流信息_第1张图片
购买完去这里找Appcode 参数。代码会用到。这个接口有免费的100次可以测试。
使用手机号查询物流信息_第2张图片

下边写一下如何调用阿里云接口
1.导入依赖

  <!--快递单号物流查询阿里云接口begin-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <!--快递单号物流查询end-->

2.自己写的工具类。
就是把阿里云提供的java-sdk封装到方法里,提取一个参数。方便用手机号查出物流单号后。好调用。


import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;

import java.util.HashMap;
import java.util.Map;

public class ExpressUtil {
/**
     * 根据物流单号查询物流信息
     * @param expressNumbers
     */
public static String getExpress(String expressNumbers){
    String host = "https://qyexpress.market.alicloudapi.com";
    String path = "/composite/queryexpress";
    String method = "GET";
    String appcode=  "这里填你自己的Appcode";
    Map<String, String> headers = new HashMap<String, String>();
    //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 
    headers.put("Authorization", "APPCODE " + appcode);
    Map<String, String> querys = new HashMap<String, String>();
    // querys.put("mobile", "mobile");
    querys.put("number", expressNumbers);//这里的expressNumbers是物流单号

    try {
        /**
         * 重要提示如下:
         * HttpUtils请从
         * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
         * 下载
         *
         * 相应的依赖请参照
         * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
         */
        HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
        //   System.out.println(response.toString());
        String s = EntityUtils.toString(response.getEntity());
        //获取response的body
       // System.out.println(s);
        return s;

    } catch (Exception e) {
        e.printStackTrace();
        return "";
    }

}
    public static void main(String[] args) {
        String express = getExpress("DPK368033655132");//这个单号是接口控制台提供的测试物流号
        System.out.println(express);


    }
}

物流单号查询的返回数据如下

"data": {
"number": "75426039407699",
"deliverystatus": 3,
"logo": "http://img.lundroid.com/zhongtong.png",
"list": [
{
"time": "2021-01-05 18:45",
"status": "您的快递已签收, 签收人在【菜鸟的广州吉山上街9号店】领取。如有疑问请电联:(18200933813), 投诉电话:(9519666), 您的快递已经妥投。风里来雨里去, 只为客官您满意。上有老下有小, 赏个好评好不好?【请在评价快递员处帮忙点亮五颗星星哦~】"
},
{
"time": "2020-12-31 16:53",
"status": "您的快递已暂存至【菜鸟的广州吉山上街9号店】。如有问题请电联:(18200933813), 投诉电话:(9519666), 感谢您使用中通快递, 期待再次为您服务!"
},
{
"time": "2020-12-31 15:04",
"status": "【广州黄埔】 的刘文浩(18200933813) 正在第1次派件, 请保持电话畅通,并耐心等待(95720为中通快递员外呼专属号码,请放心接听)"
},
{
"time": "2020-12-31 14:29",
"status": "快件已经到达 【广州黄埔】"
},
{
"time": "2020-12-31 08:24",
"status": "快件离开 【广州中心】 已发往 【广州黄埔】"
},
{
"time": "2020-12-31 08:09",
"status": "快件已经到达 【广州中心】"
},
{
"time": "2020-12-29 22:37",
"status": "快件离开 【华北转运中心】 已发往 【广州中心】"
},
{
"time": "2020-12-29 22:37",
"status": "快件已经到达 【华北转运中心】"
},
{
"time": "2020-12-29 20:49",
"status": "快件离开 【北京朝阳高碑店】 已发往 【华北转运中心】"
},
{
"time": "2020-12-29 17:31",
"status": "【北京朝阳高碑店】(010-65775900、010-59431892) 的 文兆国(13911850561) 已揽收"
}
],
"type": "zhongtong",
"typename": "中通速递"
},
"resp": {
"RespCode": 0,
"RespMsg": "ok"
}
}

你可能感兴趣的:(java)