پیشنیاز: داشتن access_token | خروجی: دریافت shipment_id و shipment_code
دو روش برای ثبت ارسال وجود دارد که نمیتوان هر دو را با هم ترکیب کرد:
| روش | توضیح | چه زمانی استفاده شود |
|---|---|---|
| Specified Parcels | اطلاعات دقیق هر پارسل (وزن، ابعاد) همراه با ثبت ارسال ارسال میشود | زمانی که اطلاعات همه پارسلها در لحظه ثبت مشخص است |
| Estimated Capacity | تخمینی از ظرفیت کلی رزرو میشود؛ پارسلها بعداً اضافه میشوند | زمانی که تعداد یا جزئیات دقیق پارسلها در لحظه ثبت مشخص نیست |
روش اول : ثبت با پارسل مشخص (Specified Parcels)
این سرویس برای زمانی است که در لحظه ثبت سفارش، جزئیات دقیق بستهبندی (تعداد، وزن و ابعاد پارسلها) به طور کامل مشخص است.
https://api-demo.digiexpress.ir/api/v2/shipments- Authorization: <access_token>
ساختار درخواست (Request Body):
{
"consignor_unique_reference_id": "string",
"revive_if_already_registered_and_failed": true,
"cargo_ready_date_time": "string",
"promise_start_date_time": "string",
"promise_end_date_time": "string",
"origin_point_id": "string",
"origin_address": {
"city_id": "string",
"full_address": "string",
"building_number": "string",
"unit": "string",
"postal_code": "string",
"latitude": "string",
"longitude": "string",
"description": "string"
},
"cargo_submitter_person": {
"first_name": "string",
"last_name": "string",
"national_code": "string",
"first_mobile": "string",
"second_mobile": "string",
"phone": "string"
},
"destination_point_id": "string",
"destination_address": {
"city_id": "string",
"full_address": "string",
"building_number": "string",
"unit": "string",
"postal_code": "string",
"latitude": "string",
"longitude": "string",
"description": "string"
},
"recipient_person": {
"first_name": "string",
"last_name": "string",
"national_code": "string",
"first_mobile": "string",
"second_mobile": "string",
"phone": "string"
},
"constant_proof_of_delivery_code_for_all_parcels": "string",
"parcels": [
{
"dimensionsInCMs": [
"string"
],
"content_value_price_rials": "string",
"description": "string",
"items_description": "string",
"weight_grams": "string",
"consignor_reference_id": "string",
"payable_price_rials_by_recipient": "string",
"scannable_codes": [
"string"
],
"characteristics": [
"string"
],
"packaging_type": "string"
}
]
}جدول پارامترهای اصلی
- توضیح فنی
- شناسه یکتای شما برای این ارسال؛ باید در کل سیستم منحصربهفرد باشد . بین 5 تا 15 رقم باشد.
- توضیح بیزینس
- کد سفارش یا شماره فاکتور در سمت سیستم شما که به عنوان کلید اصلی ردیابی استفاده میشود. حتماً باید به صورت عدد خام بین 5 تا 15 رقم باشد.
- توضیح فنی
- اگر مقدار true باشد، در صورت شکست سفارش قبلی با همین شناسه یکتا (consignor_unique_reference_id)، سیستم بدون ایجاد خطای تکراری آن را احیا (Revive) و با اطلاعات جدید مجدداً ثبت میکند.
- توضیح بیزینس
- در صورتی که سفارش قبلی شما به هر دلیلی ریجکت یا متوقف شده باشد، با این فلگ میتوانید همان شناسه ی یکتا (consignor_unique_reference_id) را بدون نیاز به تولید کد جدید، اصلاح و دوباره در سیستم زنده کنید. ( توضیحات تکمیلی در ادامه در بخش راهنمای جامع قابلیت Revive آمده است . )
- توضیح فنی
- زمان آماده بودن بسته زمان ارسال شده نمیتواند در گذشته باشد. (فرمت: YYYY-MM-DD HH:MM:SS)
- توضیح بیزینس
- زمان دقیق آماده بودن بسته در انبار فرستنده؛ سیستم دیجیاکسپرس اولین بازه جمع آوری ممکن بعد از این تاریخ را برای شما پیدا میکند.
- توضیح فنی
- شروع بازه تعهد تحویل به مشتری؛ زمان آن نباید قبل از زمان آماده بودن بسته (cargo_ready_date_time) باشد. (فرمت: YYYY-MM-DD HH:MM:SS)
- توضیح بیزینس
- در سناریوی دو مرحلهای، این فیلد زمان شروع پنجرهای است که مشتری شما در سایت یا اپلیکیشنتان انتخاب کرده است. در صورت خالی بودن، سیستم اولین بازه توزیع ممکن را تخصیص میدهد.
- توضیح فنی
- پایان بازه تعهد تحویل به مشتری؛ در صورت خالی بودن بازه شروع، این فیلد نیز باید خالی بماند و زمان آن نباید قبل از زمان آماده بودن بسته باشد. (فرمت: YYYY-MM-DD HH:MM:SS)
- توضیح بیزینس
- در سناریوی دو مرحلهای(shipping time window )، این فیلد زمان پایان پنجرهای است که مشتری شما انتخاب کرده است. در صورت خالی بودن، سیستم به طور خودکار بازه تعهد را فیکس میکند.
- توضیح فنی
- ID هاب دیجیاکسپرس (در صورت تحویل مستقیم به هاب، با تیم دیجیاکسپرس هماهنگ کنید).
- توضیح بیزینس
- در صورتی که بار را خودتان مستقیماً به یکی از هابهای شناختهشده دیجیاکسپرس تحویل میدهید، آیدی آن هاب را وارد میکنید تا فرآیند جمعآوری (پیکاپ) سیستماتیک حذف شود.
- توضیح فنی
- اطلاعات کامل آدرس مبدأ. در محیط دمو مبدأ باید همیشه تهران باشد. (جزییات بیشتر در جدول پارامترها در ادامه )
- توضیح بیزینس
- محل دقیق جمعآوری سفارش توسط راننده دیجیاکسپرس (لوکیشن انبار یا مغازه شما) هر شیپمنت باید یک آدرس جمعآوری مشخص داشته باشد.
- توضیح فنی
- مشابه origin_point_id برای مقصد.
- توضیح بیزینس
- در موارد خاص لجستیکی که مقصد نهایی تحویل، یکی از لاکرها یا هابهای مشخص دیجیاکسپرس باشد استفاده میشود.
- توضیح فنی
- اطلاعات کامل آدرس مقصد. در محیط دمو مقصد باید همیشه چیتگر باشد. (جزییات بیشتر در جدول پارامترها در ادامه )
- توضیح بیزینس
- محل دقیق تحویل نهایی سفارش به مشتری هر شیپمنت باید یک آدرس تحویل مشخص داشته باشد.
- توضیح فنی
- کد POD 5 رقمی؛ کمتر یا بیشتر از 5 رقم خطا میدهد.
- توضیح بیزینس
- کد تأیید تحویل (پینکد 5 رقمی): در صورت عدم ارسال از جانب شما، دیجیاکسپرس یک کد تصادفی تولید کرده، به مشتری پیامک میکند و از طریق وبهوک نیز به شما اطلاع میدهد.
- توضیح فنی
- آرایه شامل مشخصات فیزیکی بستهها (وزن، حجم و...). (جزییات بیشتر در جدول پارامترها در ادامه )
- توضیح بیزینس
- لیست بستههای واقعی تشکیلدهنده این سفارش. در صورت استفاده از سناریوی ثبت با پارسل مشخص، پر کردن این آرایه اجباری است.
جدول پارامترهای هر آیتم در origin_address - destination_address
- توضیح
- شناسه شهر (از API get_cities دریافت کنید).
- توضیح بیزینس
- کد سیستمی شهر مبدأ یا مقصد. برای جلوگیری از خطا، حتماً ابتدا سرویس عمومی دریافت شهرها را صدا بزنید و آیدی دقیق همان شهر را اینجا بفرستید.
- توضیح
- آدرس کامل متنی
- توضیح بیزینس
- نشانی دقیق پستی که راننده برای پیدا کردن محل جمعآوری (مبدا) یا تحویل (مقصد) روی نقشه و به صورت فیزیکی به آن مراجعه میکند.
- توضیح
- عرض جغرافیایی آدرس مبدأ. این فیلد اختیاری است، اما در صورت در دسترس بودن مختصات دقیق مبدأ، قویاً توصیه میشود ارسال شود تا محل Pickup با دقت بیشتری شناسایی شود.
- توضیح بیزینس
- لوکیشن دقیق روی نقشه. اگر این فیلد را نفرستید، سیستم لوکیشن متنی شما را به مختصات تبدیل میکند؛ اما ارسال آن به مسیریابی دقیقتر راننده کمک پیشفرض میکند.
- توضیح
- طول جغرافیایی آدرس مبدأ. این فیلد اختیاری است، اما در صورت در دسترس بودن مختصات دقیق مبدأ، قویاً توصیه میشود همراه با latitude ارسال شود تا محل Pickup با دقت بیشتری شناسایی شود.
- توضیح بیزینس
- لوکیشن دقیق روی نقشه (مکمل فیلد latitude) جهت ناوبری دقیقتر رانندگان لجستیک.
- توضیح
- کد پستی
- توضیح بیزینس
- کد پستی محل مبدأ یا مقصد که جهت صحهگذاری روی آدرس استفاده میشود، اما برای ثبت سفارش الزامی و اجباری نیست.
- توضیح
- شماره پلاک
- توضیح بیزینس
- شماره پلاک ملک جهت تفکیک دقیق ساختمان در کوچه یا خیابان اصلی.
- توضیح
- شماره واحد
- توضیح بیزینس
- شماره واحد یا طبقه در ساختمانهای چندواحدی جهت دسترسی سریعتر توزیعکننده.
- توضیح
- توضیحات تکمیلی آدرس
- توضیح بیزینس
- کروکی متنی یا نکات خاص آدرس (مانند: "زنگ سمت راست"، "مغازه نبش کوچه" یا "تحویل به نگهبانی") جهت راهنمایی راننده.
جدول پارامترهای هر آیتم در cargo_submitter_person / recipient_person
- توضیح فنی
- نام
- توضیح بیزینس
- نام کوچک شخص تحویلدهنده (در مبدا) یا گیرنده مرسوله (در مقصد).
- توضیح فنی
- نامخانوادگی
- توضیح بیزینس
- نام خانوادگی شخص تحویلدهنده یا گیرنده جهت احراز هویت در زمان تحویل بار.
- توضیح فنی
- شماره موبایل (نه شماره ثابت؛ برای ارسال SMS و تماس استفاده میشود)
- توضیح بیزینس
- شماره همراه اصلی گیرنده یا فرستنده. این شماره کانال ارتباطی حیاتی سیستم با مشتری است و تمام پیامکهای وضعیت سفارش، لینک ردیابی و تماس راننده روی آن انجام میشود.
- توضیح فنی
- کد ملی
- توضیح بیزینس
- کد ملی شخص که در موارد خاص بیزینسی یا احراز هویتهای حقوقی مرسولات کاربرد دارد.
- توضیح فنی
- شماره موبایل دوم
- توضیح بیزینس
- شماره تماس اضطراری. اگر راننده نتواند با شماره اول تماس بگیرد، از این شماره برای بستر ارتباطی پشتیبان استفاده میکند.
- توضیح فنی
- شماره تلفن ثابت
- توضیح بیزینس
- شماره تلفن ثابت محل (همراه با کد شهر) جهت آرشیو اطلاعات تماس سنتی.
جدول پارامترهای هر آیتم در parcels
- توضیح فنی
- ابعاد بسته به سانتیمتر به صورت یک آرایه سه عضوی از اعداد صحیح به فرمت [طول, عرض, ارتفاع]
- توضیح بیزینس
- سایز فیزیکی بسته. سیستم لجستیک بر اساس این ابعاد، دستهبندی سایز مرسوله (Tier) را مشخص کرده و خودروی مناسب (موتور، سواری یا وانت) را تخصیص میدهد.
- توضیح فنی
- وزن به گرم
- توضیح بیزینس
- وزن فیزیکی خالص بسته. این پارامتر در محاسبات ظرفیت وسیله نقلیه و همچنین توزیع بار انبار نقش کلیدی دارد.
- توضیح فنی
- ارزش ریالی (برای محاسبه بیمه)
- توضیح بیزینس
- ارزش واقعی کالا به ریال که مبنای اصلی محاسبه هزینه بیمه مرسوله قرار میگیرد تا در صورت بروز خسارت احتمالی، جبران زیان بر این اساس انجام شود.
- توضیح فنی
- توضیح کلی بسته
- توضیح بیزینس
- نکات خاص مربوط به حمل فیزیکی بسته (مانند: "شکستنی" یا "جهت جعبه رو به بالا باشد").
- توضیح فنی
- شرح محتویات
- توضیح بیزینس
- نام یا نوع کالای داخل بسته (مانند: "کتاب"، "پوشاک")
- توضیح فنی
- شناسه پارسل از طرف شما
- توضیح بیزینس
- در صورتی که یک سفارش (Shipment) چند بسته داشته باشد، میتوانید کد رهگیری اختصاصی هر بسته در سیستم خودتان را اینجا بفرستید تا در متدهای حذفی یا وبهوکها بر اساس همین کد با سیستم خودتان ماک کنید.
- توضیح فنی
- مبلغ COD (پرداخت در محل) به ریال
- توضیح بیزینس
- در صورتی که سفارش شما مبلغ پرداخت در محل دارد، مقدار ریالی آن را در این فیلد وارد کنید تا راننده دیجیاکسپرس هنگام تحویل مرسوله مبلغ را از گیرنده دریافت کند. در غیر این صورت، فیلد را خالی یا null بگذارید. توجه: این قابلیت فقط برای کانساینرهایی قابل استفاده است که سرویس پرداخت در محل برای آنها فعال شده باشد.
- توضیح فنی
- نوع بستهبندی فیزیکی پارسل را مشخص میکند. مقدار این فیلد باید یکی از مقادیر مجاز packet یا box باشد. مقدار packet برای بستههایی استفاده میشود که در پاکت یا بستهبندی سبک/پاکتی ارسال میشوند، و مقدار box برای بستههایی است که بهصورت جعبه بستهبندی شدهاند.
- توضیح بیزینس
- این فیلد به دیجیاکسپرس کمک میکند نوع بستهبندی واقعی مرسوله را بشناسد و فرآیند حمل، چیدمان، اسکن، قیمت گذاری و جابهجایی بسته متناسب با مدل بستهبندی انجام شود.
- توضیح فنی
- ویژگی عملیاتی یا ماهیت حساس کالای داخل پارسل را مشخص میکند. هر مقدار داخل آرایه باید یکی از مقادیر مجاز gold یا normal باشد. مقدار gold برای پارسلهایی استفاده میشود که محتوای آنها طلا، و مقدار normal برای سایر بستههای عادی استفاده میشود.
- توضیح بیزینس
- این فیلد برای تفکیک بستههای حساس از بستههای عادی استفاده میشود. اگر کالای داخل بسته طلا باشد، مقدار gold ارسال میشود تا سیستم و عملیات دیجیاکسپرس بتوانند این بسته را بهعنوان مرسوله حساس شناسایی کنند و در فرآیندهای بعدی مثل هندلینگ، مانیتورینگ، کنترل عملیاتی یا گزارشگیری، رفتار متناسب با آن اعمال شود. برای کالاهای غیرطلا و عادی، مقدار normal ارسال میشود.
- توضیح فنی
- آرایهای از کدهای قابل اسکن اختصاصی کانساینر در سطح هر پارسل. هر مقدار باید در سطح کل سیستم دیجیاکسپرس یکتا باشد، بین ۱۲ تا ۳۶ کاراکتر باشد و تکراری نباشد. حداقل و حداکثر طول شامل خود ۱۲ و ۳۶ نیز میشود.
- توضیح بیزینس
- برای زمانی است که کانساینر میخواهد کد داخلی، بارکد انبار، کد WMS یا هر شناسه قابل اسکن اختصاصی خودش نیز در عملیات دیجیاکسپرس قابل اسکن و شناسایی باشد. اگر چند کد ارسال شود، همه آنها برای شناسایی پارسل معتبرند، اما روی لیبل دیجیاکسپرس اولین مقدار آرایه درج میشود.
راهنمای جامع قابلیت Revive (احیای سفارشهای ناموفق)
اگر در جدول پارامترهای اصلی، فیلد revive_if_already_registered_and_failed را برابر با true قرار دهید، قابلیت Revive فعال میشود. این ویژگی برای زمانی است که یک سفارش پس از ثبت، به وضعیت نهایی ناموفق (مانند Cancel، Reject یا Pickup Fail) رسیده باشد و شما بخواهید بدون تغییر دادن کد مرجع خود (consignor_unique_reference_id)، سفارش را اصلاح و مجدداً ارسال کنید.
جدول فرآیند و رفتار سیستم در حالت Revive
| وضعیت بررسی سیستم | اقدام بعدی سیستم | خروجی و رفتار نهایی |
|---|---|---|
| سفارش قبلی وجود ندارد | سفارش را به عنوان یک مرسوله کاملاً جدید ثبت میکند. | پاسخ موفقیتآمیز (HTTP 200) صادر میشود. |
| سفارش قبلی در وضعیت نهایی ناموفق است (قابل احیا) | در فرآیند احیا، تمام اطلاعات سفارش باید مجدداً ارسال شود؛ اطلاعات قبلی حذف شده و سفارش با دادههای جدید ثبت و فعال میشود. ( امکان تغییر در اطلاعات وجود دارد. ) | مهم: سفارش با موفقیت احیا میشود اما کد پارسل فیزیکی (parcel_code) کاملاً تغییر خواهد کرد. |
| سفارش قبلی موفق یا در جریان است (غیرقابل احیا) | فرآیند را متوقف کرده و امکان تغییر اطلاعات را نمیدهد. | سیستم خطای تکراری بودن شناسه یکتا (consignor_unique_reference_id) (خطا با کد1079) برمیگرداند. کنار همین خطا کل مپینگ شیپمنتی که قبلا رجیستر شده قبلا مجدد در ریسپانس نمایش داده میشود. |
نکات کلیدی بیزینسی و فنی در احیای سفارش
- ادغام در API اصلی: توجه داشته باشید که Revive یک API جداگانه ندارد؛ این قابلیت در فیلد revive_if_already_registered_and_failed در API ثبت سفارش نسخه دو (Register V2) عمل میکند.
- تغییر حتمی بارکد لیبل: حیاتیترین نکته لجستیکی این است که پس از Revive موفق، با اینکه شناسه یکتا (consignor_unique_reference_id) شما ثابت مانده، اما سیستم کد پارسل (parcel_code) جدیدی تولید میکند. بنابراین حتماً باید لیبل جدید را مجدداً دریافت و روی بسته بچسبانید؛ رانندگان دیجیاکسپرس امکان اسکن بارکد قبلی را ندارند.
- کاربرد اصلی: این فرآیند صرفاً زمانی کاربرد دارد که بسته هنوز به دست مشتری نرسیده و به هر دلیلی در مراحل اولیه (مثل خطا در آدرس یا عدم حضور شما در زمان پیکاپ) لغو یا رد شده است و شما تمایلی به تولید یک Reference ID جدید در سیستم خود ندارید.
پس از ارسال درخواست، در صورتی که مراحل بالا را به درستی انجام داده باشید و سیستم مرسوله را با موفقیت ثبت یا احیا کند، پاسخ (HTTP 200 (OK دریافت خواهید کرد.
در ادامه، نمونه ساختار پاسخ موفق (Response Body) سیستم و جدول تشریح فیلدهای فنی و بیزینسی آن آمده است:
Response موفق (200): API Specified Parcels
{
"order_id": "string",
"order_number": "string",
"shipment_id": "string",
"shipment_code": "string",
"consignor_unique_reference_id": "string",
"parcel_summaries": [
{
"parcel_id": "string",
"parcel_code": "string",
"consignor_reference_id": "string",
"scannable_codes": [
"string"
]
}
],
"estimated_capacity": {
"parcels_total_estimated_weight_grams": "string",
"parcels_total_estimated_volume_in_cm3": "string",
"parcels_used_weight_grams": "string",
"parcels_used_volume_in_cm3": "string",
"parcels_remained_weight_grams": "string",
"parcels_remained_volume_in_cm3": "string"
},
"parcel_size_tier": "NORMAL"
}جدول پارامترهای خروجی موفق ثبت سفارش (Response Body)
- توضیح فنی
- شناسه یکتا و سیستمی کل سفارش در دیجیاکسپرس.
- توضیح بیزینسی
- شناسه یکتای سیستمی سفارش در دیجیاکسپرس. این فیلد یک شناسه داخلی است و کارکرد اختصاصی برای کانساینر ندارد.
- توضیح فنی
- شماره سفارش
- توضیح بیزینسی
- شماره فاکتور یا پیگیری سفارش لجستیکی که در پنلها و مکاتبات عمومی کاربرد دارد.
- توضیح فنی
- شناسه یکتای مرسوله در سیستم دیجیاکسپرس.
- توضیح بیزینسی
- مهمترین فیلد برای ذخیرهسازی. این آیدی کلید اصلی شما برای فرآیندهایی مثل لغو مرسوله یا پیگیری وضعیت است.
- توضیح فنی
- کد یا بارکد اصلی شیپمنت (مانند DP987654321).
- توضیح بیزینسی
- کد رهگیری کلان مرسوله جهت ردیابیهای لجستیکی و استفاده در عملیات دیجیاکسپرس
- توضیح فنی
- همان شناسه یکتایی که در ریکوئست فرستاده بودید.
- توضیح بیزینسی
- کد سفارش سمت شما که سیستم آن را جهت تطبیق دیتای دو طرف برمیگرداند.
- توضیح فنی
- آرایهای از خلاصه اطلاعات بستههای ایجاد شده.
- توضیح بیزینسی
- لیست پارسلهای فیزیکی ثبت شده شامل: parcel_id (آیدی یکتای بسته)، parcel_code (بارکد روی لیبل) و consignor_reference_id (کد مرجع شما به ازای هر پارسل).
- توضیح فنی
- وضعیت ظرفیت تخمینی مرسوله شامل فیلدهای کل، مصرفشده و باقیمانده وزن و حجم.
- توضیح بیزینسی
- مدیریت ظرفیت مرسوله. نکته: اگر از روش Specified Parcels استفاده شده باشد، مقادیر تمام فیلدهای این آبجکت برابر با -1 برگشت داده میشود.
- توضیح فنی
- دستهبندی ابعادی مرسوله بر اساس قوانین لجستیک (مانند NORMAL).
- توضیح بیزینسی
- سایز نهایی سفارش شما که بر اساس ابعاد و وزن پارسلها محاسبه شده و مبنای تخصیص خودرو قرار میگیرد.
مقادیر -1 در estimated_capacity به این معناست که از روش Specified Parcels استفاده شده و ظرفیت تخمینی وجود ندارد.
حتماً shipment_id دریافتی را در سیستم خود ذخیره کنید. در صورتی که به هر دلیلی این شناسه ذخیره نشد، میتوانید مجدداً متد را با همان consignor_unique_reference_id قبلی فراخوانی (Call) کنید؛ در این حالت، سیستم خطای تکراری بودن کد مرجع را میدهد، اما کل ریسپانس اولیه (که شامل shipment_id نیز میشود) را مجدداً در پاسخ برمیگرداند.
دریافت HTTP 200 به معنای تحویل قطعی نیست. ممکن است پس از 200 سیستم به دلایلی (مثل آدرس خارج از ایران یا بازه تحویل پشتیبانینشده) shipment را رد کند و نتیجه از طریق Webhook اطلاعرسانی شود.
در بخش مبدأ (Origin):
اگر بار را از انبار/مغازه خودتان تحویل میدهید، فقط آدرس مبدأ (origin_address) را بفرستید.
اگر بار را خودتان به یکی از هابهای دیجیاکسپرس میرسانید، فقط شناسه هاب مبدأ (origin_point_id) را بفرستید.
ارسال همزمان آدرس مبدأ و شناسه هاب مبدأ خطای سیستمی ایجاد میکند.
در بخش مقصد (Destination):
اگر بار مستقیم به دست مشتری نهایی میرسد، فقط آدرس مقصد (destination_address) را بفرستید.
اگر بار باید به یک هاب یا نقطه توزیع خاص برود، فقط شناسه هاب مقصد (destination_point_id) را بفرستید.
❌ارسال همزمان آدرس مقصد و شناسه هاب مقصد خطای سیستمی ایجاد میکند.
راهنمای جامع قابلیت scannable_codes
قابلیت scannable_codes برای زمانی استفاده میشود که کانساینر بخواهد علاوه بر parcel_code تولیدشده توسط دیجیاکسپرس، کد یا کدهای اختصاصی خودش نیز برای همان پارسل قابل اسکن و قابل شناسایی باشند.
این فیلد در سطح هر parcel ارسال میشود و بهصورت آرایهای از رشتهها است. بنابراین کانساینر میتواند برای هر پارسل یک یا چند کد قابل اسکن ارسال کند.
{
"scannable_codes": [
"WAREHOUSE-BC-100245",
"WMS-PKG-88991234"
]
}در این مثال، هر دو مقدار به همان پارسل متصل میشوند. اگر هرکدام از این کدها در فرآیندهای عملیاتی دیجیاکسپرس اسکن یا جستجو شوند، سیستم همان پارسل را شناسایی میکند.
کاربرد عملیاتی
در حالت عادی، دیجیاکسپرس برای هر پارسل یک parcel_code تولید میکند که روی لیبل قرار میگیرد و در عملیاتهایی مثل دریافت بسته، جابهجایی، افزودن به کیف، رهگیری، اسکن توسط اپلیکیشن راننده و سایر مراحل عملیاتی استفاده میشود.
با ارسال scannable_codes، کانساینر میتواند کدهای داخلی خودش مثل بارکد انبار، شناسه WMS، کد بستهبندی، کد پستی، کد سفارش یا هر شناسه قابل اسکن دیگری را نیز به همان پارسل متصل کند. در این حالت، سیستم دیجیاکسپرس میتواند آن کدها را مثل parcel_code شناسایی کند.
قوانین اعتبارسنجی
مقدارهای ارسالشده در scannable_codes باید در سطح کل سیستم دیجیاکسپرس یکتا باشند. این یکتایی فقط در سطح همان کانساینر بررسی نمیشود؛ یعنی اگر یک کد قبلاً توسط هر کانساینر دیگری در سیستم ثبت شده باشد، امکان استفاده مجدد از آن وجود ندارد.
طول هر مقدار باید بین ۱۲ تا ۳۶ کاراکتر باشد. مقدار ۱۲ کاراکتری و مقدار ۳۶ کاراکتری نیز معتبر هستند.
اگر هرکدام از مقدارهای ارسالشده تکراری باشد، درخواست با خطای تکراری بودن کد قابل اسکن مواجه میشود. این تکرار میتواند در یکی از حالتهای زیر اتفاق بیفتد:
● همان کد قبلا برای پارسل دیگری در سیستم دیجیاکسپرس ثبت شده باشد. ● همان کد قبلاً توسط کانساینر دیگری ثبت شده باشد. ● داخل همان آرایه scannable_codes یک مقدار دوبار تکرار شده باشد.
بنابراین بهتر است کانساینر از کدهای عمومی، کوتاه، موقت یا قابل حدس استفاده نکند و فقط کدهایی را ارسال کند که واقعا در سیستم خودش برای همان بسته یکتا و قابل اتکا هستند.
رفتار روی لیبل دیجیاکسپرس
اگر برای یک پارسل چند مقدار در scannable_codes ارسال شود، همه آنها در سیستم دیجیاکسپرس برای شناسایی همان پارسل معتبر هستند؛ اما روی لیبل استاندارد دیجیاکسپرس فقط اولین مقدار آرایه قرار میگیرد.
{
"scannable_codes": [
"WAREHOUSE-BC-100245",
"WMS-PKG-88991234",
"POST-TRACK-2478912345"
]
}در این مثال، مقدار WAREHOUSE-BC-100245 روی لیبل دیجیاکسپرس، پشت Barcode و QR Code قرار میگیرد. اما اگر مقدارهای WMS-PKG-88991234 یا POST-TRACK-2478912345 نیز در عملیات دیجیاکسپرس اسکن یا جستجو شوند، سیستم همچنان همان پارسل را شناسایی میکند.
رفتار در فرآیند Revive
اگر یک Shipment به وضعیت نهایی ناموفق برسد و کانساینر بخواهد همان سفارش را با قابلیت Revive احیا کند، میتواند همان scannable_codes قبلی را دوباره برای پارسلهای سفارش احیاشده ارسال کند.
در فرآیند Revive، اطلاعات قبلی پارسلها پاک میشود و سفارش با اطلاعات جدید ثبت میشود. به همین دلیل، استفاده مجدد از همان کدهای قابل اسکن قبلی برای همان سفارش احیاشده مجاز است.
اما اگر کانساینر بخواهد همان کد را در یک Shipment جدید و مستقل استفاده کند، سیستم آن را بهعنوان کد تکراری شناسایی میکند و درخواست با خطا مواجه میشود.
نکات مهم
● scannable_codes جایگزین parcel_code نیست. ● scannable_codes جایگزین consignor_reference_id نیست. ● این فیلد فقط در سطح parcel ارسال میشود، نه در سطح Shipment. ● همه مقدارهای داخل آرایه باید string باشند. ● هر مقدار باید بین ۱۲ تا ۳۶ کاراکتر باشد. ● هر مقدار باید در سطح کل سیستم دیجیاکسپرس یکتا باشد. ● اگر چند مقدار ارسال شود، همه آنها قابل اسکن هستند، اما فقط اولین مقدار روی لیبل دیجیاکسپرس قرار میگیرد. ● در صورت Revive همان سفارش، امکان استفاده مجدد از scannable_codes قبلی وجود دارد.
روش دوم: ثبت با ظرفیت تخمینی (Estimated Capacity)
https://api-demo.digiexpress.ir/api/v2/shipmentsاین روش برای زمانی طراحی شده است که اطلاعات فیزیکی دقیق پارسلها در لحظه ثبت سفارش مشخص نیست. در این سناریو، شما ابتدا یک ظرفیت کلی در سیستم رزرو میکنید و بعداً پارسلها را به مرور به مرسوله اضافه خواهید کرد.
ساختار درخواست (Request Body): ساختار کلی مشابه روش قبل (Specified Parcels) است، با این تفاوت که به جای آرایه parcels، آبجکت "max_shipment_capacity_estimation_for_pre_reservation" ارسال میشود:
"consignor_unique_reference_id": "string",
"revive_if_already_registered_and_failed": true,
"cargo_ready_date_time": "string",
"promise_start_date_time": "string",
"promise_end_date_time": "string",
"origin_point_id": "string",
"origin_address": {
"city_id": "string",
"full_address": "string",
"building_number": "string",
"unit": "string",
"postal_code": "string",
"latitude": "string",
"longitude": "string",
"description": "string"
},
"cargo_submitter_person": {
"first_name": "string",
"last_name": "string",
"national_code": "string",
"first_mobile": "string",
"second_mobile": "string",
"phone": "string"
},
"destination_point_id": "string",
"destination_address": {
"city_id": "string",
"full_address": "string",
"building_number": "string",
"unit": "string",
"postal_code": "string",
"latitude": "string",
"longitude": "string",
"description": "string"
},
"recipient_person": {
"first_name": "string",
"last_name": "string",
"national_code": "string",
"first_mobile": "string",
"second_mobile": "string",
"phone": "string"
},
"constant_proof_of_delivery_code_for_all_parcels": "string",
"max_shipment_capacity_estimation_for_pre_reservation": {
"parcels_total_estimated_weight_grams": "string",
"each_parcel_size_tier": "NORMAL",
"all_parcels_as_single_box_estimated_max_dimensions_cm": [
"string"
]
},
}جدول پارامترهای هر آیتم در Estimated Capacity:
- توضیح فنی
- وزن کل تخمینی همه پارسلها به گرم.
- توضیح بیزینسی
- مجموع وزن حدودی کل بستههایی که قرار است بعداً برای این سفارش ارسال کنید؛ سیستم بر این اساس گنجایش وزنی ناوگانش را رزرو میکند.
- توضیح فنی
- ابعاد حداکثری تخمینی کل بستهها، در حالتی که تمام پارسلها بهعنوان یک باکس واحد در نظر گرفته شوند. مقدار باید بهصورت [طول، عرض، ارتفاع] و بر حسب سانتیمتر ارسال شود.
- توضیح بیزینسی
- در صورتی که هنوز جزئیات تکتک پارسلها مشخص نیست، با این فیلد ابعاد کلی فضای موردنیاز برای کل سفارش اعلام میشود. این اطلاعات به دیجیاکسپرس کمک میکند ظرفیت فیزیکی لازم برای حمل سفارش را تخمین بزند و ناوگان متناسب را اختصاص دهد.
- توضیح فنی
- سطح سایز هر پارسل. مقادیر مجاز: NORMAL, MEDIUM, LARGE
- توضیح بیزینسی
- گروه ابعادی کالاهایی که قرار است اضافه شوند؛ سیستم با توجه به این فلگ متوجه میشود که چه نوع خودرویی (مانند موتور یا وانت) را باید برای فرآیند لجستیک شما آماده نگه دارد.
جدول ماتریس سایزبندی بستهها (Parcel Size Tier)
| دسته سایز (Tier) | محدودیتهای ابعادی فیزیکی | محدودیت وزنی | توضیح لجستیکی و بیزینسی |
|---|---|---|---|
| NORMAL | • بزرگترین ضلع: حداکثر 64 سانتیمتر • ضلع دوم: حداکثر 44 سانتیمتر • ضلع سوم: حداکثر 34 سانتیمتر | حداکثر 14,999 گرم (کمتر از 15 کیلوگرم) | بستههای استاندارد و کوچکسایز که معمولاً ظرفیت حمل آنها با موتور یا خودروهای سواری کوچک وجود دارد. |
| MEDIUM | هر بستهای که شرایط NORMAL را نداشته باشد و در محدوده خطقرمزهای LARGE نیز قرار نگیرد. | هر بستهای که از نظر وزن در محدوده NORMAL نباشد، اما طبق قوانین سیستم در دسته LARGE هم قرار نگیرد. | بستههای متوسط که فراتر از ابعاد موتور سیکلت هستند اما نیاز به تجهیزات حمل کالاهای فوقسنگین (Large) ندارند. |
| LARGE | • حداقل یکی از ابعاد بیشتر از 140 سانتیمتر باشد؛ یا | • وزن Parcel بیشتر از 40 کیلوگرم باشد. | کالاهای فوق سنگین، حجیم یا با ابعاد نامتعارف (کالای بزرگسایز) که حمل آنها نیازمند خودروهای باری اختصاصی (مانند وانت) است. |
یک Parcel در صورتی در دسته LARGE قرار میگیرد که حداقل یکی از شرایط زیر برقرار باشد: حداقل یکی از ابعاد بیشتر از 140 سانتیمتر باشد؛ یا وزن Parcel بیشتر از 40 کیلوگرم باشد.
نکات و قوانین بسیار مهم رزرو ظرفیت
- شما به هیچ عنوان نمیتوانید همزمان دو فیلد parcels و max_shipment_capacity_estimation_for_pre_reservation را در یک درخواست بفرستید. ارسال همزمان این دو فیلد منجر به خطای ساختاری میشود و باید متناسب با فلو، یکی را انتخاب کنید.
- قانون جداسازی سایز مرسولات: پارسلهای دسته LARGE (بزرگسایز) نمیتوانند در یک Shipment مشترک با پارسلهای NORMAL یا MEDIUM قرار بگیرند.
- مثال بیزینسی: اگر یک سفارش مشتری شامل یک عدد "گوشی موبایل" و یک عدد "یخچال" باشد، به دلیل تفاوت ساختاری در تخصیص خودرو، این دو کالا حتماً باید در دو Shipment جداگانه ثبت شوند.
Response موفق (200): در صورتی که درخواست ثبت سفارش با روش ظرفیت تخمینی (Estimated Capacity) با موفقیت در سیستم ثبت شود، پاسخ (HTTP 200 (OK همراه با ساختار (Response Body) زیر صادر خواهد شد:
{
"order_id": "string",
"order_number": "string",
"shipment_id": "string",
"shipment_code": "string",
"consignor_unique_reference_id": "string",
"parcel_summaries": [
{
"parcel_id": "string",
"parcel_code": "string",
"consignor_reference_id": "string",
"scannable_codes": [
"string"
]
}
],
"estimated_capacity": {
"parcels_total_estimated_weight_grams": "string",
"parcels_total_estimated_volume_in_cm3": "string",
"parcels_used_weight_grams": "string",
"parcels_used_volume_in_cm3": "string",
"parcels_remained_weight_grams": "string",
"parcels_remained_volume_in_cm3": "string"
},
"parcel_size_tier": "NORMAL"
}جدول پارامترهای خروجی ثبت سفارش با ظرفیت تخمینی
- توضیح فنی
- شناسه یکتا و سیستمی کل سفارش در دیجیاکسپرس.
- توضیح بیزینسی
- شناسه یکتای سیستمی سفارش در دیجیاکسپرس. این فیلد یک شناسه داخلی است و کارکرد اختصاصی برای کانساینر ندارد.
- توضیح فنی
- شماره سفارش -8
- توضیح بیزینسی
- شماره پیگیری سفارش لجستیکی جهت مکاتبات عمومی و اداری.
- توضیح فنی
- شناسه یکتای مرسوله در سیستم دیجیاکسپرس.
- توضیح بیزینسی
- مهمترین فیلد برای ذخیرهسازی. این آیدی کلید اصلی شما برای فرآیندهای بعدی (مانند متد افزودن پارسل، لغو مرسوله یا پیگیری وضعیت) است.
- توضیح فنی
- کد یا بارکد اصلی شیپمنت (مانند DP98765).
- توضیح بیزینسی
- کد رهگیری کلان مرسوله جهت ردیابیهای لجستیکی و استفاده در عملیات دیجیاکسپرس
- توضیح فنی
- همان شناسه یکتایی که در ریکوئست فرستاده بودید.
- توضیح بیزینسی
- کد سفارش سمت شما که سیستم آن را جهت تطبیق دیتای دو طرف برمیگرداند.
- توضیح فنی
- آرایهای از خلاصه اطلاعات بستههای ایجاد شده.
- توضیح بیزینسی
- نکته بیزینسی: در این روش، این آرایه در ابتدا کاملاً خالی ([ ]) برمیگردد؛ زیرا هنوز هیچ پارسل فیزیکی مشخصی به سفارش اضافه نشده است.
- توضیح فنی
- وضعیت جزییات ظرفیت تخمینی مرسوله.
- توضیح بیزینسی
- این آبجکت شامل فیلدهای زیر جهت مدیریت ظرفیت است: • parcels_total_estimated_weight_grams: وزن کل رزرو شده اولیه (به گرم). • parcels_total_estimated_volume_in_cm3: حجم کل رزرو شده اولیه (به سانتیمتر مکعب). • parcels_used_weight_grams: وزن استفاده شده توسط پارسلهای واقعی (در ابتدا 0 است). • parcels_used_volume_in_cm3: حجم استفاده شده توسط پارسلهای واقعی (در ابتدا 0 است). • parcels_remained_weight_grams: وزن باقیمانده مجاز برای افزودن بستههای بعدی. • parcels_remained_volume_in_cm3: حجم باقیمانده مجاز برای افزودن بستههای بعدی.
- توضیح فنی
- دستهبندی ابعادی مرسوله بر اساس قوانین لجستیک.
- توضیح بیزینسی
- گروه ابعادی کل سفارش (مثلا NORMAL) که بر اساس دیتای ارسالی شما ست شده و راننده متناسب با آن اعزام میشود.
قوانین و پویایی ظرفیت مرسوله: با توجه به فرآیند پردازش انبار شما، پس از هر بار فراخوانی موفق سرویس افزودن پارسل (Add Parcel) به این مرسوله، مشخصات فیزیکی بسته واقعی ثبت شده و به صورت خودکار مقادیر مصرفشده (used) افزایش یافته و از مقدار ظرفیت باقیمانده کانساینر (remained_weight و remained_volume) کسر خواهد شد. ( تمامی این موارد از طریق وب هوک نیز اطلاع رسانی خواهد شد )
مدیریت پارسلها (تغییرات مرسولههای تخمینی)
پیشنیاز: این مرحله مخصوص سفارشهایی است که در گام قبل به صورت ظرفیت تخمینی (Estimated Capacity) ثبت شدهاند و شما برای مدیریت آنها به shipment_id یا consignor_unique_reference_id نیاز دارید.
شرط لجستیکی و زمانی بسیار مهم :
- موفقیت در مسیریابی: شما تنها زمانی میتوانید به یک مرسوله (Shipment) پارسل جدید اضافه کرده یا از آن حذف کنید که عملیات مسیریابی (Routing) آن در سیستم با موفقیت انجام شده باشد. در صورت عدم تخصیص روت (خطای No Route Found)، امکان مدیریت پارسلها وجود نخواهد داشت.
- بازه زمانی: تمام فرآیندهای این مرحله تنها تا زمانی در سیستم مجاز است که بازه جمعآوری (Pick-up) مرسوله شروع نشده باشد و بار هنوز نزد فرستنده بوده و وارد پروسه عملیاتی دیجیاکسپرس نشده باشد.
افزودن پارسل به ارسال (Add Parcel)
https://api-demo.digiexpress.ir/api/v2/shipments/{shipment_id}/parcelsاین سرویس برای تبدیل ظرفیت رزرو شده اولیه به بستههای واقعی (فیزیکی) یا افزودن بستههای جدید به یک مرسوله موجود استفاده میشود.
- انعطاف در شناسایی: در آدرس (URL) این اندپوینت، سیستم هم shipment_id (آیدی دیجیاکسپرس) و هم consignor_unique_reference_id (کد مرجع شما) را میپذیرد.
- ارسال گروهی: پارسلها به صورت یک آرایه دریافت میشوند؛ بنابراین میتوانید در یک درخواست، چندین بسته را به صورت همزمان به مرسوله اضافه کنید.
- امکان چاپ فوری لیبل: فرآیند افزودن پارسل به صورت همزمان (Sync) پردازش میشود و به محض دریافت ریسپانس 200، میتوانید فوراً API چاپ لیبل بارکد آن پارسل را صدا بزنید.
ساختار درخواست افزودن پارسل (Request Body) :
"parcels": [
{
"dimensionsInCMs": [
"string"
],
"content_value_price_rials": "string",
"description": "string",
"items_description": "string",
"weight_grams": "string",
"consignor_reference_id": "string",
"payable_price_rials_by_recipient": "string",
"scannable_codes": [
"string"
],
"characteristics": [
"string"
],
"packaging_type": "string"
}
]جدول پارامترهای ورودی آرایه Parcels
- توضیح فنی
- ابعاد بسته به سانتیمتر [طول, عرض, ارتفاع]
- توضیح بیزینسی
- ابعاد فیزیکی بسته جهت اعتبارسنجی با سقف سایز رزرو شده (each_parcel_size_tier).
- توضیح فنی
- وزن دقیق بسته به گرم.
- توضیح بیزینسی
- وزن فیزیکی بسته جهت کسر از ظرفیت وزنی کل مرسوله.
- توضیح فنی
- ارزش ریالی کالا داخل بسته.
- توضیح بیزینسی
- مبنای مالی محاسبه هزینه بیمه برای بسته اضافه شده.
- توضیح فنی
- مبلغ پرداخت در محل (COD) به ریال
- توضیح بیزینسی
- در صورتی که این بسته مبلع نقدی دریافتی از مشتری دارد، مقدار آن را ست کنید؛ در غیر این صورت null بفرستید.
- توضیح فنی
- شرح دقیق محتویات بسته.
- توضیح بیزینسی
- جهت شفافیت ماهیت کالا در فرآیند بازرسی و بیمه لجستیکی.
- توضیح فنی
- توضیح کلی بسته.
- توضیح بیزینسی
- نکات خاص فیزیکی مرسوله (مانند شکستنی بودن) جهت راهنمایی توزیعکننده.
- توضیح فنی
- شناسه اختصاصی شما برای «هر پارسل».
- توضیح بیزینسی
- کد رهگیری این بسته در سیستم شما. در صورت مقداردهی، بعداً در متد حذف پارسل با رفرنس یا وبهوکها میتوانید از آن استفاده کنید.
- توضیح فنی
- نوع بستهبندی فیزیکی پارسل را مشخص میکند. مقدار این فیلد باید یکی از مقادیر مجاز packet یا box باشد. مقدار packet برای بستههایی استفاده میشود که در پاکت یا بستهبندی سبک/پاکتی ارسال میشوند، و مقدار box برای بستههایی است که بهصورت جعبه بستهبندی شدهاند.
- توضیح بیزینسی
- این فیلد به دیجیاکسپرس کمک میکند نوع بستهبندی واقعی مرسوله را بشناسد و فرآیند حمل، چیدمان، اسکن، قیمت گذاری و جابهجایی بسته متناسب با مدل بستهبندی انجام شود.
- توضیح فنی
- ویژگی عملیاتی یا ماهیت حساس کالای داخل پارسل را مشخص میکند. هر مقدار داخل آرایه باید یکی از مقادیر مجاز gold یا normal باشد. مقدار gold برای پارسلهایی استفاده میشود که محتوای آنها طلا، و مقدار normal برای سایر بستههای عادی استفاده میشود.
- توضیح بیزینسی
- این فیلد برای تفکیک بستههای حساس از بستههای عادی استفاده میشود. اگر کالای داخل بسته طلا باشد، مقدار gold ارسال میشود تا سیستم و عملیات دیجیاکسپرس بتوانند این بسته را بهعنوان مرسوله حساس شناسایی کنند و در فرآیندهای بعدی مثل هندلینگ، مانیتورینگ، کنترل عملیاتی یا گزارشگیری، رفتار متناسب با آن اعمال شود. برای کالاهای غیرطلا و عادی، مقدار normal ارسال میشود.
- توضیح فنی
- آرایهای از کدهای قابل اسکن اختصاصی کانساینر در سطح هر پارسل. هر مقدار باید در سطح کل سیستم دیجیاکسپرس یکتا باشد، بین ۱۲ تا ۳۶ کاراکتر باشد و تکراری نباشد. حداقل و حداکثر طول شامل خود ۱۲ و ۳۶ نیز میشود.
- توضیح بیزینسی
- برای زمانی است که کانساینر میخواهد کد داخلی، بارکد انبار، کد WMS یا هر شناسه قابل اسکن اختصاصی خودش نیز در عملیات دیجیاکسپرس قابل اسکن و شناسایی باشد. اگر چند کد ارسال شود، همه آنها برای شناسایی پارسل معتبرند، اما روی لیبل دیجیاکسپرس اولین مقدار آرایه درج میشود.
ساختار پاسخ موفق افزودن پارسل (Response Body - HTTP 200)
{
"parcels_total_estimated_weight_grams": "string",
"parcels_total_estimated_volume_in_cm3": "string",
"parcels_used_weight_grams": "string",
"parcels_used_volume_in_cm3": "string",
"parcels_remained_weight_grams": "string",
"parcels_remained_volume_in_cm3": "string",
"new_added_parcels": [
{
"parcel_id": "string",
"parcel_code": "string",
"consignor_reference_id": "string",
"scannable_codes": [
"string"
]
}
],
"all_parcels": [
{
"parcel_id": "string",
"parcel_code": "string",
"consignor_reference_id": "string",
"scannable_codes": [
"string"
]
}
]
}جدول پارامترهای خروجی متد افزودن پارسل
- توضیح فنی
- وزن کل تخمینی رزرو شده اولیه (گرم).
- توضیح بیزینسی
- سقف مجاز وزنی که در مرحله ثبت مرسوله تعیین کرده بودید.
- توضیح فنی
- وزن باقیمانده مجاز (گرم).
- توضیح بیزینسی
- ظرفیت وزنیِ هنوز استفادهنشده. با افزودن هر پارسل، این عدد کاهش مییابد تا به صفر برسد.
- توضیح فنی
- حجم کل تخمینی رزرو شده اولیه (سانتیمتر مکعب).
- توضیح بیزینسی
- سقف مجاز حجمی تعیین شده در درخواست اولیه.
- توضیح فنی
- حجم باقیمانده مجاز (سانتیمتر مکعب).
- توضیح بیزینسی
- گنجایش حجمیِ هنوز استفادهنشده مرسوله برای بستههای بعدی.
- توضیح فنی
- لیست پارسلهای جدیداً اضافه شده در این ریکوئست.
- توضیح بیزینسی
- شامل آیدی سیستمی (parcel_id) و بارکد اختصاصی بسته (parcel_code) که باید فوراً روی لیبل فیزیکی بسته چاپ شود.
- توضیح فنی
- لیست کل پارسلهای فعال این مرسوله تا این لحظه.
- توضیح بیزینسی
- نمایی از تمام بستههای فیزیکی که از ابتدا تا الان به این مرسوله متصل شدهاند.
- توضیح فنی
- رده ابعادی بسته (مانند NORMAL).
- توضیح بیزینسی
- گروه ابعادی محاسبه شده برای مرسوله که مبنای تخصیص خودرو قرار میگیرد.
حذف پارسل از ارسال (Delete Parcel)
اگر نیاز به حذف یک بسته از یک مرسوله ثبتشده داشته باشید، از این سرویس استفاده میشود. پس از حذف موفق، ظرفیت اشغال شده توسط آن بسته دقیقاً به میزان وزن و حجم آن به مقدار «ظرفیت باقیمانده» مرسوله بازگردانده میشود. شما به دو روش میتوانید پارسل را حذف کنید:
روش اول: استفاده از شناسههای اختصاصی شما (Reference IDs)
این روش زمانی کاربرد دارد که شما در لایه درخواست افزودن، از شناسههای اختصاصی خودتان (consignor_reference) استفاده کرده باشید.
https://api-demo.digiexpress.ir/api/v2/shipments/{shipment_ref}/parcels/{parcel_ref}- {shipment_ref}: شناسه یکتای مرسوله در سمت شما (consignor_unique_reference_id).
- {parcel_ref}: شناسه یکتای بسته در سمت شما (consignor_reference_id).
روش دوم: استفاده از شناسههای سیستمی دیجیاکسپرس (System IDs)
این روش سادهتر است و نیازی به ارسال شناسه مرسوله (Shipment) ندارد، زیرا آیدی یا کد پارسل در کل هسته سیستم دیجیاکسپرس یکتاست.
https://api-demo.digiexpress.ir/api/v2/parcels/{parcel_id_or_code}- {parcel_id_or_code}: آیدی متنی (UUID) یا بارکد پارسل (مانند DP...) که در ریسپانسهای قبلی دریافت کردهاید.
قانون حذف آخرین پارسل: اگر مرسولهای کلاً شامل یک پارسل باشد و شما همان یک پارسل را هم حذف کنید، کل سفارش لغو نمیشود؛ بلکه مرسوله همچنان در وضعیت "رزرو ظرفیت خالی" در سیستم باقی میماند تا بسته جدید به آن اضافه کنید (مگر اینکه کل مرسوله را از طریق API ابطال، Cancel کنید).
ساختار پاسخ موفق حذف پارسل از ارسال (Response Body - HTTP 200) :
{
"parcels_total_estimated_weight_grams": "string",
"parcels_total_estimated_volume_in_cm3": "string",
"parcels_used_weight_grams": "string",
"parcels_used_volume_in_cm3": "string",
"parcels_remained_weight_grams": "string",
"parcels_remained_volume_in_cm3": "string",
"removed_parcels": [
{
"parcel_id": "string",
"parcel_code": "string",
"consignor_reference_id": "string",
"scannable_codes": [
"string"
]
}
],
"remaining_parcels": [
{
"parcel_id": "string",
"parcel_code": "string",
"consignor_reference_id": "string",
"scannable_codes": [
"string"
]
}
],
"parcel_size_tier": "NORMAL"
}جدول پارامترهای خروجی متد حذف پارسل
- توضیح فنی
- وزن کل تخمینی اولیه (گرم).
- توضیح بیزینسی
- سقف مجاز وزنی رزرو شده کل سفارش.
- توضیح فنی
- وزن باقیمانده مجاز (گرم).
- توضیح بیزینسی
- نکته بیزینسی: این مقدار به میزان وزنِ بسته حذفشده افزایش یافته و ظرفیت مجدداً برای پذیرش بستههای جدید آزاد شده است.
- توضیح فنی
- حجم کل تخمینی اولیه (سانتیمتر مکعب)
- توضیح بیزینسی
- سقف فضای فیزیکی رزرو شده برای این سفارش.
- توضیح فنی
- حجم باقیمانده مجاز (سانتیمتر مکعب)
- توضیح بیزینسی
- این مقدار به میزان حجمِ بسته حذفشده افزایش یافته و فضا مجدداً آزاد شده است.
- توضیح فنی
- لیست اطلاعات بستهای که هماکنون حذف شد.
- توضیح بیزینسی
- مشخصات فنی و بارکد بستهای که با موفقیت از این سفارش خلع اتصال شده است.
- توضیح فنی
- لیست بستههایی که هنوز در سفارش باقی ماندهاند.
- توضیح بیزینسی
- خلاصهای از پارسلهای فعال فیزیکی که کماکان تحت این Shipment پردازش خواهند شد.
- توضیح فنی
- رده ابعادی مرسوله پس از حذف (مانند NORMAL).
- توضیح بیزینسی
- بازبینی سایز مرسوله؛ در صورتی که با حذف بسته، سقف ابعادی کل سفارش دستخوش تغییر شود، سیستم رده آن را بهروز میکند.