做过跨境电商项目的同学都知道,除了订单,支付和购物车外还有一个很头痛的模块-物流轨迹追踪。
通常来说企业为了节省成本采用的物流渠道都是五花八门的,DHl、EMS、Epacket、USPS...听起来就让人头疼;谁让咱们是做技术的呢,为了解决各家接口数据格式不一致的问题,特地花了一段时间做了一个composer的包.
附上地址: https://github.com/slince/shipment-tracking
用法很简单:
$tracker = new Slince\ShipmentTracking\DHLECommerce\DHLECommerceTracker(CLIENT_ID, PASSWORD);
try {
$shipment = $tracker->track('CNAQV100168101');
if ($shipment->isDelivered()) {
echo "Delivered";
}
echo $shipment->getOrigin();
echo $shipment->getDestination();
print_r($shipment->getEvents()); //打印物流轨迹
echo json_encode($shipment); //# 你可以直接将对象json化返回给前端
} catch (Slince\ShipmentTracking\Exception\TrackException $exception) {
exit('Track error: ' . $exception->getMessage());
}
Shipment
是对一个包裹的抽象,可以直接被json_encode, json之后的数据结构可以看下面附上的案例(看ajax请求) 具体包含下面几个主要方法
方法 | 说明 |
---|---|
isDelivered | 是否成功投递 |
getOrigin | 获取发货源国家 |
getDestination | 获取收货国家 |
getEvents | 获取物流轨迹 |
部分渠道可能不支持getOrigin
, getDestination
目前支持的渠道有:
DHL eCommerce
YanWen Express(燕文物流)
E邮宝(Epacket、EUP)、E包裹、E特快、国际EMS
USPS
快递100
创建你自己的Tracker
如果你用到的tracker不在上述渠道中,你也可以创建自己的tracker;此时需要用到一个库https://github.com/slince/shipment-tracking-foundation; shipment-tracking-foundation
采用类似omnipay
的设计;提供了一些基础方法和基础对象以帮助你轻松创建自己的Tracker.
案例
附上我们的一个案例 http://mypackage.co/tracking?orderNo=9037866297519&trackingNum=LW489083733CN
跨境项目打开速度可能会有点慢
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。