رزرو سفارش
به طور کلی برای ثبت یک سفارش در گنجه، از یکی از روشهای بستهبندی زیر استفاده میشود:
- no-packing: بدون بستهبندی
- manual-packing: بستهبندی دستی
- automatic-packing: بستهبندی خودکار
در صورتی که از سایز لاکرهای گنجه آگاهی دارید و میدانید سفارش شما مناسب کدام یک از این سایزها است، میتوانید از سرویس manual-packing استفاده کنید؛ اما در صورتی که ابعاد بسته(ها) را میدانید و میخواهید گنجه با توجه به این ابعاد، خودش لاکر مناسب را اختصاص دهد، از سرویس automatic-packing استفاده کنید. همچنین در صورتی که میخواهید از سرویس گنجدار استفاده کنید، باید از روش no-packing استفاده کنید.
موارد مشترک بین ریکوئست وب سرویسهای رزرو
هر دو API باید با متد POST و همراه با توکن معتبر فراخوانی شوند. همچنین در ادامه توضیح فیلدهای مشترک بین این دو API را در ادامه میآوریم. فیلدهای اجباری با (*) مشخص میشوند.
station(*): در این فیلد بایدuuidگنجه یا گنجدار مدنظر قرار گیرد.time_scope_date(*): اطلاعات مربوط به بازهی زمانی رزرو باید در این فیلد مشخص شود.
"time_scope_date": {
"expected_check_in_date": "2024-10-31",
"expected_duration_days": 1
}
که در آن expected_check_in_date تاریخ ورود سفارش به گنجه و expected_duration_days تعداد روزهای کاری ماندگاری سفارش در گنجه است.
لازم به ذکر است که رزرو سفارش با در نظر گرفتن روزهای کاری گنجهی انتخاب شده، صورت میگیرد. به این صورت که با توجه به تعداد روزهای مشخص شده در فیلد expected_duration_days و روزهای کاری گنجه، بازهی زمانی رزرو به صورتی در نظر گرفته میشود که تعداد روزهای مدنظر را شامل شود.
package(*): در این فیلد مشخصات سفارش قرار میگیرد اما با توجه به نوع API مدنظر، ساختار متفاوتی باید داشته باشد که در توضیحات مربوط به هر API به آن پرداخته میشود.process(*): نام سرویس مورد نظر که در بخش رزرو سفارش مربوط به هر سرویس مشخص شده است.logistic_company: در این فیلد بایدuuidشرکتی که ارسال سفارش توسط آن انجام میشود، قرار گیرد.picker: شمارهی تلفن همراه گیرندهی سفارشdropper: شمارهی تلفن همراه تحویلدهندهی سفارشpassword: کد تحویلی که گیرنده با استفاده از آن میتواند سفارش را تحویل بگیرد. (به صورت عددی و حداکثر ۵ رقم)picker_full_name: نام و نام خانوادگی گیرندهی سفارش
وب سرویس رزرو no-packing
همانطور که اشاره شد، مورد متفاوت در این API فیلد package است. این فیلد باید به صورت زیر ارسال شود:
"package": {
"external_id": "string",
"parcels": [
{
"external_id": "string",
"dimension": {
"width": 0.2,
"height": 0.1,
"length": 0.25
}
}
],
"shop": "string"
}
در ادامه توضیح مربوط به هر کدام از فیلدها آمده است:
external_id(*): شناسهی مرسوله در سرویس تامینکنندهshop: در صورتی که تامینکننده، سفارشهای مربوط به فروشگاههای متفاوتی را ارسال میکند، میتوانید در این فیلد نام فروشگاه را مشخص کنید.parcels(*): در این فیلد آرایهای از مشخصات بستههای مربوط به این مرسوله، میآید. مشخصات هر بسته شامل موارد زیر است:external_id(*): شناسهی بسته در سرویس تامینکنندهdimension: ابعاد بسته در این قسمت مشخص میشود که شامل (*)width(عرض)، (*)height(ارتفاع) و (*)length(طول) است. این ابعاد باید بر حسب متر مشخص شود.
خلاصۀ این اندپوینت به شرح زیر است:
Request Body
{
"station": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"time_scope_date": {
"expected_check_in_date": "2024-10-31",
"expected_duration_days": 1
},
"package": {
"external_id": "Example1",
"parcels": [
{
"external_id": "Example1_1",
"dimension": {
"width": 0.2,
"height": 0.1,
"length": 0.25
}
}
]
"shop": "string"
},
"process": "manual_lastmile",
"logistic_company": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"picker": "+989120000000",
"password": "12345",
"picker_full_name": "علی محمدی"
}
Response Body
{
"pk": 10000,
"uuid": "c82de21f-19b0-477e-a489-3705a6e04da9",
"verbose_id": null,
"status": "Reserved",
"process": "manual_lastmile",
"station": {
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"address": "آدرس گنجه",
"location": null,
"nickname": "نام گنجه",
"postal_code": null,
"images": [],
"districts": []
},
"dates": {
"time_scope": {
"expected_check_in": "2024-10-31 08:00:00",
"expected_duration": "10:00:00"
},
"order_date": "2024-10-31 09:35:24",
"check_in": null,
"check_out": null,
"cancel_date": null,
"extend_date": null
}
}
وب سرویس رزرو manual-packing
همانطور که اشاره شد، مورد متفاوت در این API فیلد package است. این فیلد باید به صورت زیر ارسال شود:
"package": {
"external_id": "string",
"packs": [
{
"size": "small",
"parcels": [
{
"external_id": "string",
"weight": 0,
"value": 0,
"content": "string"
}
]
}
],
"shop": "string"
}
در ادامه توضیح مربوط به هر کدام از فیلدها آمده است:
external_id(*): شناسهی مرسوله در سرویس تامینکنندهshop: در صورتی که تامینکننده، سفارشهای مربوط به فروشگاههای متفاوتی را ارسال میکند، میتوانید در این فیلد نام فروشگاه را مشخص کنید.packs(*): در این فیلد باید نحوهی قرارگیری هر کدام از بستههای موجود در مرسوله را به صورت زیر مشخص کنید. مقدار این فیلد باید آرایهای از آیتمهایی به صورت زیر باشد:
{
"size": "small",
"parcels": [
{
"external_id": "string",
"weight": 0,
"value": 0,
"content": "string"
}
]
}
که در آن size، سایز لاکر مدنظر است. همچنین parcels آرایهای از مشخصات بستههای مربوط به این آیتم است که باید به صورت زیر باشد:
{
"external_id": "string",
"weight": 0,
"value": 0,
"content": "string"
}
که در آن توضیح هر فیلد مطابق زیر است:
external_id(*): شناسهی بسته در سرویس تامینکنندهweight: وزن بسته بر حسب گرمvalue: ارزش بسته بر حسب ریالcontent: محتویات بسته
توضیح تکمیلی: هر مرسوله (که متعلق به یک گیرنده است) میتواند شامل چندین بسته باشد که در این API شما باید مشخص کنید که کدام ترکیب از بستهها در کدام سایز لاکر قرار گیرد. برای مثال مرسولهای را در نظر بگیرید که شامل ۵ بسته است. با توجه به ابعاد بستهها، شما تشخیص میدهید که بستهی ۱ باید به تنهایی در لاکر large قرار گیرد، بستههای ۲ و ۳ در لاکر medium قرار گیرند و بستههای ۴ و ۵ در یک لاکر medium دیگر. در این صورت مقدار فیلد package باید به صورت زیر باشد:
{
"external_id": "Test1234",
"packs": [
{
"size": "large",
"parcels": [
{
"external_id": "Test1234_1"
}
]
},
{
"size": "medium",
"parcels": [
{
"external_id": "Test1234_2"
},
{
"external_id": "Test1234_3"
}
]
},
{
"size": "medium",
"parcels": [
{
"external_id": "Test1234_4"
},
{
"external_id": "Test1234_5"
}
]
}
]
}
خلاصۀ این اندپوینت به شرح زیر است:
Request Body
{
"station": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"time_scope_date": {
"expected_check_in_date": "2024-10-31",
"expected_duration_days": 1
},
"package": {
"external_id": "Example1",
"packs": [
{
"size": "small",
"parcels": [
{
"external_id": "Example1_1",
"weight": 250,
"value": 100000
}
]
}
],
"shop": "string"
},
"process": "lastmile",
"logistic_company": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"picker": "+989120000000",
"password": "12345",
"picker_full_name": "علی محمدی"
}
Response Body
{
"pk": 10000,
"uuid": "c82de21f-19b0-477e-a489-3705a6e04da9",
"verbose_id": null,
"status": "Reserved",
"process": "lastmile",
"station": {
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"address": "آدرس گنجه",
"location": null,
"nickname": "نام گنجه",
"postal_code": null,
"images": [],
"districts": []
},
"dates": {
"time_scope": {
"expected_check_in": "2024-10-31 08:00:00",
"expected_duration": "10:00:00"
},
"order_date": "2024-10-31 09:35:24",
"check_in": null,
"check_out": null,
"cancel_date": null,
"extend_date": null
}
}
وب سرویس رزرو automatic-packing
همانطور که اشاره شد، مورد متفاوت در این API فیلد package است. این فیلد باید به صورت زیر ارسال شود:
"package": {
"parcels": [
{
"external_id": "string",
"dimension": {
"width": 0,
"height": 0,
"length": 0
}
}
],
"external_id": "string",
"shop": "string"
}
در ادامه توضیح مربوط به هر کدام از فیلدها آمده است:
external_id(*): شناسهی مرسوله در سرویس تامینکنندهshop: در صورتی که تامینکننده، سفارشهای مربوط به فروشگاههای متفاوتی را ارسال میکند، میتوانید در این فیلد نام فروشگاه را مشخص کنید.parcels(*): در این فیلد آرایهای از مشخصات بستههای مربوط به این مرسوله، میآید. مشخصات هر بسته شامل موارد زیر است:external_id(*): شناسهی بسته در سرویس تامینکنندهdimension(*): ابعاد بسته در این قسمت مشخص میشود که شامل (*)width(عرض)، (*)height(ارتفاع) و (*)length(طول) است. این ابعاد باید بر حسب متر مشخص شود.
خلاصۀ این اندپوینت به شرح زیر است:
Request Body
{
"station": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"time_scope_date": {
"expected_check_in_date": "2024-10-31",
"expected_duration_days": 1
},
"package": {
"parcels": [
{
"external_id": "Example2_1",
"dimension": {
"width": 0.1,
"height": 0.25,
"length": 0.15
}
}
],
"external_id": "Example2"
},
"process": "lastmile",
"logistic_company": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"picker": "+989120000000",
"password": "12345",
"picker_full_name": "علی محمدی"
}
Response Body
{
"pk": 10000,
"uuid": "c82de21f-19b0-477e-a489-3705a6e04da9",
"verbose_id": null,
"status": "Reserved",
"process": "lastmile",
"station": {
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"address": "آدرس گنجه",
"location": null,
"nickname": "نام گنجه",
"postal_code": null,
"images": [],
"districts": []
},
"dates": {
"time_scope": {
"expected_check_in": "2024-10-31 08:00:00",
"expected_duration": "10:00:00"
},
"order_date": "2024-10-31 09:35:24",
"check_in": null,
"check_out": null,
"cancel_date": null,
"extend_date": null
}
}