donotcarry / shipengine
PHP library for the ShipEngine API.
Installs: 290
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 12
pkg:composer/donotcarry/shipengine
Requires
- php: >=7.4
- cbschuld/php-uuid-base58: ^1.0
- guzzlehttp/guzzle: ^7.0
- php-http/client-common: ^2.3.0
- php-http/discovery: ^1.12.0
- php-http/httplug: ^2.2.0
- php-http/message: ^1.10.0
- php-http/message-factory: ^1.0.2
- psr/http-client: ^1.0.1
- psr/http-message: ^1.0|^2.0
- symfony/event-dispatcher: ^6.0|^7.1
- symfony/property-access: ^6.0|^7.1
- symfony/serializer: ^6.0|^7.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- guzzlehttp/psr7: ^2.7
- mockery/mockery: ^1.4
- php-coveralls/php-coveralls: ^2.4
- php-http/guzzle7-adapter: ^0.1.1
- phpstan/phpstan: ^0.12.53
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: ^9
- squizlabs/php_codesniffer: 3.*
This package is not auto-updated.
Last update: 2025-10-21 22:36:20 UTC
README
ShipEngine PHP
A PHP library built on the ShipEngine API offering low-level access as well as convenience methods.
Table of Contents
Quick Start
Install ShipEngine via Composer:
composer require shipengine/shipengine
- The only configuration requirement is an API Key.
The following example assumes that you have already set the
SHIPENGINE_API_KEYenvironment variable with your Api Key usingputenv().
Examples
Methods
- validateAddress - Indicates whether the provided address is valid. If the address is valid, the method returns a normalized version of the address based on the standards of the country in which the address resides.
- normalizeAddress - Returns a normalized, or standardized, version of the address. If the address cannot be normalized, an error is returned.
- trackPackage - Track a package by
packageIdor bycarrierCodeandtrackingNumber. This method returns the all tracking events for a given shipment.
Class Objects
- ShipEngine - A configurable entry point to the ShipEngine API SDK, this class provides convenience methods for various ShipEngine API Services.
Instantiate ShipEngine Class
<?php declare(strict_types=1); require __DIR__ . '/vendor/autoload.php'; use ShipEngine\ShipEngine; $apiKey = getenv('SHIPENGINE_API_KEY'); $shipengine = new ShipEngine($apiKey);
- You can also pass the ShipEngine object an array containing
configurationoptions instead of a string.
<?php declare(strict_types=1); require __DIR__ . '/vendor/autoload.php'; use ShipEngine\ShipEngine; $apiKey = getenv('SHIPENGINE_API_KEY'); $config = array( 'apiKey' => $apiKey, 'pageSize' => 75, 'retries' => 3, 'timeout' => \DateInterval('PT60S') ); $shipengine = new ShipEngine($config);
Testing
- You can now run all tests using PHPUnit: phpunit
composer test
Linting
You can utilize the composer script that runs phpcs, phpstan, and php-cs-fixer.
composer lint
Contributing
Contributions, enhancements, and bug-fixes are welcome! Open an issue on GitHub and submit a pull request.
We are managing php environment with Nix
and Direnv, and we recommend downloading
them before contributing to this project.
-
The quickest way to install Nix is to open a terminal and run the following command, make sure to follow the instructions output by the installation script:
curl -L https://nixos.org/nix/install | sh -
Next, install
Direnvusing one of th methods outlined on their install page here: Direnv Installation -
Lastly, you will need open your terminal and while this repository the current working directory and run
direnv allow, this will allowdirenvto auto-load every time you navigate to the repo. This will automatically load theNixenvironment which is running the proper version ofPHP and Xdebug (PHP 7.4)this repository supports/requires.direnv allow
- You will need to
cdout of the project directory after you first installdirenvand rundirenv allowfrom within the project directory, and thencdback into the project directory fordirenvto auto-load theNixenvironment properly.
- You will need to
This project also makes use of pre-commit hooks to help run lint and tests at time of commit, to leverage this you will
need to install pre-commit and run the following command while in this repo:
pre-commit install