Tạo đơn
- cURL
- JavaScript
curl --request POST \
--url https://apistg.ahamove.com/v1/order/create \
--header 'Cache-Control: no-cache' \
--header 'accept: application/json' \
--header 'content-type: application/x-www-form-urlencoded' \
--data-urlencode 'service_id=SGN-BIKE' \
--data-urlencode 'payment_method=CASH' \
--data-urlencode 'promo_code=KHUYENMAI' \
--data-urlencode 'remarks=This is note for order' \
--data-urlencode 'order_time=0' \
--data-urlencode 'requests=[{"_id":"SGN-BIKE-TIP","num":2}]' \
--data-urlencode 'path=[{"lat":10.7692105,"lng":106.6637935,"address":"725 Hẻm số 7 Thành Thái, Phường 14, Quận 10, Hồ Chí Minh, Việt Nam","short_address":"Quận 10","name":"nmbmb","mobile":"84xxxxxxxxx"},{"lat":10.7828887,"lng":106.704898,"address":"Miss Ao Dai Building, 21 Nguyễn Trung Ngạn, Bến Nghé, Quận 1, Hồ Chí Minh, Vietnam","name":"Bao","mobile":"84xxxxxxxxx","remarks":"call me","cod":85000,"tracking_number":"1234"}]' \
--data-urlencode 'items=[{"_id": "TS","num": 2,"name": "Sua tuoi","price": 15000},{"_id": "ST","num": 2,"name": "Sinh to","price": 30000}]' \
--data-urlencode 'token=<TOKEN_STG>'
var myHeaders = new Headers();
myHeaders.append('accept', 'application/json');
myHeaders.append('content-type', 'application/x-www-form-urlencoded');
var urlencoded = new URLSearchParams();
urlencoded.append('service_id', 'SGN-BIKE');
urlencoded.append('payment_method', 'CASH');
urlencoded.append('promo_code', 'KHUYENMAI');
urlencoded.append('remarks', 'This is note for order');
urlencoded.append('order_time', '0');
urlencoded.append('requests', '[{"_id":"SGN-BIKE-TIP","num":2}]');
urlencoded.append(
'path',
'[{"lat":10.7692105,"lng":106.6637935,"address":"725 Hẻm số 7 Thành Thái, Phường 14, Quận 10, Hồ Chí Minh, Việt Nam","short_address":"Quận 10","name":"nmbmb","mobile":"84xxxxxxxxx"},{"lat":10.7828887,"lng":106.704898,"address":"Miss Ao Dai Building, 21 Nguyễn Trung Ngạn, Bến Nghé, Quận 1, Hồ Chí Minh, Vietnam","name":"Bao","mobile":"84xxxxxxxxx","remarks":"call me","cod":85000,"tracking_number":"1234"}]'
);
urlencoded.append("items", "[{"_id": "TS","num": 2,"name": "Sua tuoi","price": 15000},{"_id": "ST","num": 2,"name": "Sinh to","price": 30000}]");
urlencoded.append('token', '<TOKEN_STG>');
urlencoded.append('conversion_data', '');
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: urlencoded,
redirect: 'follow',
};
fetch('https://apistg.ahamove.com/v1/order/create', requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log('error', error));
Tạo đơn hàng mới bởi người dùng (hỗ trợ cả 2 phương thức GET/POST)
HTTP Request
POST https://apistg.ahamove.com/v1/order/create
(x-wwww-form-urlencoded)
or
GET https://apistg.ahamove.com/v1/order/create
Parameters
# Parameters
{
"order_time": 0,
"path": [
{
"lat": 10.7692105,
"lng": 106.6637935,
"address": "725 Hẻm số 7 Thành Thái, Phường 14, Quận 10, Hồ Chí Minh, Việt Nam",
"short_address": "Quận 10",
"name": "nmbmb",
"mobile":"84xxxxxxxxx"
},
{
"lat": 10.7828887,
"lng": 106.704898,
"address": "Miss Ao Dai Building, 21 Nguy ễn Trung Ngạn, Bến Nghé, Quận 1, Hồ Chí Minh, Vietnam",
"name": "Bao",
"mobile":"84xxxxxxxxx",
"remarks": "call me",
"cod": 85000,
"tracking_number": "1234"
}
],
"service_id": "SGN-BIKE",
"requests": [
{
"_id": "SGN-BIKE-TIP",
"num": 2
}
],
"images": [],
"promo_code": "KHUYENMAI",
"remarks": "Call me when arrived",
"payment_method": "CASH",
"items": [
{
"_id": "TS",
"num": 2,
"name": "Sua tuoi",
"price": 15000
},
{
"_id": "ST",
"num": 2,
"name": "Sinh to lua mach",
"price": 30000
}
]
}
Parameter | Type | Yêu cầu | Mô tả |
---|---|---|---|
token | String | Có | Token của người dùng |
order_time | Number (Unix timestamp) | Có | Thời gian lấy hàng. Để là 0 để đơn hàng giao ngay |
path | String | Có | Ít nhất 2 phần (được mô tả chi tiết hơn ở bên dưới) |
service_id | String | Có | Mã dịch vụ của AhaMove (SGN-BIKE, SGN-POOL, etc.). |
requests | Array | Có | Dãy JSON thể hiện các yêu cầu đặc biệt |
payment_method | String | Có | Phương thức thanh toán đơn hàng - BALANCE : Thanh toán bằng tài khoản người tạo đơn - CASH : Thanh toán bằng tiền mặt bởi người gửi hàng - CASH_BY_RECIPIENT : Thanh toán bằng tiền mặt bởi người nhận hàng |
images | Array | Không | Dãy JSON thể hiện cho urls của hình ảnh |
promo_code | String | Không | Mã khuyến mãi để giảm giá phí giao hàng |
remarks | String | Không | Chú thích |
idle_until | Number (Unix timestamp) | Có | Thời gian broadcast. Đặt idle_until=order_time nếu order_time > 0. Không bắt buộc nếu order_time là 0. |
items | Array | Không | Dãy JSON thể hiện cho các mặt hàng (Đối với các Đối tác ngành hàng thực phẩm) |
type | String | Không | Loại đơn hàng, ví dụ: warehouse, etc … Xem như những trường hợp bình thường nếu loại đơn hàng không phải loại đặc biệt |
need_optimize_route | Boolean | Không | Trong trường hợp nếu Đối tác muốn Ahamove tối ưu giao hàng (1 điểm lấy hàng, > 2 điểm giao hàng) |
Path
Hiển thị từ path[0]
đến nhiều path[x], x > 0
Parameter | Type | Yêu cầu | Mô tả |
---|---|---|---|
address | String | Có | Địa chỉ |
lat | Number | Có | Vĩ độ của địa điểm (Không bắt buộc nhưng đề xuất Đối tác nên sử dụng) |
lng | Number | Có | Kinh độ của địa điểm (Không bắt buộc nhưng đề xuất Đối tác nên sử dụng) |
name | String | Có | Tên người nhận. Không bắt buộc nếu là path[0] |
mobile | String | Có | Số điện thoại người nhận. Không bắt buộc nếu là path[0] |
tracking_number | String | Không | Mã theo dõi của gói hàng (Mã đơn hàng nội bộ của Đối tác, không bắt buộc nhưng Ahamove đề xuất nên có mã này trong path[x] ) |
remarks | String | Không | Chú thích dành cho tài xế,cho nhiều điểm giao hàng |
cod | Number | Không | Số lượng COD (Cash on delivery), cho nhiều điểm giao hàng |
require_pod | Boolean | Không | Nếu true, tài xế sẽ được yêu cầu chụp bằng chức xác nhận giao hàng trước khi giao dịch |
building | String | Không | Tên tòa nhà cho dịch vụ giao hàng tận tay |
apt_number | String | Không | Tên căn hộ hoặc số tầng cho dịch vụ giao hàng tận tay |
sender_name | String | Không | Tên người gửi, cho nhiều điểm giao hàng |
sender_mobile | String | Không | Số điện thoại người gửi, cho nhiều điểm giao hàng |
Lưu ý
lat
và lng
là không bắt buộc nhưng trường
address
trong parameters cần phải đầy đủ thông tin và theo đúng định dạng như
bên dưới:
Ví dụ: 117 Hùng Vương, Phường 4, Quận 5, Thành phố Hồ Chí Minh, Việt Nam
hoặc 117 Hùng Vương, Phường 4, Quận 5, Hồ Chí Minh
Một số dạng Địa chỉ không hợp lệ :
- 658 võ văn kiệt p1 Quận 5 Hồ Chí Minh
- 58 Nghĩa Thục - Phường 5 - Quận 5 - Hồ Chí Minh - Việt Nam
- 22 Bùi Hữu Nghĩa
- 60/62 chiêu anh các
- 930 vo văn Kiệt p5q5
- Có ji e gởi đia chỉ 835/17c trần hung dao p1 q5 tphcm giúp c nha, Phường 01, Quận 5, Thành phố Hồ Chí Minh
- 54 Bạch Vân (Nhà màu xanh cuối hẻm, gọi số 0908999999), Phường 5, Quận 5, TP Hồ Chí Minh
- 189 Trần Tuấn Khải F.5 Q.5 Ngay ngã 3 Trần Hưng Đạo
- địa chỉ: 53 Huỳnh Mẫn Đạt phường 5 Quận 5 TP.HCM ĐT: 0912123456
- 14/20 .an binh p5q5
- 155 Trần Tuần Khải, p5, q5
- Số 1 bạch Vân phường 5 quận 5 TPHCM
- đc hẻm 93/107/16 đường bạch vân p5 q5
- 112 An Bình P5, Quận 5, HCM
- 1025, Phường 5, Quận 5
Response
JSON response example:
{
"order_id": "USAGND",
"status": "ASSIGNING",
"shared_link": "https://cloudstg.ahamove.com/share-order/USAGND/84909055578",
"order": {
"_id": "USAGND",
"currency": "VND",
"user_main_account": 0,
"user_bonus_account": 0,
"total_pay": 33000,
"distance": 1.02,
"duration": 268,
"distance_fee": 23000,
"request_fee": 10000,
"stop_fee": 0,
"vat_fee": 0,
"discount": 0,
"path": [
{
"address": "Nhà Thờ Đức Bà, Vietnam",
"lat": 10.7797855,
"lng": 106.6990189
},
{
"address": "Chợ Bến Thành, Vietnam",
"lat": 10.7725451,
"lng": 106.6980413
}
],
"from_location": {
"type": "Point",
"coordinates": [106.6990189, 10.7797855]
},
"requests": [
{
"_id": "SGN-BIKE-TIP",
"num": 2
}
],
"items": [],
"total_fee": 33000,
"remarks": "This is note for order",
"app": "Ahamove",
"service_id": "SGN-BIKE",
"city_id": "SGN",
"user_id": "84xxxxxxxxx",
"user_name": "TEST CREATE AN ORDER",
"user_imei": null,
"create_time": 1565577713.2757928,
"order_time": 1565577713.2757928,
"index": 12,
"status": "ASSIGNING",
"partner": "TESTPARTNER",
"polylines": "ukx`A}rfjS~CuDhHnGlBnA|DoEdFcB|BhBxBtDzBmA",
"online_pay": 0,
"notify_package_return": true,
"uniform_user_feedback": 2,
"pending_period": 100,
"stoppoint_price": 0,
"special_request_price": 10000,
"vat": 0,
"distance_price": 23000,
"voucher_discount": 0,
"subtotal_price": 33000,
"total_price": 33000
}
}
Status-Code: 200 OK
Các lỗi thường gặp
Mã lỗi | Nội dung | Mô tả |
---|---|---|
400 | INVALID_ADDRESS | Địa chỉ không hợp lệ |
404 | Not Found | - Không tìm thấy token (Token hết hạn. Khi token mới được tạo thì token cũ sẽ bị hết hạn) - Không tìm thấy path - Không tìm thấy dịch vụ |
406 | Not Acceptable | - Thời gian đặt hàng không hợp lệ - Địa chỉ không hợp lệ - Yêu cầu không hợp lệ - Khoảng cách không hợp lệ - Khu vực lấy hàng không hợp lệ - Khu vực giao hàng không hợp lệ - Các đơn hàng đồng thời không được cho phép (Nếu Đối tác không có trong token) - Không cho phép số lượng COD quá lớn cho người dùng lần đầu tiên - Đối tác không được đặt công nợ - Không hỗ trợ phương thức thanh toán này - Không đủ tiền - Số điện thoại của người dùng không được liên kết - Token đã được dùng cho một đối tác - Trạng thái đơn con không hợp lệ (Khi tạo đơn cha) - Đơn cha đã tồn tại #ABCXYZ (Khi tạo một đơn cha nhưng đơn con lại thuộc tài khoản cha khác) - Thời gian hẹn giờ không hợp lệ (Khi khách hàng gửi idle_until < current_time) - COD không hợp lệ ( Khi tổng COD vượt quá giá trị tối đa đã được cấu hình trong dịch vụ ) - Số điểm dừng không hợp lệ |
408 | Request timeout | Google Distance API không trả về kết quả trong 10 giây |
409 | Conflict | - Đơn hàng mới không được cho phép (Không chho phép 2 đơn hàng liên tiếp trong 1 phút) - Mã theo dõi bị trùng (Không cho phép tạo trùng mã theo dõi trong vòng 60 giây) |
500 | Internal Server Error | Hệ thống của chúng tôi có lỗi xảy ra. Xin thử lại sau |
503 | Service Unavailable | Chúng tôi tạm thời đang không hoạt động để bảo trì. Xin vui lòng thử lại sau |