alhoqbani / smsa-webservice
smsaexpress.com tracking web service (soap api)
Installs: 3 286
Dependents: 0
Suggesters: 0
Security: 0
Stars: 13
Watchers: 2
Forks: 10
Open Issues: 0
Requires
- php: ^7.1.3|^8.0|^8.1
- wsdltophp/packagebase: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^2.3
- wsdltophp/packagegenerator: ^2.9
This package is auto-updated.
Last update: 2024-12-04 17:53:05 UTC
README
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('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
$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.