电商网站物流快递单号查询api接口申请案例

【场景需求描述】

电商平台及ISV商家对物流api接口的需求有很多,今天我们主要分享的就是快递鸟快递单号查询接口的对接指南,快递单号查询接口对接的应用场景有很多,很多场景会遇到,最主要的就是电商网站用户打开“我的订单”时调用此API显示物流信息详情,电商管理后台的物流系统,客服在对账前查询所有运单的签收状态,并追踪问题,电商平台对商家物流管控,要求必须在多久快递必须发出要看到揽件状态,多久必须收到货物看到签收状态,根据这些状态对商家管控从而提升用户的整体满意度。
电商网站物流快递单号查询api接口申请案例
【对接使用流程】

1、注册快递鸟账号并申请认证

2、快递鸟根据单号和快递公司查询到物流轨迹状态

3、快递鸟将查询到的物流轨迹状态反馈給电商平台或ISV服务商

4、电商平台或ISV服务商接收数据并实时处理做数据展示或应用

快递鸟功能非常强大,免费,可以随时查询快递轨迹,也可以推送快递状态,很强大很方便。直接上实现代码。直接上代码:这是开发的快递鸟推送的快递信息接口,接收数据处理数据。这里method一定要post

@RequestMapping(value = "tuisong",method=RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> tuisong(String RequestData,String RequestType,String DataSign) {
         RequestData=Encodes.unescapeHtml(RequestData);
         Map<String,Object> result=new HashMap<String,Object>();
        //判断是从快递鸟进入
        if(!(RequestType.equals("101") && KdniaoUtils.isFromKdniao(RequestData, DataSign))){
            result.put("Success",false);
            result.put("Reason","不是快递鸟推送来的数据。");
            return result;
        }
        JSONObject jsonObj=new JSONObject(RequestData);
         result.put("EBusinessID",jsonObj.getString("EBusinessID"));
         result.put("UpdateTime",jsonObj.getString("PushTime"));
         try {
             JSONArray jsonArray=jsonObj.getJSONArray("Data");
             List<Ship> shipList=Lists.newArrayList();
             Ship ship=null;
             for(int i=0;i<jsonArray.length();i++){
                jsonObj=jsonArray.getJSONObject(i);
                 if(!jsonObj.getBoolean("Success")){
                     continue;
                 }
                 ship=new Ship();
                 ship.setExpress(ErpUtils.getExpressByKdniao(jsonObj.getString("ShipperCode")));
                 ship.setExpressNo(jsonObj.getString("LogisticCode"));
                 String state=jsonObj.getString("State");
                 ship.setStatus(KdniaoUtils.getShipStatus(state));
                 if(ship.getStatus().equals(Ship.STATUS_SIGN)){
                     JSONArray array=jsonObj.getJSONArray("Traces");
                     JSONObject obj=array.getJSONObject(array.length()-1);
                     String time=obj.getString("AcceptTime");
                     ship.setSignTime(DateUtils.parseDate(time,"yyyy-MM-dd HH:mm:ss"));
                 }
                 shipList.add(ship);
              }
             shipService.updateStatus(shipList);
             result.put("Success", true);
         }catch (Exception e) {
             result.put("Success", false);
             result.put("Reason ", "解析数据失败。");
             e.printStackTrace();
         }
        return result;

这里是个工具类,提供静态方法。KdniaoUtils.java
``public class KdniaoUtils {
//DEMO
public static void main(String[] args) throws UnsupportedEncodingException, Exception {
}
//电商ID
private static String EBusinessID="1283391";
//电商加密私钥,快递鸟提供,注意保管,不要泄漏
private static String AppKey="9df9507a-62fa-47f3-9227-bdd02b95ccf1";
//请求url
private static String ReqURL="http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
public static Map<String,String> StateMap=new HashMap<String,String>();
static{
StateMap.put("0", "没有记录");
StateMap.put("1", "已揽收");
StateMap.put("2", "运输途中");
StateMap.put("201", "到达目的城市");
StateMap.put("3", "已签收");
StateMap.put("4", "问题件");
}
// 物流状态: 0-无轨迹,1-已揽收,2-在途中 201-到达派件城市,3-签收,4-问题件
public static int getShipStatus(String state){
switch (state){
case "0":
return Ship.STATUS_SHIPPED;
case "1":
return Ship.STATUS_SHIPPED;
case "2":
return Ship.STATUS_ONTHEWAY;
case "201":
return Ship.STATUS_PAISONG;
case "3":
return Ship.STATUS_SIGN;
case "4":
return Ship.STATUS_DIFFICULT;
default:
return Ship.STATUS_SHIPPED;
}
}
/**

猜你喜欢

转载自blog.51cto.com/14466758/2428840