Skip to content

alhoqbani/smsa-webservice

Repository files navigation

smsa-webservice

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

SMSAExpress tracking web service.

Under development. Don't use for production.

This library provides fluent and intuitive mechanism to interact with SMSAExpress eCommerce Web API: SMSAwebService.

Through this API you can cretate new shipments, track shipments, and cancel shipments programmatically.

The API follows SOAP protocol specifications, and it's not straight forward to follow or use with PHP.

This is unoffocial libary and has no affiliation with SMSAExpress. Usage of SMSAwebService is subject to its terms and conditions.

Credentials:

Before using the API you need to obtain a passKey from SMSAExpress.

Install

Via Composer

$ composer require alhoqbani/smsa-webservice

Usage

<?php

use \Alhoqbani\SmsaWebService\Smsa;

$smsa = new Smsa($passKey);

Get Status:

Get current Status of Shipment by Air waybill Number

$result = $smsa->status('290019315792');
var_dump($smsa->data);

Get Tracking

Get Tracking of Shipment by Air waybill Number

$track = $smsa->track('290019315792');

if (track->success) {
    var_dump($track->data);
} else {
    var_dump($track->error);
}

Get AWB Print in PDF

Get AWB Print in PDF

try {
    $pdf = $smsa->awbPDF('290019315810');
    header('Content-type: application/octet-stream');
    header('Content-disposition: attachment;filename=awb.pdf');
    echo $pdf->data; die();

} catch (\Alhoqbani\SmsaWebService\Exceptions\RequestError $e) {
    echo $e->getMessage();
    var_dump($e->smsaResponse)
}

Create new shipment:

Create Shipment and get SMSA AWB Number

You create an object of Shipment and pass it to $smsa->createShipment() The shipment requeires an instance of Customer and optionally a Shipper object.

<?php

use \Alhoqbani\SmsaWebService\Smsa;
use \Alhoqbani\SmsaWebService\Models\Shipment;
use \Alhoqbani\SmsaWebService\Models\Customer;
use \Alhoqbani\SmsaWebService\Models\Shipper;

$smsa = new Smsa($passKey);
// Create a customer
$customer = new Customer(
    'Customer Name', //customer name
    '0500000000', // mobile number. must be > 9 digits
    '10 King Fahad Road', // street address
    'Jeddah' // city
);

$shipment = new Shipment(
    time(), // Refrence number
    $customer, // Customer object
    Shipment::TYPE_DLV // Shipment type.
      );

$awb = $smsa->createShipment($shipment);

echo $awb->data; // 290019315792

To add additional fields

$customer
    ->setEmail('[email protected]')
    ->setAddressLine2('Building 10, Apartment 1')
    ->setPOBox('12345')
    ->setZipCode('11411')
    ->setTel1('0110000000')
    ->setTel2('0120000000');

// To add shipper details to the shipment
$shipper = new Shipper(
    'Shipper Name (LLC)', // shipper name
    'Shipper Employee', // contact name
    '1 Main Road', // address line 1
    'Riyadh', // city
    'Saudi Arabia', // country
    '0110000000' // phone
);

$shipment->setShipper($shipper);

Cancel shipment:

Cancel a Shipment by Air waybill Number

$result = $smsa->cancel('AWB NUMBER')
var_dump($result->jsonSerialize())

Get Cities

Get List of Cities for Retails list

$smsa->shouldUseExceptions = false; // Disable throwing exceptions by the library

$cities = $smsa->cities();

if( $cities->success) {
    var_dump($cities->data)
} else {
    var_dump($cities->error)
}

Get Retails

Get Retails list by each city

$retails = $smsa->retails();
var_dump($retails); 
// or by city (route code):
$retails =  $smsa->retailsIn('TUU');

Example App

You can check this repository for an example app built with Laravel.

Change log

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

Testing

Not yet :(

TODO

  • Testing!!
  • Complete remaining operations.

Contributing

Please see CONTRIBUTING and CODE_OF_CONDUCT for details.

Credits

License

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