PHPackages                             mohamedali/laravel-shipping - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. mohamedali/laravel-shipping

ActiveLibrary[API Development](/categories/api)

mohamedali/laravel-shipping
===========================

Laravel package for shipping companies integrations (Aramex, Sally, SMSA)

02↓93.3%PHP

Since Feb 24Pushed 4mo agoCompare

[ Source](https://github.com/MOHAMEDALIDONIA/laravel-shipflow)[ Packagist](https://packagist.org/packages/mohamedali/laravel-shipping)[ RSS](/packages/mohamedali-laravel-shipping/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel Shipping Integration
============================

[](#laravel-shipping-integration)

A flexible and extensible Laravel package for integrating multiple shipping providers like **Aramex**, **SMSA**, **Sally**, and others using a unified interface.

---

🚀 Purpose
---------

[](#-purpose)

The goal of this package is to provide a standardized way to handle shipping operations across different providers. It abstracts the complexity of API requests, data validation, and response handling, allowing you to switch or add shipping drivers with minimal effort.

---

📦 Installation
--------------

[](#-installation)

1. Install the package via composer:

    ```
    composer require mohamedali/laravel-shipping:dev-main
    ```
2. Register the service provider (if not using auto-discovery):

    ```
    Mohamedali\LaravelShipping\ShippingServiceProvider::class
    ```
3. Publish the configuration and migrations:

    ```
    php artisan shipping:publish-config
    php artisan migrate
    ```

---

🛠 Commands
----------

[](#-commands)

The package includes several Artisan commands to streamline development and setup:

### 1. `shipping:publish-config`

[](#1-shippingpublish-config)

Publishes the `shipping.php` configuration file and package migrations.

- **Usage:** `php artisan shipping:publish-config`
- **Options:** `--force` to overwrite existing files.

### 2. `make:shipping-driver {name}`

[](#2-makeshipping-driver-name)

Generates a new shipping driver and its associated payload class.

- **Usage:** `php artisan make:shipping-driver Fedex`
- **What it does:**
    - Creates a driver class in `app/Shipping/Drivers/`.
    - Creates a payload validation class in `app/Shipping/Payloads/`.
    - Automatically registers the new driver in `config/shipping.php`.

### 3. `make:shipping-payload`

[](#3-makeshipping-payload)

An interactive command to generate a payload class pre-filled with example data for specific providers.

- **Usage:** `php artisan make:shipping-payload`
- **Supported Providers:** Aramex, SMSA, Sally.
- **What it does:** Creates a class with a static `data()` method containing the required API structure, making it easy to test shipments immediately.

---

📖 Usage Guide
-------------

[](#-usage-guide)

### 1. Basic Shipment

[](#1-basic-shipment)

Resolve the shipping manager and choose your driver. We recommend using a Payload class to structure your data:

```
use Mohamedali\LaravelShipping\Services\ShippingManager;
use App\Shipping\Payloads\AramexOrderPayload;

$shipping = app(ShippingManager::class)->driver('aramex');

// Prepare payload data using the static data method
$payload = AramexOrderPayload::data($order);

$success = $shipping->processShipment($payload);
```

### 2. Attaching a Model (`for`)

[](#2-attaching-a-model-for)

You can link a shipment to any Eloquent model (e.g., Order, User). This automatically records the shipment details in the `delivery_info` table via a morph relationship.

```
$shipping->for($order)->processShipment($payload);
```

### 3. Success Callback (`onSuccess`)

[](#3-success-callback-onsuccess)

Execute custom logic immediately after a successful shipment. The callback receives the model instance, the full API response, and the provider name.

```
$shipping->for($order)
    ->onSuccess(function ($model, $response, $provider) {
        $model->update(['status' => 'shipped']);
        Log::info("Order {$model->id} shipped via {$provider}");
    })
    ->processShipment($payload);
```

### 4. Retrieving Labels

[](#4-retrieving-labels)

Retrieve the latest successful label URL for a specific model and provider:

```
$labelUrl = $shipping->getLabel($order);
```

---

🏗 Architecture
--------------

[](#-architecture)

- **`ShippingManager`**: The entry point that resolves driver instances based on configuration.
- **`BaseShippingService`**: The core abstract class that handles the lifecycle of a shipment (Validation -&gt; Request -&gt; Response Logging -&gt; Callbacks).
- **`Payload` Classes**: Responsible for validating the input data before it's sent to the API.
- **`DeliveryInfo` Model**: Stores the history of shipments, linked to your application's models using polymorphic relationships.

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance52

Moderate activity, may be stable

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/1cd3602bca993434b21d0755faa8892d92c853045b8b164e5fe54a0cc2d8366e?d=identicon)[MOHAMEDALIDONIA](/maintainers/MOHAMEDALIDONIA)

---

Top Contributors

[![MOHAMEDALIDONIA](https://avatars.githubusercontent.com/u/100955086?v=4)](https://github.com/MOHAMEDALIDONIA "MOHAMEDALIDONIA (10 commits)")

### Embed Badge

![Health badge](/badges/mohamedali-laravel-shipping/health.svg)

```
[![Health](https://phpackages.com/badges/mohamedali-laravel-shipping/health.svg)](https://phpackages.com/packages/mohamedali-laravel-shipping)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k15](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
