slince/shipment-tracking-foundation

适用于多承运商的灵活的运输跟踪库。

1.1.0 2017-10-31 09:39 UTC

This package is auto-updated.

Last update: 2024-09-08 19:25:39 UTC


README

Build Status Coverage Status Latest Stable Version Scrutinizer

适用于多承运商的灵活的运输跟踪库。

基本用法

$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());  //print the shipment events
   
} catch (Slince\ShipmentTracking\Exception\TrackException $exception) {
    exit('Track error: ' . $exception->getMessage());
}

如何创建自己的跟踪器?

所有运输跟踪器必须实现 Slince\ShipmentTracking\Foundation\TrackerInterface,如果承运商的API基于HTTP,通常会扩展 Slince\ShipmentTracking\Foundation\HttpAwareTracker 以实现基本功能。

namespace My\Tracker;

use Slince\ShipmentTracking\Foundation\HttpAwareTracker;
use Slince\ShipmentTracking\Foundation\Shipment;

class MyTracker extends HttpAwareTracker
{
   /**
    * {@inheritdoc}
    */
    public function track($trackingNumber)
    {
        $response = $this->getHttpClient()->get('/../endpoint', [
            'query' => [
                'tracking_number' => $trackingNumber
            ]
        ]);
        return static::buildShipment($response):
    }
    
    /**
     * @return Shipment
     */
    public function buildShipment($response)
    {
        //....
    }
}


$tracker = new MyTracker();
$shipment = $tracker->track('foo-tracking-number');

print_r($shipment):

如果需要,您可以扩展所有现有类。

运输跟踪器

以下承运商可用

许可证

MIT许可证。请参阅 MIT