ivanmitrikeski/laravel-shipping
Laravel shipping package with UPS, FedEx, Canada Post, Purolator, and USPS v3 support. Get rates and create shipments via REST/OAuth APIs, with sandbox mode and flat-rate options (boxes/prices) via Eloquent models. Usable outside Laravel, too.
ShippingProvider class) allows for easy extension or swapping of carriers.Shipment, Rate, Address, etc.) fit naturally into Laravel’s MVC structure, reducing boilerplate for shipping-related CRUD operations..env requirements for credentials and sandbox mode simplify configuration. However, sensitive data management (e.g., rotation, encryption) must be handled externally.Shipment API vs. FedEx’s CreateShipment). The package mitigates this via provider-specific classes, but custom logic may still be needed.retry helper)..env, or a secrets manager)?dispatch(new CreateShipmentJob($data))).ShippingProvider directly). Not recommended for greenfield projects..env with sandbox credentials for all target providers.Shipping classes or Facades. Use aliases if needed.php artisan migrate).php artisan vendor:publish --provider="IvanMitrikeski\Shipping\ShippingServiceProvider").config(['shipping.providers.ups' => UpsProvider::class])).OrderCreated event → calculate rates).composer update ivanmitrikeski/laravel-shipping)..env updates for provider credentials (e.g., using Laravel Forge or a secrets manager).SHIPPING_SANDBOX=true for local testing. Log provider responses for troubleshooting:
$provider->setDebug(true);
spatie/fork).CreateShipment::dispatch($shipmentData)->onQueue('shipping');
$rates = Cache::remember("rates_{$origin}_{$destination}", now()->addMinutes(5), fn() =>
$provider->getRates($origin, $destination)
);
shipments table for read-heavy workloads (e.g., add indexes for status, carrier).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Provider API downtime | Orders stuck in checkout | Fallback to a secondary carrier or manual override. |
| Invalid credentials | All requests fail | Automated alerting (e.g., Laravel Healthcheck). |
| Rate calculation timeouts | Poor UX during checkout | Queue requests and notify user via email. |
| Carrier-specific validation errors | Failed shipments | Pre-validate addresses/carrier rules. |
| Database connection issues | Lost shipment records | Use transactions and retry logic. |
Shipment API vs. UPS).403 Forbidden).How can I help you explore Laravel packages today?