1、授权码,授权码,请到快递100页面申请企业版接口获取
2、申请得到的快递100数据放置.yml文件中(可以动态配置)
3、拿key和customer和定义实时查询的接口地址
@Value("${kuaidi100.key}") private String key; @Value("${kuaidi100.customer}") private String customer; private static final String POLL_QUERY_URL = "https://poll.kuaidi100.com/poll/query.do";
4、封装实体类
@Data public class DeliveryDto { @ApiModelProperty(value = "物流公司名称",required=true) private String companyName; @ApiModelProperty(value = "物流公司官网",required=true) private String companyHomeUrl; @ApiModelProperty(value = "物流订单号",required=true) private String dvyFlowId; @ApiModelProperty(value = "查询出的物流信息",required=true) private List<DeliveryInfoDto> data; }
@Data public class DeliveryInfoDto { @ApiModelProperty(value = "详细信息",required=true) private String context; private String ftime; @ApiModelProperty(value = "快递所在区域",required=true) private String location; @ApiModelProperty(value = "物流更新时间",required=true) private String time; }
5、controller拿数据
@GetMapping("/check") @ApiOperation(value="查看物流", notes="根据订单号查看物流") @ApiImplicitParam(name = "orderNumber", value = "订单号", required = true, dataType = "String") public ResponseEntity<DeliveryDto> checkDelivery(String orderNumber) { Order order = orderService.getOrderByOrderNumber(orderNumber); Delivery delivery = deliveryService.getById(order.getDvyId()); Map<String, String> param = new HashMap<>(); param.put("com", delivery.getDvyEname());//快递公司编码 param.put("num", order.getDvyFlowId());//快递单号 String mgsData = JSON.toJSONString(param); String sign=DigestUtils.md5Hex(mgsData + key + customer).toUpperCase(); String url =POLL_QUERY_URL+"?customer="+customer+ "&sign=" +sign+ "¶m="+mgsData; String deliveryJson = HttpUtil.get(url); DeliveryDto deliveryDto = Json.parseObject(deliveryJson, DeliveryDto.class); deliveryDto.setDvyFlowId(order.getDvyFlowId()); deliveryDto.setCompanyHomeUrl(delivery.getCompanyHomeUrl()); deliveryDto.setCompanyName(delivery.getDvyName()); return ResponseEntity.ok(deliveryDto); }