公司ERP系统需要实现快递物流运输状态跟踪。有用过免费的爱快递,快递100,快递鸟。
爱快递免费2000次每天,普通用很不错了。返回的快递状态比较多,如派件中,拒收,退件,疑难件等。响应速度略慢。
快递100,常用的快递要收费。
快递鸟功能非常强大,免费,可以随时查询快递轨迹,也可以推送快递状态,很强大很方便。直接上实现代码。直接上代码:
这是开发的快递鸟推送的快递信息接口,接收数据处理数据。这里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/Ebu