mohamedhekal / shipbridge-dhl
DHL Express carrier driver for ShipBridge (Global)
v0.2.0
2026-07-16 15:31 UTC
Requires
- php: ^8.2
- illuminate/http: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
- mohamedhekal/shipbridge: ^0.1
Requires (Dev)
- laravel/pint: ^1.18
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/phpstan: ^2.0
README
DHL Express shipping driver for ShipBridge · Region: Global / عالمي
Real MyDHL API: https://express.api.dhl.com/mydhlapi
بالعربي — في ٣ خطوات
١) ثبّت الحزمتين
composer require mohamedhekal/shipbridge mohamedhekal/shipbridge-dhl
٢) حط مفاتيح DHL Express في .env
SHIPBRIDGE_DRIVER=dhl DHL_USERNAME=your-api-user DHL_PASSWORD=your-api-password DHL_ACCOUNT_NUMBER=123456789 DHL_BASE_URL=https://express.api.dhl.com/mydhlapi/test DHL_PRODUCT_CODE=P
للإنتاج:
https://express.api.dhl.com/mydhlapi— التفاصيل فيdocs/GUIDE_AR.md.
٣) ابعت شحنة
use Hekal\ShipBridge\Facades\ShipBridge; use Hekal\ShipBridge\DTOs\Address; use Hekal\ShipBridge\DTOs\CreateShipmentRequest; use Hekal\ShipBridge\DTOs\Parcel; $shipment = ShipBridge::driver('dhl')->createShipment(new CreateShipmentRequest( origin: new Address('المخزن', 'شارع ١', 'القاهرة', 'EG', postalCode: '11511', phone: '01011111111'), destination: new Address('العميل', 'شارع النيل', 'الجيزة', 'EG', phone: '01000000000', postalCode: '12611'), parcels: [new Parcel(weightKg: 1.2, lengthCm: 10, widthCm: 10, heightCm: 10)], reference: 'ORD-42', )); echo $shipment->trackingNumber;
تتبع / ليبل / مرتجع:
ShipBridge::driver('dhl')->track($shipment->trackingNumber); ShipBridge::driver('dhl')->label($shipment->trackingNumber); ShipBridge::driver('dhl')->createReturn(...);
English — Quick start
composer require mohamedhekal/shipbridge mohamedhekal/shipbridge-dhl
SHIPBRIDGE_DRIVER=dhl DHL_USERNAME=your-api-user DHL_PASSWORD=your-api-password DHL_ACCOUNT_NUMBER=123456789 DHL_BASE_URL=https://express.api.dhl.com/mydhlapi DHL_PRODUCT_CODE=P DHL_PICKUP_REQUESTED=false
ShipBridge::driver('dhl')->createShipment(...); // POST /shipments ShipBridge::driver('dhl')->track('AWB'); // GET /shipments/{id}/tracking ShipBridge::driver('dhl')->label('AWB'); // documents[] or tracking URL
See docs/API.md for payload fields, auth, and status mapping.
How it fits
Your Laravel app
│
▼
ShipBridge (one API for all carriers)
│
▼
shipbridge-dhl ← this package (DHL Express MyDHL API)
Testing
composer install && composer test
License
MIT © Mohamed Hekal
