8. Webhook
Luồng webhook được sử dụng để đồng bộ trạng thái mã vận đơn GHTK tới hệ thống của đối tác tích hợp APIs.
Giả sử đơn hàng mã "S1.A1.17373471" (mã trên hệ thống khách hàng là "1234567") được cập nhật ""đã giao hàng thành công".
Giả sử callback link của đối tác là
https://doitac.example.com/updateShipment?hash=XXX
Data GHTK sẽ gửi tới callback link của đối tác theo nội dung
{
"partner_id" : "1234567",
"label_id": "S1.A1.17373471",
"status_id": 5,
"action_time": "2016-11-02T12:18:39+07:00",
"reason_code": "",
"reason": "",
"weight": 2.4,
"fee": 15000,
"pick_money": 100000,
"return_part_package": 0
}
Request gửi từ máy chủ của GHTK gọi sang hệ thống của đối tác
- HTTP
- CURL
- PHP
POST /updateShipment?hash=XXX HTTP/1.1
Host: doitac.example.com
Content-type: application/x-www-form-urlencoded
label_id=S1.A1.17373471&partner_id=1234567&action_time=2016-11-02T12:18:39+07:00&status_id=5&reason_code=&reason=&weight=2.4&fee=1500&return_part_package=0
curl -X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d 'label_id=S1.A1.17373471&partner_id=1234567&action_time=2016-11-02T12:18:39+07:00&status_id=5&reason_code=&reason=&weight=2.4&fee=1500&return_part_package=0' \
"https://doitac.example.com/updateShipment?hash=XXX"
<?php
$data = array(
'label_id' => 'S1.A1.17373471',
'partner_id' => 1234567,
'action_time' => '2016-11-02T12:18:39+07:00',
'status_id' =>5,
'reason_code'=> '',
'reason'=> '',
'weight'=> 2.4,
'fee'=> 1500,
'return_part_package'=> 0
);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://doitac.example.com/updateShipment?hash=XXX",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_POSTFIELDS => $data,
));
$response = curl_exec($curl);
curl_close($curl);
echo 'Response: ' . $response;
?>
GHTK sử dụng response HTTP Status code để xác định là có gửi cập nhật cho đối tác thành công hay không.
Nếu nhận được response code 200, GHTK ghi nhận đã cập nhật thành công cho đối tác
HTTP/1.1 200 OK
Nếu không nhận được response, hoặc code khác 200. GHTK sẽ gửi cập nhật lại một lần nữa
HTTP/1.1 500 Internal Server Error
Danh sách tham số cung cấp cho đối tác
Tham số | Kiểu dữ liệu | Mô tả |
---|---|---|
label_id | String | - Mã đơn hàng của hệ thống GHTK |
partner_id | String | - Mã đơn hàng thuộc hệ thống của đối tác |
status_id | Integer | - Mã trạng thái đơn hàng |
action_time | String | ISO 8601 - Thời gian cập nhật trạng thái đơn hàng |
reason_code | String | - Mã lý do cập nhật |
reason | String | - Lý do chi tiết cập nhật |
weight | Float | - khối lượng đơn hàng tính theo kilogram |
fee | Integer | - phí ship của đơn hàng (VNĐ) |
return_part_package | Integer | - Nếu bằng 1 là đơn giao hàng một phần |
Trạng thái đơn hàng
Các trạng thái chuyển của đơn hàng trên hệ thống GHTK.
Tham số | Mô tả |
---|---|
-1 | Hủy đơn hàng |
1 | Chưa tiếp nhận |
2 | Đã tiếp nhận |
3 | Đã lấy hàng/Đã nhập kho |
4 | Đã điều phối giao hàng/Đang giao hàng |
5 | Đã giao hàng/Chưa đối soát |
6 | Đã đối soát |
7 | Không lấy được hàng |
8 | Hoãn lấy hàng |
9 | Không giao được hàng |
10 | Delay giao hàng |
11 | Đã đối soát công nợ trả hàng |
12 | Đã điều phối lấy hàng/Đang lấy hàng |
13 | Đơn hàng bồi hoàn |
20 | Đang trả hàng (COD cầm hàng đi trả) |
21 | Đã trả hàng (COD đã trả xong hàng) |
123 | Shipper báo đã lấy hàng |
127 | Shipper (nhân viên lấy/giao hàng) báo không lấy được hàng |
128 | Shipper báo delay lấy hàng |
45 | Shipper báo đã giao hàng |
49 | Shipper báo không giao được giao hàng |
410 | Shipper báo delay giao hàng |
Lưu ý: Các trạng thái cập nhật của Shipper 123, 127, 128, 45, 49, 410 chỉ mang tính chất thông báo thông tin, không phải trạng thái của đơn hàng trên GHTK.
Ví dụ Shipper có thể cập nhật 123 nhưng vì lý do khách quan (ví dụ: thao tác nhầm đơn) sau đó có thể cập nhật lại 127

Lý do chậm lấy hàng
Các lý do lấy hàng chậm hơn dữ kiến mặc định
Bảng mã reason_code cho trường hợp chậm lấy hàng (status_id = 8)
Mã | Mô tả |
---|---|
100 | Nhà cung cấp (NCC) hẹn lấy vào ca tiếp theo |
101 | GHTK không liên lạc được với NCC |
102 | NCC chưa có hàng |
103 | NCC đổi địa chỉ |
104 | NCC hẹn ngày lấy hàng |
105 | GHTK quá tải, không lấy kịp |
106 | Do điều kiện thời tiết, khách quan |
107 | Lý do khác |