PHP code example of jacobdekeizer / statusweb-client

1. Go to this page and download the library: Download jacobdekeizer/statusweb-client library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

jacobdekeizer / statusweb-client example snippets


$client = (new \JacobDeKeizer\Statusweb\Client())
    ->setApiKey('api_key')
    ->setPassword('password');

$deliveryAddress = new \JacobDeKeizer\Statusweb\Resources\Address(
    name: 'Gijs Boersma',
    street: 'Lange laan',
    houseNumber: '29A',
    postalCode: '9281EM',
    city: 'Zevenaar',
    countryCode: \JacobDeKeizer\Statusweb\Enums\CountryCode::NETHERLANDS,
    toTheAttentionOf: 'tav',
    phoneNumber: '+31612345678',
    email: '[email protected]',
);

$labelData = new \JacobDeKeizer\Statusweb\Resources\LabelData(
    returnLabel: true, // return the pdf label in the response
    labelFormat: \JacobDeKeizer\Statusweb\Enums\LabelFormat::PDF,
);

$shipmentRow = new \JacobDeKeizer\Statusweb\Resources\ShipmentRow(
    amount: 1,
    unit: \JacobDeKeizer\Statusweb\Enums\Unit::COLLI,
    weight: 10,
);

$shipment = new \JacobDeKeizer\Statusweb\Resources\Shipment(
    deliveryAddress: $deliveryAddress,
    type: 1, // Statusweb -> Tabellen -> Zendingsoorten
    directSend: true, // when true the shipment is confirmed and can't be deleted
    labelData: $labelData,
    reference: 'My reference',
);

// setters remain available for optional values
$shipment->addShipmentRow($shipmentRow); // ->setShipmentRows accepts an array of ShipmentRows

$shipmentResponse = $client->shipments()->create($shipment);

// Show label pdf
$data = base64_decode($shipmentResponse->getLabels());
header('Content-Type: application/pdf');
echo $data;

$deleteShipmentResponse = $client->shipments()->delete(12345678); // transportNumber

$sendShipmentsResponse = $client->shipments()->send();

$statusResponse = $client->shipments()->getStatus(12345678); // transportNumber
$statusResponse->getStatuses();

$statusResponse = $client->shipments()->getAllStatuses();
$statusResponse->getStatuses();

$statusLink = $client->shipments()->getStatusUrl(12345678); // transportNumber

$etaResponse = $client->shipments()->getEstimatedTimeOfArrival(12345678); // transportNumber

$labelResponse = $client->labels()->get(9207289743, \JacobDeKeizer\Statusweb\Enums\LabelFormat::PDF);

try {
    $statusLink = $client->shipments()->getStatusUrl(12345678);
} catch (\JacobDeKeizer\Statusweb\Exceptions\StatuswebErrorResponse $statuswebErrorResponse) {
    $hasLink = $statuswebErrorResponse->getCode() === \JacobDeKeizer\Statusweb\Enums\ResponseCode::NO_STATUS_URL_FOR_SHIPMENT;
} catch (\JacobDeKeizer\Statusweb\Exceptions\StatuswebException $statuswebException) {
    $originalException = $statuswebException->getPrevious(); // do something
}

use JacobDeKeizer\Statusweb\Contracts\SessionStore;
use JacobDeKeizer\Statusweb\Dto\Session;

class DatabaseSessionStore implements SessionStore
{
    public function put(string $apiKey, Session $session): void
    {
        // save in db
    }

    public function get(string $apiKey): ?Session
    {
        // retrieve from db
    }
}

$client->setSessionStore(new DatabaseSessionStore());