goedgepickt/dhlparcel-php-api

PHP版本的DHL Parcel API客户端

资助包维护!
mvdnbrk

v1.5.14 2023-09-08 07:47 UTC

README

此仓库是 mvdnbrk/dhlparcel-php-api 的分支版本

PHP版本的DHL Parcel API客户端

PHP version Latest Version on Packagist Software License Tests Code style Total Downloads

DHL Parcel API 文档

安装

您可以通过composer安装此包

composer require mvdnbrk/dhlparcel-php-api

用法

初始化DHL Parcel客户端并设置您的凭证。

$dhlparcel = new \Mvdnbrk\DhlParcel\Client();

$dhlparcel->setUserId('your-user-id');
$dhlparcel->setApiKey('your-api-key');

如果您有多个账户,您可以选择设置账户ID

$dhlparcel->setAccountId('123456');

创建包裹

$parcel = new \Mvdnbrk\DhlParcel\Resources\Parcel([
    'reference' => 'your own reference for the parcel (optional)',
    'recipient' => [
        'first_name' => 'John',
        'last_name' => 'Doe',
        'street' => 'Poststraat',
        'number' => '1',
        'number_suffix' => 'A',
        'postal_code' => '1234AA',
        'city' => 'Amsterdam',
        'cc' => 'NL',
    ],
    'sender' => [
        'company_name' => 'Your Company Name',
        'street' => 'Pakketstraat',
        'additional_address_line' => 'Industrie 9999',
        'number' => '99',
        'postal_code' => '9999AA',
        'city' => 'Amsterdam',
        'cc' => 'NL',
    ],
    // Optional. This will be set as the default.
    'pieces' => [
        [
            'parcel_type' => \Mvdnbrk\DhlParcel\Resources\Piece::PARCEL_TYPE_SMALL,
            'quantity' => 1,
        ],
    ],
]);

创建货运

$shipment = $dhlparcel->shipments->create($parcel);

$shipment->id;
// For shipments with multiple pieces:
$shipment->pieces->each(function ($item) {
    $item->label_id;
    $item->barcode;
})
// For a shipment with one single piece:
$shipment->label_id;
$shipment->barcode;

检索标签

可以通过使用 label_id 来检索标签。这将返回一个字符串形式的PDF标签。

$dhlparcel->labels->get($shipment->label_id);

或者,您可以直接将 Shipment 实例传递给此方法

$dhlparcel->labels->get($shipment);

传递 Shipment 实例将只检索单个件货运的标签,或者如果您创建了包含多个件的货运,则是第一件的标签。如果您创建了包含多个件的货运,您应该逐个检索您货运中每个件的标签。

设置包裹的投递选项

您可以在创建包裹时直接传入选项来设置包裹的投递选项

$parcel = new \Mvdnbrk\MyParcel\Resources\Parcel([
    ...
    'recipient' => [
        ...
    ],
    'options' => [
        'description' => 'Order #123',
        'signature' => true,
        'only_recipient' => true,
        'cash_on_delivery' => 9.95,
        'evening_delivery' => true,
        'extra_assurance' => true,
        ...
    ],
]);

或者您可以使用在构建包裹后使用的方法,如 signature()

$parcel->onlyRecipient()
       ->signature()
       ->labelDescription('Order #123')
       ->cashOnDelivery(9.95)
       ->eveningDelivery()
       ->extraAssurance();

邮箱包裹

如果您想发送一个适合标准邮箱的包裹,您可以使用 mailboxpackage() 方法

$parcel->mailboxpackage();

将包裹递送到DHL服务点

您可以将包裹发送到DHL服务点,客户可以在此处取件。服务点的ID可以在创建包裹时直接设置,或使用 servicePoint 方法

$parcel = new \Mvdnbrk\MyParcel\Resources\Parcel([
    ...
    'options' => [
        'service_point_id' => '8004-NL-272403',
        ...
    ],
]);

$parcel->servicePoint('8004-NL-272403');

跟踪货运

$tracktrace = $dhlparcel->tracktrace->get('JVGL...');

// Check if the shipment is delivered:
$tracktrace->isDelivered;

检索服务点

$servicepoints = $dhlparcel->servicePoints->setPostalcode('1012AA')->setHousenumber('1')->get();

这将返回一个 ServicePoint 对象的集合

$servicepoints->each(function ($item) {
    $item->id;
    $item->name;
    $item->latitude;
    $item->longitude;
    $item->distance;
    $item->distanceForHumans();
});

与Laravel一起使用

您可以通过使用 此包 将此包集成到您的Laravel应用程序中。

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可

MIT许可(MIT)。请参阅 许可文件 了解更多信息。