webit / gls-tracking
Web-IT GLS 跟踪 API
2.0.1
2022-06-28 11:12 UTC
Requires
- php: >=5.3.3
- jms/serializer: ^1.0
- webit/soap-api: ^2.0.3
Requires (Dev)
- phpunit/phpunit: ^4.6.0
README
安装
将 webit/gls-tracking 添加到 composer.json
{ "require": { "php": ">=5.3.2", "webit/gls-tracking": "^2.0" } }
配置/使用
API 工厂准备
use Doctrine\Common\Annotations\AnnotationRegistry; use Webit\GlsTracking\Api\Factory\TrackingApiFactory; use Webit\GlsTracking\Model\UserCredentials; $loader = include __DIR__.'/../vendor/autoload.php'; AnnotationRegistry::registerLoader(array($loader, 'loadClass')); if (is_file(__DIR__ .'/config.php') == false) { throw new \LogicException( 'Missing required file "examples/config.php". Create it base on "examples/config.php.dist".' ); } $config = require __DIR__ .'/config.php'; $apiFactory = new TrackingApiFactory();
跟踪 API
$credentials = new UserCredentials('user', 'pass'); $api = $apiFactory->createTrackingApi($credentials); $details = $api->getParcelDetails($parcelNo); /** @var \Webit\GlsTracking\Model\Event $event */ printf("Details of parcel \"%s\"\n", $parcelNo); foreach ($details->getHistory() as $event) { printf( "%s - Status: %s (%s), Location: %s, %s (%s)\n", $event->getDate(), $event->getCode(), $event->getDescription(), $event->getLocationName(), $event->getCountryName(), $event->getLocationCode() ); } printf("Received by: %s\n", $details->getSignature()); $pod = $api->getProofOfDelivery($parcelNo); printf("Proof of delivery filename: %s\n", $pod->getFileName()); file_put_contents('/your/docs/dir/' . $pod->getFileName(), $pod->getFile());
跟踪 URL 提供者
use Webit\GlsTracking\UrlProvider\TrackingUrlProviderFactory; $factory = new TrackingUrlProviderFactory(); /** @var array $config */ $username = 'username'; $urlProvider = $factory->createTrackingUrlProvider(); $reference = 'parcel-no'; $url = $urlProvider->getStandardTrackingUrl($reference, 'EN', 'EN'); printf("Url for tracking \"%s\" (encrypted): %s\n", $reference, $url); $url = $urlProvider->getEncryptedTrackingUrl($credentials, $reference, $config['language']); printf("Url for tracking \"%s\" (encrypted): %s\n", $reference, $url); $customerReference = 'customer-ref'; $customerNo = 'customer-no'; $url = $urlProvider->getEncryptedCustomerReferenceTrackingUrl($credentials, $customerReference, $customerNo, $config['language']); printf("Url for tracking \"%s\" with customer \"%s\": %s\n", $customerReference, $customerNo, $url);
示例
配置示例
- 将 examples/config.php.dist 复制到 examples/config.php
- 根据需要更改值
运行
php examples/details.php php examples/url-provider.php
测试
单元/集成测试
./vendor/bin/phpunit --testsuite unit
API 测试
需要有效的 GLS 跟踪 API 凭据和有效的包裹号码
将 phpunit.xml.dist 复制到 phpunit.xml,然后相应地编辑 env 变量
./vendor/bin/phpunit --testsuite api