SMSAExpress tracking web service.
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.
Before using the API you need to obtain a passKey
from SMSAExpress.
Via Composer
$ composer require alhoqbani/smsa-webservice
<?php
use \Alhoqbani\SmsaWebService\Smsa;
$smsa = new Smsa($passKey);
Get current Status of Shipment by Air waybill Number
$result = $smsa->status('290019315792');
var_dump($smsa->data);
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
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 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 a Shipment by Air waybill Number
$result = $smsa->cancel('AWB NUMBER')
var_dump($result->jsonSerialize())
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 list by each city
$retails = $smsa->retails();
var_dump($retails);
// or by city (route code):
$retails = $smsa->retailsIn('TUU');
You can check this repository for an example app built with Laravel.
Please see CHANGELOG for more information on what has changed recently.
Not yet :(
- Testing!!
- Complete remaining operations.
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
The MIT License (MIT). Please see License File for more information.