tsekka/omniva

Quick way to connect your php app with Omniva, a Baltic carrier serving Estonia, Latvia and Lithuania. Sends XML data via SOAP. Generates an Omniva order, outputs tracking number & orders package label via email to your email.

0.1.4 2023-07-29 07:49 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Omniva is a shipping carrier serving Baltic countries Estonia, Latvia and Lithuania. With this package, you'll be able to generate parcels and request shipping labels.

Features

  • Generate shipments (type of request responds to businessToClientMsgRequest) and get the shipment's barcode.
  • Get the shipment's barcode (can be used to show tracking code or to get shipping label).
  • Request shipping label to be sent via email from Omniva's server.
  • Get parcel label as file.

Installation

You can install the package via composer:

composer require tsekka/omniva

Usage examples

Generating the shipment

This example assumes you'll use the Omniva's parcel machine as the destination and that you know its zip code.

The list of parcel machines is easily available in json, xml and csv formats. Please see the Omniva's manual to get the list of destination points and service codes used in this example.

    use Tsekka\Omniva\Client;
    use Tsekka\Omniva\Parcel;
    use Tsekka\Omniva\Address;
    use Tsekka\Omniva\PickupPoint;

    /**
     * Set your authentication details.
     */
    $client = new Client(
        username: 'your Omniva web service username',
        password: 'your Omniva web service password'
    );

    /**
     * Set & define delivery service, 
     * pickup point's information 
     * and additional services. 
     */
    $parcel = new Parcel(
        deliveryService: 'PA'
    );
    $pickupPoint = new PickupPoint(
        offloadPostcode: 96094,
        type: 0
    );
    $parcel
        ->addAdditionalService('ST')
        ->addAdditionalService('SF');

    /**
     * Set & define receiver and returnee.
     */
    $receiver = new Address();
    $receiver->pickupPoint = $pickupPoint;
    $receiver->name = 'Jane Doe';
    $receiver->mobile = '+3725511223';
    $receiver->email = 'client@example.com';
    $returnee = new Address();
    $returnee->country = 'EE';
    $returnee->name = 'John Roe';
    $returnee->mobile = '+3725566778';
    $returnee->email = 'returnee@example.com';
    $returnee->postcode = '80040';
    $returnee->deliverypoint = 'PARNU';
    $returnee->street = 'Savi 20';
    $returnee->country = 'EE';
    $parcel->receiver = $receiver;
    $parcel->returnee = $returnee;

    /**
     * Generate the shipment & get the barcode
     */
    $barcode = $client->createShipment($parcel);

Getting the shipping label

    /**
     * Request the label to be emailed to you from Omniva's server
     */
    $client->sendLabel($barcode, 'business@example.com');

    /**
     * Or get the content of pdf file & save or output it
     */
    $fileData = $client->getLabel($barcode);
    $fileName = "label_{$barcode}.pdf";
    file_put_contents(storage_path() . "/{$fileName}", base64_decode($fileData));
    header('Content-type: application/pdf');
    header('Content-Disposition: attachment; filename="' . $fileName . '"');
    echo base64_decode($fileData);

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Contributions are welcome and will be credited.

Security Vulnerabilities

Please report security vulnerabilities by email pintek@pintek.ee.

Credits

License

The MIT License (MIT). Please see License File for more information.