smsa-webservice
![Latest Version on Packagist][ico-version]
![Build Status][ico-travis]
![Quality Score][ico-code-quality]
, (*1)
SMSAExpress tracking web service., (*2)
Under development. Don't use for production.
This library provides fluent and intuitive mechanism to interact with SMSAExpress eCommerce Web API: SMSAwebService., (*3)
Through this API you can cretate new shipments, track shipments, and cancel shipments programmatically., (*4)
The API follows SOAP protocol specifications, and it's not straight forward to follow or use with PHP., (*5)
This is unoffocial libary and has no affiliation with SMSAExpress. Usage of SMSAwebService is subject to its terms and conditions., (*6)
Credentials:
Before using the API you need to obtain a passKey
from SMSAExpress., (*7)
Install
Via Composer, (*8)
``` bash
$ composer require alhoqbani/smsa-webservice, (*9)
## Usage
``` php
<?php
use \Alhoqbani\SmsaWebService\Smsa;
$smsa = new Smsa($passKey);
Get Status:
Get current Status of Shipment by Air waybill Number, (*10)
$result = $smsa->status('290019315792');
var_dump($smsa->data);
Get Tracking
Get Tracking of Shipment by Air waybill Number, (*11)
$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, (*12)
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, (*13)
You create an object of Shipment
and pass it to $smsa->createShipment()
The shipment requeires an instance of Customer
and optionally a Shipper
object., (*14)
<?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, (*15)
$customer
->setEmail('customer@example.com')
->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, (*16)
$result = $smsa->cancel('AWB NUMBER')
var_dump($result->jsonSerialize())
Get Cities
Get List of Cities for Retails list, (*17)
$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, (*18)
$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., (*19)
Change log
Please see CHANGELOG for more information on what has changed recently., (*20)
Testing
Not yet :(, (*21)
TODO
- [ ] Testing!!
- [ ] Complete remaining operations.
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details., (*22)
Credits
License
The MIT License (MIT). Please see License File for more information., (*23)