dolivroo/sdk
Composer 安装命令:
composer require dolivroo/sdk
包简介
Official PHP SDK for Dolivroo Delivery API - Unified shipping API for Algeria
README 文档
README
Official PHP SDK for the Dolivroo Delivery API - Unified shipping API for Algeria.
Features
- ✅ Unified API - Single interface for Yalidine, Ecotrack, ZR Express
- ✅ Full CRUD - Create, track, update, cancel parcels
- ✅ Rate Comparison - Compare shipping rates across providers
- ✅ Bulk Operations - Mass parcel creation with progress tracking
- ✅ Label Generation - Download shipping labels as PDF
- ✅ Laravel Ready - Service provider, facade, and config publishing
- ✅ Fully Typed - PHP 8.1+ with strict types and IDE autocompletion
Requirements
- PHP 8.1 or higher
- Guzzle HTTP 7.0+
Installation
composer require dolivroo/sdk
Laravel Setup
The SDK automatically registers itself via Laravel package discovery.
Publish the config file:
php artisan vendor:publish --tag=dolivroo-config
Add your API key to .env:
DOLIVROO_API_KEY=your-api-key-here
Quick Start
Standalone Usage
use Dolivroo\Dolivroo; $dolivroo = new Dolivroo('your-api-key'); // Create a parcel $parcel = $dolivroo->parcels->create('yalidine', [ 'customer' => [ 'first_name' => 'Mohamed', 'last_name' => 'Ali', 'phone' => '0555000000', 'address' => '123 Rue Test' ], 'destination' => [ 'wilaya' => 'Alger', 'commune' => 'Bab El Oued' ], 'package' => [ 'products' => 'T-Shirt x2', 'weight' => 1.5 ], 'payment' => [ 'amount' => 2500, 'free_shipping' => false ], 'options' => [ 'delivery_type' => 'home' ] ]); echo $parcel['tracking_id']; // YAL123456
Laravel Usage
use Dolivroo\Laravel\Facades\Dolivroo; // Using the facade $parcel = Dolivroo::parcels->create('yalidine', [...]); // Using dependency injection public function ship(Dolivroo\Dolivroo $dolivroo) { return $dolivroo->parcels->create('yalidine', [...]); }
API Reference
Parcels
// Create a parcel $dolivroo->parcels->create($companyCode, $order); // Get parcel status $dolivroo->parcels->get($companyCode, $trackingId); // List all parcels $dolivroo->parcels->list($companyCode, ['page' => 1]); // Update a parcel $dolivroo->parcels->update($companyCode, $trackingId, $order); // Cancel a parcel $dolivroo->parcels->cancel($companyCode, $trackingId); // Get label (returns base64) $dolivroo->parcels->label($companyCode, $trackingId); // Download label as binary PDF $pdf = $dolivroo->parcels->downloadLabel($companyCode, $trackingId); // Save label to file $dolivroo->parcels->saveLabel($companyCode, $trackingId, '/path/to/label.pdf');
Rates
// Get rates for a provider $rates = $dolivroo->rates->get('Alger', 'Oran', 'yalidine'); // Compare all providers $allRates = $dolivroo->rates->compare('Alger', 'Oran'); // Find cheapest option $cheapest = $dolivroo->rates->findCheapest('Alger', 'Oran', 'home');
Bulk Operations
// Create bulk upload $result = $dolivroo->bulk->create('yalidine', [ [ 'recipient' => ['name' => 'Customer 1', 'phone' => '0555111111'], 'destination' => ['wilaya_id' => 16, 'commune' => 'Bab El Oued'], 'parcel' => ['products' => 'Item A', 'amount' => 2000] ], // ... more orders ], autoProcess: true); // Check status $status = $dolivroo->bulk->status($result['sheet_id']); // Wait for completion (polls until done) $final = $dolivroo->bulk->waitForCompletion($result['sheet_id']); // Get detailed results $results = $dolivroo->bulk->results($result['sheet_id']);
Wilayas
// List all wilayas $wilayas = $dolivroo->wilayas->all(); // Find by name (fuzzy search) $alger = $dolivroo->wilayas->find('Alger'); // Get by ID $wilaya = $dolivroo->wilayas->get(16); // Validate if ($dolivroo->wilayas->isValid('Algr')) { // typo // false }
Centers (StopDesk)
// Get centers in a wilaya $centers = $dolivroo->centers->inWilaya(16, 'yalidine');
Error Handling
use Dolivroo\Exceptions\DolivrooException; use Dolivroo\Exceptions\ValidationException; use Dolivroo\Exceptions\AuthenticationException; use Dolivroo\Exceptions\RateLimitException; use Dolivroo\Exceptions\NotFoundException; try { $parcel = $dolivroo->parcels->create('yalidine', $order); } catch (ValidationException $e) { // Handle validation errors $errors = $e->getErrors(); if ($e->hasFieldError('customer.phone')) { echo "Invalid phone: " . implode(', ', $e->getFieldErrors('customer.phone')); } } catch (AuthenticationException $e) { // Invalid API key echo "Auth failed: " . $e->getMessage(); } catch (RateLimitException $e) { // Too many requests sleep(60); // Retry... } catch (NotFoundException $e) { // Parcel not found } catch (DolivrooException $e) { // General error echo "Error: " . $e->getMessage(); }
Configuration Options
$dolivroo = new Dolivroo('api-key', [ 'base_url' => 'https://custom-url.com/api/v1/unified', 'timeout' => 60, // Request timeout in seconds 'verify_ssl' => false, // Disable SSL verification (dev only) ]);
Supported Providers
| Provider | Code | Create | Track | Update | Cancel | Labels |
|---|---|---|---|---|---|---|
| Yalidine | yalidine |
✅ | ✅ | ✅ | ✅ | ✅ |
| Ecotrack | ecotrack |
✅ | ✅ | ✅ | ✅ | ✅ |
| ZR Express | zr_express |
✅ | ✅ | ❌ | ❌ | ❌ |
Testing
composer test
License
MIT License. See LICENSE for details.
Support
- 📧 Email: support@dolivroo.com
- 📖 Docs: https://dolivroo.com/dashboard/docs
- 🐛 Issues: https://github.com/dolivroo/sdk/issues
dolivroo/sdk 适用场景与选型建议
dolivroo/sdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 8 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 12 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「api」 「shipping」 「delivery」 「logistics」 「parcel」 「Algeria」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 dolivroo/sdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dolivroo/sdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 dolivroo/sdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
PHP SDK for the Parcel Monkey UK API
A PSR-7 compatible library for making CRUD API endpoints
PHP wrapper for DPD Germany SOAP API
Metamel Addresses is a polymorphic Laravel package, for address book management. You can add addresses to any eloquent model with ease.
Serve Laravel Assets from a Content Delivery Network (CDN)
A PHP (and Laravel) package to interface with the Snipcart api.
统计信息
- 总下载量: 8
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-12-22