API tính phí đơn hàng + thời gian dự kiến giao
API dùng để thực hiện tính tính phí đơn hàng và thời gian dự kiến giao liên quan tới đơn hàng dựa trên các thông tin như địa chỉ lấy hàng, địa chỉ giao, cân nặng...
Request
Đường dẫn
POST /api/v1/shipping-calculate
Headers
Authorization: Bearer {JWT}
X-Client-Source: {PARTNER_CODE}
Content-Type: application/json
- CURL
- HTTP
curl --location --globoff '{{url}}/api/v1/shipping-calculate' \
--header 'Authorization: Bearer Bearer {{token}}' \
--header 'X-Client-Source: mwg' \
--header 'Content-Type: application/json' \
--data '[
{
"partner_id": "MWG_ORDER_1",
"items": [
{
"name": "Áo thun",
"price": 200000,
"weight": 0.8,
"height": 50,
"length": 50,
"width": 50,
"quantity": 2,
"code": "TSHIRT001"
},
{
"name": "Quần jeans",
"price": 400000,
"weight": 0.8,
"quantity": 1,
"height": 50,
"length": 50,
"width": 50,
"code": "JEANS123"
}
],
"service_type": [
1,
2
],
"pickup": {
"address_id": 1,
"last_update": "2025-15-08 17:00:00",
"address": "Số 10 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"delivery": {
"address_id": 2,
"last_update": "2025-15-08 17:00:00",
"address": "Số 304 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"order_time": "2025-10-20 10:00:00"
},
{
"partner_id": "MWG_ORDER_2",
"items": [
{
"name": "Áo thun",
"price": 200000,
"weight": 0.8,
"height": 50,
"length": 50,
"width": 50,
"quantity": 2,
"code": "TSHIRT001"
},
{
"name": "Quần jeans",
"price": 400000,
"weight": 0.8,
"quantity": 1,
"height": 50,
"length": 50,
"width": 50,
"code": "JEANS123"
}
],
"service_type": [
1,
2,
3
],
"pickup": {
"address_id": 1,
"last_update": "2025-15-08 17:00:00",
"address": "Số 10 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"delivery": {
"address_id": 2,
"last_update": "2025-15-08 17:00:00",
"address": "Số 304 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"order_time": "2025-10-20 10:00:00"
}
]'
POST /api/v1/shipping-calculate HTTP/1.1
Host: {{url}}
X-Client-Source: mwg
Content-Type: application/json
Authorization: Bearer {{token}}
Content-Length: 2971
[
{
"partner_id": "MWG_ORDER_1",
"items": [
{
"name": "Áo thun",
"price": 200000,
"weight": 0.8,
"height": 50,
"length": 50,
"width": 50,
"quantity": 2,
"code": "TSHIRT001"
},
{
"name": "Quần jeans",
"price": 400000,
"weight": 0.8,
"quantity": 1,
"height": 50,
"length": 50,
"width": 50,
"code": "JEANS123"
}
],
"service_type": [
1,
2
],
"pickup": {
"address_id": 1,
"last_update": "2025-15-08 17:00:00",
"address": "Số 10 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"delivery": {
"address_id": 2,
"last_update": "2025-15-08 17:00:00",
"address": "Số 304 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"order_time": "2025-10-20 10:00:00"
},
{
"partner_id": "MWG_ORDER_2",
"items": [
{
"name": "Áo thun",
"price": 200000,
"weight": 0.8,
"height": 50,
"length": 50,
"width": 50,
"quantity": 2,
"code": "TSHIRT001"
},
{
"name": "Quần jeans",
"price": 400000,
"weight": 0.8,
"quantity": 1,
"height": 50,
"length": 50,
"width": 50,
"code": "JEANS123"
}
],
"service_type": [
1,
2,
3
],
"pickup": {
"address_id": 1,
"last_update": "2025-15-08 17:00:00",
"address": "Số 10 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"delivery": {
"address_id": 2,
"last_update": "2025-15-08 17:00:00",
"address": "Số 304 đường Phù Đổng Thiên Vương",
"province": "Bắc Ninh",
"ward": "kinh bắc"
},
"order_time": "2025-10-20 10:00:00"
}
]
Tham số
| Tham số | Bắt buộc | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
partner_id | No | string | Tracking id của đối tác (Bắt cuộc nếu trong màn checkout) |
pickup | yes | object | Thông tin điểm lấy hàng |
delivery | yes | object | Thông tin điểm giao hàng |
service_type | yes | array | Loại dịch vụ (1: Giao hỏa tốc / 2: Giao nhanh/ 3: Giao tiêu chuẩn) |
items | yes | object | Thông tin sản phẩm |
Tham số pickup - Thông tin điểm lấy hàng
| Tham số | Bắt buộc | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
address_id | Yes | integer | ID địa điểm lấy hàng từ trang quản lý của khách hàng (ưu tiên nếu có) |
last_update | Yes | String | Thời gian cuối cùng update địa chỉ (yyyy-MM-dd HH:mm:ss) |
address | yes | string | Địa chỉ chi tiết lấy hàng |
province | yes | string | Tỉnh/thành phố nơi lấy hàng hóa |
ward | yes | string | Phường/xã nơi lấy hàng (tùy chọn) |
Tham số delivery - Thông tin điểm giao hàng
| Tham số | Bắt buộc | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
address_id | Yes | integer | ID địa điểm lấy hàng từ trang quản lý của khách hàng (ưu tiên nếu có) |
last_update | Yes | String | Thời gian cuối cùng update địa chỉ (yyyy-MM-dd HH:mm:ss) |
address | yes | string | Địa chỉ chi tiết của người nhận hàng |
province | yes | string | Tỉnh/thành phố của người nhận hàng hóa |
ward | yes | string | Phường/xã của người nhận hàng hóa (tùy chọn) |
Tham số items - Thông tin sản phẩm
| Tham số | Bắt buộc | Kiểu dữ liệu | Mô tả |
|---|---|---|---|
name | yes | string | Tên hàng hóa |
price | no | integer | Giá trị hàng hóa |
weight | yes | float | Khối lượng hàng hóa (kg) |
quantity | yes | integer | Số lượng hàng hóa |
code | yes | string | Mã sản phẩm |
Phản hồi
Các thông tin trả về
| Tham số | Mô tả |
|---|---|
| data[i].partner_id | String - Tracking id của đối tác |
| data[i].txid | String - tracing id trả về |
| data[i].services[j].fee.id | Integer - Id gói phí áp dụng |
| data[i].services[j].fee.val | Integer - Phí áp dụng tính theo VNĐ |
| data[i].services[j].leadtime.order_time | String - Thời gian khách đặt hàng (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.min_preparation_time | String - Thời gian min người bán chuẩn bị xong hàng (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.max_preparation_time | String - Thời gian max người bán chuẩn bị xong hàng (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.min_pickup_time | String - Thời gian min đơn vị vận chuyển (ĐVVC) lấy hàng (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.max_pickup_time | String - Thời gian max đơn vị vận chuyển (ĐVVC) lấy hàng (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.min_scheduled_time | String - Thời gian min hẹn khách (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.max_scheduled_time | String - Thời gian max hẹn khách (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.min_delivery_time | String - Thời gian giao hàng sớm nhất trong ngày (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.max_delivery_time | String - Thời gian giao hàng muộn nhất trong ngày (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.min_return_time | String - Thời gian min đơn vị vận chuyển (ĐVVC) hoàn hàng (yyyy-MM-dd HH:mm:ss) |
| data[i].services[j].leadtime.max_return_time | String - Thời gian max đơn vị vận chuyển (ĐVVC) hoàn hàng (yyyy-MM-dd HH:mm:ss) |
Thành công
{
"status": 200,
"message": "Lấy thông tin thành công",
"data": [
{
"partner_id": "MGW_ORDER_1",
"txid": "GHTK_TRACING_ID_1",
"services": [
{
"service_type": 1,
"leadtime": {
"order_time": "2025-08-08 06:00:00",
"min_preparation_time": "2025-08-08 08:00:00",
"max_preparation_time": "2025-08-08 08:00:00",
"min_pickup_time": "2025-08-08 08:30:00",
"max_pickup_time": "2025-08-08 08:30:00",
"min_scheduled_time": "2025-08-08 10:00:00",
"max_scheduled_time": "2025-08-08 10:00:00",
"min_delivery_time": "2025-08-08 14:00:00",
"max_delivery_time": "2025-08-08 16:00:00",
"min_return_time": "2025-15-08 17:00:00",
"max_return_time": "2025-15-08 17:00:00"
},
"fee": {
"id": 123123,
"val": 30400
}
},
{
"service_type": 2,
"leadtime": {
"order_time": "2025-08-08 06:00:00",
"min_preparation_time": "2025-08-08 08:00:00",
"max_preparation_time": "2025-08-08 08:00:00",
"min_pickup_time": "2025-08-08 08:30:00",
"max_pickup_time": "2025-08-08 08:30:00",
"min_scheduled_time": "2025-08-08 10:00:00",
"max_scheduled_time": "2025-08-08 10:00:00",
"min_delivery_time": "2025-08-08 14:00:00",
"max_delivery_time": "2025-08-08 16:00:00",
"min_return_time": "2025-15-08 17:00:00",
"max_return_time": "2025-15-08 17:00:00"
},
"fee": {
"id": 123123,
"val": 30400
}
}
]
},
{
"partner_id": "MGW_ORDER_2",
"txid": "GHTK_TRACING_ID_2",
"services": [
{
"service_type": 1,
"leadtime": {
"order_time": "2025-08-08 06:00:00",
"min_preparation_time": "2025-08-08 08:00:00",
"max_preparation_time": "2025-08-08 08:00:00",
"min_pickup_time": "2025-08-08 08:30:00",
"max_pickup_time": "2025-08-08 08:30:00",
"min_scheduled_time": "2025-08-08 10:00:00",
"max_scheduled_time": "2025-08-08 10:00:00",
"min_delivery_time": "2025-08-08 14:00:00",
"max_delivery_time": "2025-08-08 16:00:00",
"min_return_time": "2025-15-08 17:00:00",
"max_return_time": "2025-15-08 17:00:00"
},
"fee": {
"id": 123123,
"val": 30400
}
},
{
"service_type": 2,
"leadtime": {
"order_time": "2025-08-08 06:00:00",
"min_preparation_time": "2025-08-08 08:00:00",
"max_preparation_time": "2025-08-08 08:00:00",
"min_pickup_time": "2025-08-08 08:30:00",
"max_pickup_time": "2025-08-08 08:30:00",
"min_scheduled_time": "2025-08-08 10:00:00",
"max_scheduled_time": "2025-08-08 10:00:00",
"min_delivery_time": "2025-08-08 14:00:00",
"max_delivery_time": "2025-08-08 16:00:00",
"min_return_time": "2025-15-08 17:00:00",
"max_return_time": "2025-15-08 17:00:00"
},
"fee": {
"id": 123123,
"val": 30400
}
}
]
}
],
"timestamp": "2025-10-10T15:36:56.794Z"
}
Không thành công
Danh sách mã lỗi:
| HTTP Code | Error Code | Error Message | Description |
|---|---|---|---|
| 200 | 2020103 | Không phân tích được địa chỉ | Parse địa chỉ bị lỗi. Thông tin data[n].services trả về null. |
| 200 | 2020104 | Địa chỉ lấy hàng không hợp lệ | Trường thông tin packages[n].pickup truyền lên bị thiếu. Thông tin data[n].services trả về null. |
| 200 | 2020105 | Địa chỉ giao hàng không hợp lệ | Trường thông tin packages[n].delivery truyền lên bị thiếu. Thông tin data[n].services trả về null. |
| 200 | 2020106 | Danh sách sản phẩm không hợp lệ | Trường thông tin packages[n].items truyền lên bị thiếu. Thông tin data[n].services trả về null. |
| 200 | 2020107 | Danh sách loại dịch vụ không hợp lệ | Trường thông tin packages[n].service_type truyền lên bị thiếu hoặc không hợp lệ. Thông tin data[n].services trả về null. |
| 200 | 2020108 | Thời gian đặt hàng không hợp lệ | Trường thông tin packages[n].order_time truyền lên bị thiếu hoặc không hợp (Format yyyy-MM-dd HH:mm:ss). Thông tin data[n].services trả về null. |
info
Trường data[n].error_code chứa thông tin mã lỗi cho đơn nứng với từng loại dịch vụ (Địa chỉ không hợp lệ, danh sách
loại dịch vụ không hợp lệ...)
Ví dụ mẫu response lỗi:
{
"status": 200,
"message": "Lấy thông tin thành công",
"data": [
{
"partner_id": "MWG_ORDER_1",
"txid": "GHTK_TRACING_ID_1",
"error_code": 2020104,
"error_message": "Địa chỉ lấy hàng không hợp lệ",
"services": null
},
{
"partner_id": "MWG_ORDER_2",
"txid": "GHTK_TRACING_ID_2",
"services": [
{
"service_type": 1,
"leadtime": null,
"fee": null
},
{
"service_type": 2,
"leadtime": {
"order_time": "2025-10-10 10:00:00",
"min_preparation_time": "2025-10-12 18:30:00",
"max_preparation_time": "2025-10-11 09:45:00",
"min_pickup_time": "2025-10-12 18:30:00",
"max_pickup_time": "2025-10-11 09:45:00",
"min_scheduled_time": "2025-10-10 11:30:00",
"max_scheduled_time": "2025-10-10 11:30:00",
"min_delivery_time": "2025-10-12 20:30:00",
"max_delivery_time": "2025-10-11 13:30:00",
"min_return_time": "2025-10-11 18:30:00",
"max_return_time": "2025-10-13 08:30:00"
},
"fee": {
"id": 125,
"val": 6000
}
},
{
"service_type": 3,
"leadtime": null,
"fee": null
}
]
},
{
"partner_id": "MWG_ORDER_3",
"txid": "GHTK_TRACING_ID_3",
"error_code": 2020103,
"error_message": "Không phân tích được địa chỉ",
"services": null
},
{
"partner_id": "MWG_ORDER_6",
"txid": "GHTK_TRACING_ID_6",
"error_code": 2020106,
"error_message": "Danh sách sản phẩm không hợp lệ",
"services": null
}
],
"timestamp": "2025-10-10T15:36:56.794Z"
}