This version of the SDK has been deprecated and replaced with the newly reconstructed SDK.
For the latest API features and improved integration, please visit our updated repository at https://github.com/AfterShip/tracking-sdk-php and follow the provided instructions.
aftership-php is a PHP SDK (module) for AfterShip API. Module provides clean and elegant way to access API endpoints.
Contact: support@aftership.com
Option 1 (recommended): Download and Install Composer. https://getcomposer.org/download/
Run the following command to require AfterShip PHP SDK
composer require aftership/aftership-php-sdk
Use autoloader to import SDK files
require 'vendor/autoload.php';
$key = 'AFTERSHIP API KEY';
$couriers = new AfterShip\Couriers($key);
$trackings = new AfterShip\Trackings($key);
$last_check_point = new AfterShip\LastCheckPoint($key);- Download or clone this repository to desired location
- Reference files of this SDK in your project. Absolute path should be prefered.
require('/path/to/repository/src/AfterShipException.php');
require('/path/to/repository/src/BackwardCompatible.php');
require('/path/to/repository/src/Couriers.php');
require('/path/to/repository/src/LastCheckPoint.php');
require('/path/to/repository/src/Notifications.php');
require('/path/to/repository/src/Requestable.php');
require('/path/to/repository/src/Request.php');
require('/path/to/repository/src/Trackings.php');
$key = 'AFTERSHIP API KEY';
$couriers = new AfterShip\Couriers($key);
$trackings = new AfterShip\Trackings($key);
$notifications = new AfterShip\Notifications($key);
$last_check_point = new AfterShip\LastCheckPoint($key);Please ensure you have installed the PHP extension CURL, you could run the following command to install it
sudo apt-get install php5-curl
and restart the web server and PHP process.
Use signature headers
require 'vendor/autoload.php';
$api_key = 'AFTERSHIP API KEY';
$api_secret = 'Your api secret'; // if the encryption_method = RSA, the api_secret is PEM private key
$encryption_method = 'AES or RSA';
$encryption_password = 'PEM pass phrase';
$key = ['api_key' => $api_key, 'api_secret' => $api_secret, 'encryption_method' => $encryption_method, 'encryption_password' => $encryption_password]
$couriers = new AfterShip\Couriers($key);
$trackings = new AfterShip\Trackings($key);
$last_check_point = new AfterShip\LastCheckPoint($key);Custom CURL opt
require 'vendor/autoload.php';
$api_key = 'AFTERSHIP API KEY';
$curl_opt = [CURLOPT_PROXY => 'http://example.com', 'CURLOPT_PROXYPORT' => '8080']
$couriers = new AfterShip\Couriers($key, null, $curl_opt);
$trackings = new AfterShip\Trackings($key, null, $curl_opt);
$last_check_point = new AfterShip\LastCheckPoint($key, null, $curl_opt);- Execute the file:
- If you are install manually, please execute 'test/testing.php' on your browser.
- If you are install by composer, please execute 'vendor/aftership/aftership-php-sdk/test/testing.php' on your browser.
- Insert your AfterShip API Key. How to generate AfterShip API Key
- Click the request all button or the button of the represented request.
Simply add a try-catch block
try {
$couriers = new AfterShip\Couriers('AFTERSHIP_API_KEY');
$response = $couriers->get();
}catch(\AfterShipException $e) {
echo $e->getMessage();
}https://www.aftership.com/docs/api/4/couriers/get-couriers
$couriers = new AfterShip\Couriers('AFTERSHIP_API_KEY');
$response = $couriers->get();https://www.aftership.com/docs/api/4/couriers/get-couriers-all
$couriers = new AfterShip\Couriers('AFTERSHIP_API_KEY');
$response = $couriers->all();https://www.aftership.com/docs/api/4/couriers/post-couriers-detect
$courier = new AfterShip\Couriers('AFTERSHIP_API_KEY');
$response = $courier->detect('1234567890Z');Couriers below need pass additional_fields when create, update, or delete tracking
| Courier Slug | Required Fields |
|---|---|
| abcustom | [tracking_postal_code] |
| alliedexpress | [tracking_postal_code] |
| amazon-fba-us | [tracking_key] |
| apc-overnight-connum | [tracking_postal_code] |
| ark-logistics | [tracking_postal_code] |
| arrowxl | [tracking_postal_code] |
| asm | [tracking_postal_code] |
| australia-post-sftp | [tracking_account_number] |
| b2ceurope | [tracking_postal_code & tracking_destination_country] |
| bestwayparcel | [tracking_key] |
| bluestar | [tracking_postal_code] |
| bpost | [tracking_postal_code] |
| brt-it-sender-ref | [tracking_account_number] |
| capital | [tracking_account_number] |
| chrobinson | [tracking_key] |
| colis-prive | [tracking_postal_code] |
| courant-plus | [tracking_account_number] |
| deutsch-post | [tracking_ship_date] |
| dhl-reference | [tracking_ship_date] |
| dpd-fr-reference | [tracking_account_number] |
| dx | [tracking_account_number] |
| dynamic-logistics | [tracking_account_number] |
| endeavour-delivery | [tracking_postal_code] |
| eu-fleet-solutions | [tracking_postal_code] |
| geodis-espace | [tracking_key] |
| gls-netherlands | [tracking_postal_code] |
| gls-spain | [tracking_key] |
| interlink-express-reference | [tracking_postal_code] |
| international-seur-api | [tracking_ship_date] |
| mikropakket | [tracking_postal_code] |
| mikropakket-be | [tracking_postal_code] |
| mondialrelay | [tracking_postal_code] |
| nacex | [tracking_account_number] |
| nacex-spain | [tracking_postal_code] |
| newzealand-couriers | [tracking_account_number] |
| packs | [tracking_postal_code] |
| palletways | [tracking_postal_code] |
| panther-order-number | [tracking_postal_code] |
| panther-reference | [tracking_account_number] |
| paper-express | [tracking_postal_code] |
| parcelpoint | [tracking_key] |
| planzer | [tracking_postal_code] |
| postnl | [tracking_postal_code] |
| postnl-3s | [tracking_destination_country & tracking_postal_code] |
| relaiscolis | [tracking_key] |
| star-track-courier | [tracking_state] |
| tfm | [tracking_postal_code] |
| thedeliverygroup | [tracking_postal_code] |
| total-express | [tracking_account_number & tracking_key] |
| transmission-nl | [tracking_postal_code] |
| tuffnells | [tracking_account_number & tracking_postal_code] |
| tuffnells-reference | [tracking_postal_code] |
| virtransport | [tracking_account_number] |
| xdp-uk | [tracking_postal_code] |
| xdp-uk-reference | [tracking_postal_code] |
https://www.aftership.com/docs/api/4/trackings/post-trackings
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$tracking_info = [
'slug' => 'dhl',
'title' => 'My Title',
];
$response = $trackings->create('RA123456789US', $tracking_info);(Will be available soon)
https://www.aftership.com/docs/api/4/trackings/delete-trackings
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->delete('dhl', 'RA123456789US');https://www.aftership.com/docs/api/4/trackings/delete-trackings
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->delete('abcustom', 'RA123456789US', ['tracking_postal_code' => '90199']);https://www.aftership.com/docs/api/4/trackings/delete-trackings
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->deleteById('53df4a90868a6df243b6efd8');https://www.aftership.com/docs/api/4/trackings/get-trackings
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$options = [
'page' => 1,
'limit' => 10
];
$response = $trackings->all($options);https://www.aftership.com/docs/api/4/trackings/get-trackings-slug-tracking_number
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->get('dhl', 'RA123456789US', array('title','order_id'));https://www.aftership.com/docs/api/4/trackings/get-trackings-slug-tracking_number
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->get('dhl', 'RA123456789US', array('fields' => 'title,order_id'));https://www.aftership.com/docs/api/4/trackings/get-trackings-slug-tracking_number
In case of china-post and china-ems it is possible to customize language of checkpoint messages.
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->get('dhl', 'RA123456789US', array('lang' => 'en'));https://www.aftership.com/docs/api/4/trackings/get-trackings-slug-tracking_number
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->getById('53df4a90868a6df243b6efd8', array('title','order_id'));https://www.aftership.com/docs/api/4/trackings/put-trackings-slug-tracking_number
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$params = array(
'smses' => [],
'emails' => [],
'title' => '',
'customer_name' => '',
'order_id' => '',
'order_id_path' => '',
'custom_fields' => []
);
$response = $trackings->update('dhl', 'RA123456789US', $params);https://www.aftership.com/docs/api/4/trackings/put-trackings-slug-tracking_number
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$params = array(
'smses' => [],
'emails' => [],
'title' => '',
'customer_name' => '',
'order_id' => '',
'order_id_path' => '',
'custom_fields' => []
);
$response = $trackings->updateById('53df4a90868a6df243b6efd8', $params);https://www.aftership.com/docs/api/4/trackings/post-trackings-slug-tracking_number-retrack
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->retrack('dhl','RA123456789US');https://www.aftership.com/docs/api/4/trackings/post-trackings-slug-tracking_number-retrack
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->retrack('abcustom','RA123456789US', ['tracking_postal_code' => '90199']);https://www.aftership.com/docs/api/4/trackings/post-trackings-slug-tracking_number-retrack
$trackings = new AfterShip\Trackings('AFTERSHIP_API_KEY');
$response = $trackings->retrackById('53df4a90868a6df243b6efd8');Return the tracking information of the last checkpoint of a single tracking by slug and tracking number
https://www.aftership.com/docs/api/4/last_checkpoint/get-last_checkpoint-slug-tracking_number
$last_check_point = new AfterShip\LastCheckPoint('AFTERSHIP_API_KEY');
$response = $last_check_point->get('dhl','RA123456789US');https://www.aftership.com/docs/api/4/last_checkpoint/get-last_checkpoint-slug-tracking_number
$last_check_point = new AfterShip\LastCheckPoint('AFTERSHIP_API_KEY');
$response = $last_check_point->getById('53df4a90868a6df243b6efd8');https://www.aftership.com/docs/api/4/notifications/post-add-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->create('ups', '1ZV90R483A33906706', [
'emails' => ['youremail@yourdomain.com']
])https://www.aftership.com/docs/api/4/notifications/post-add-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->create('abcustom', '1ZV90R483A33906706', [
'emails' => ['youremail@yourdomain.com']
], ['tracking_postal_code' => '90199'])https://www.aftership.com/docs/api/4/notifications/post-add-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->createById('53df4a90868a6df243b6efd8');https://www.aftership.com/docs/api/4/notifications/post-remove-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->delete('ups', '1ZV90R483A33906706', [
'emails' => ['youremail@yourdomain.com']
]);https://www.aftership.com/docs/api/4/notifications/post-remove-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->delete('abcustom', '1ZV90R483A33906706', [
'emails' => ['youremail@yourdomain.com']
], ['tracking_postal_code' => '90199']);https://www.aftership.com/docs/api/4/notifications/post-remove-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->deleteById('53df4d66868a6df243b6f882'));https://www.aftership.com/docs/api/4/notifications/get-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->get('dhl', '2254095771'));https://www.aftership.com/docs/api/4/notifications/get-notifications
$notifications = new AfterShip\Notifications('AFTERSHIP_API_KEY');
$response = $notifications->getById('53df4a90868a6df243b6efd8', ['fields' => 'customer_name']);https://www.aftership.com/docs/api/4/webhook You could find the example code at here
These amazing people have contributed code to this project:
- Teddy Chan - view contributions
- Sunny Chow - view contributions
- Abishek R Srikaanth - view contributions
- Luis Cordova - view contributions
- Russell Davies - view contributions
- akovalyov - view contributions
- Robert Basic - view contributions
- Marek Narozniak - view contributions