فهرست مستندات پروژه
آمادست (Amadast)
تجمیعکننده چند شرکتی / کارگزار last-mile. REST API.
پیکربندی
use Eram\Ersal\Provider\Amadast\AmadastConfig;
$config = new AmadastConfig(
apiKey: 'your-api-key',
sandbox: false,
baseUrl: null,
);
قابلیتها
| رابط | پشتیبانی |
|---|---|
ShippingInterface | ✅ |
SupportsLabel | ❌ |
SupportsPickup | ❌ |
SupportsBranches | ❌ |
SupportsCOD | ❌ |
آمادست پیشنهادات چند شرکت را تجمیع میکند — label/pickup/COD را شرکتی که آمادست به آن مسیریابی میکند ارائه میدهد، نه خود آمادست.
راهاندازی
use Eram\Ersal\Ersal;
use Eram\Ersal\Provider\Amadast\AmadastConfig;
$amadast = (new Ersal())->create('amadast', new AmadastConfig(apiKey: 'your-key'));
quote() — مقایسه شرکتها در یک فراخوان
آمادست چند پیشنهاد از شرکتهای مختلف برمیگرداند. نام شرکت معمولاً در Quote::$extra قرار میگیرد.
use Eram\Ersal\Request\QuoteRequest;
$offers = $amadast->quote(new QuoteRequest(
origin: $origin, destination: $destination, parcel: $parcel,
));
foreach ($offers as $offer) {
$carrier = $offer->extra['carrier'] ?? 'نامشخص';
printf("%s از طریق %s — %s تومان، تحویل %s روز (پیشنهاد: %s)\n",
$offer->serviceLevel, $carrier,
$offer->cost->inToman(), $offer->etaDays, $offer->quoteId);
}
// انتخاب ارزانترین
usort($offers, fn($a, $b) => $a->cost->inRials() <=> $b->cost->inRials());
$cheapest = $offers[0];
createShipment() — ثبت روی پیشنهاد انتخابی
use Eram\Ersal\Request\BookingRequest;
$shipment = $amadast->createShipment(new BookingRequest(
origin: $origin, destination: $destination, parcel: $parcel,
orderId: 'ORDER-AMD-001',
quoteId: $cheapest->quoteId,
));
track()
$tracked = $amadast->track($shipment->getId());
// رویدادهای ردیابی شرکت زیربنا بدون تغییر پاس میشوند
foreach ($tracked->getHistory() as $event) {
printf("[%s] %s — %s\n",
$event->at->format('Y-m-d H:i'),
$event->status->label('fa'), $event->description);
}
cancel()
use Eram\Ersal\Exception\CancellationException;
try {
$cancelled = $amadast->cancel($shipment->getId());
} catch (CancellationException $e) {
// شرکت زیربنا لغو را قبول نکرد (مثلاً جمعآوری انجام شده)
}
مدیریت خطا
use Eram\Ersal\Exception\ProviderException;
use Eram\Ersal\Provider\Amadast\AmadastErrorCode;
try {
$amadast->createShipment($booking);
} catch (ProviderException $e) {
$code = AmadastErrorCode::tryFrom((int) $e->getErrorCode());
echo $code?->message('fa') ?? $e->getMessage();
}
نکات
- از هدر
X-Api-Keyاستفاده میکند - اگر quote شامل
quoteIdنباشد، در زمان ثبت دوباره قیمت گرفته میشود — احتمال تغییر قیمت وجود دارد - موفقیت لغو به شرکت زیربنای انتخابشده توسط آمادست بستگی دارد
⁅تجمیعکن تجمیع کننده چند شرکتی کارگزار last mile rest api use eram ersal provider amadast amadastconfig config new amadastconfig apikey your api key sandbox false baseurl null رابط پشتیبانی shippinginterface supportslabel supportspickup supportsbranches supportscod آمادست امادست پیشنهاد چند شرکت را تجمیع کرد label pickup cod را شرکتی که آمادست امادست به آن ان مسیریابی کرد ارایه داد نه خود آمادست امادست use eram ersal ersal use eram ersal provider amadast amadastconfig amadast new ersal create amadast new amadastconfig apikey your key آمادست امادست چند پیشنهاد از شرکت مختلف برمیگرد رمید گرداند نام شرکت معمولا در quote extra قرار گرفت use eram ersal request quoterequest offers amadast quote new quoterequest origin origin destination destination parcel parcel foreach offers as offer carrier offer extra carrier نامشخص printf s از طریق s s توم تحویل s روز پیشنهاد s n offer servicelevel carrier offer cost intoman offer etadays offer quoteid انتخاب ارز usort offers fn a b a cost inrials b cost inrials cheapest offers 0 use eram ersal request bookingrequest shipment amadast createshipment new bookingrequest origin origin destination destination parcel parcel orderid order amd 001 quoteid cheapest quoteid tracked amadast track shipment getid رویداد ردیابی شرکت زیربنا بدون تغییر پاس شد foreach tracked gethistory as event printf s s s n event at format y m d h i event status label fa event description use eram ersal exception cancellationexception try cancelled amadast cancel shipment getid catch cancellationexception e شرکت زیربنا لغو را قبول نکرد مثلا جمعآوری جمعاوری جمع آوری انجا شد use eram ersal exception providerexception use eram ersal provider amadast amadasterrorcode try amadast createshipment booking catch providerexception e code amadasterrorcode tryfrom int e geterrorcode echo code message fa e getmessage از هدر x api key استفاد کرد اگر quote شامل quoteid نبود در زمان ثبت دوباره قیمت گرفت شد احتمال تغییر قیمت وجود داشت موفقیت لغو به شرکت زیربن انتخابشد انتخاب شد توسط آمادست امادست بستگی داشت⁆
⁅آمادست امادست amadast⁆
⁅پیکربندیقابلیتهاراهاندازیquote پیکربندیقابلیت هاراه اندازیquote مقایسه شرکت در یک فراخوانcreateshipment ثبت روی پیشنهاد انتخابیtrack cancel مدیریت خطانک⁆