Shipment

Các thao tác với đơn hàng thông qua Goship API

API shipment được dùng để tạo vận đơn mới, lấy thông tin các vận đơn đã tạo của bạn, tìm kiếm vận đơn... Sử dụng API này để liệt kê 1 danh sách các vận đơn và thông tin chi tiết của chúng.

Danh sách vận đơn

GET https://sandbox.goship.io/api/v2/ondemand-shipments

Response data:

{
  "code": 200,
  "status": "success",
  "data": [
    {
      "id": "GSVQ833P81",
      "code": null,
      "order_id": null,
      "shipper_phone": null,
      "shipper_name": null,
      "carrier": "1",
      "carrier_text": "Ahamove",
      "carrier_logo": "http://localhost/static/ahamove.png",
      "service": "HAN-BIKE",
      "requests": [],
      "vehicle": "BIKE",
      "discount": 0,
      "stop_fee": 0,
      "delivery_fee": 0,
      "total_fee_carrier": 0,
      "service_fee": 0,
      "total_fee": 0,
      "cod_amount": 0,
      "total_amount": 0,
      "tracking_url": null,
      "status": 900,
      "status_text": "Đơn mới",
      "error": null,
      "error_text": null,
      "note": "",
      "polylines": null,
      "can_cancel": true,
      "can_update": false,
      "pickup_at": null,
      "delivery_at": null,
      "shipper_accept_at": null,
      "completed_at": null,
      "returned_at": null,
      "metadata": [],
      "cancel_at": null,
      "created_at": "2025-04-26 16:03:24",
      "updated_at": "2025-04-26 16:03:24",
      "points": {
        "data": [
          {
            "id": "GS196QRP8J",
            "tracking_number": null,
            "tracking_url": null,
            "kind": 1,
            "kind_text": "Điểm lấy hàng",
            "is_return": false,
            "completed_at": null,
            "failed_at": null,
            "returned_at": null,
            "fail_note": null,
            "address": "360 Đ. Giải Phóng, Phương Liệt, Thanh Xuân, Hà Nội, Vietnam",
            "lat": "20.9856562",
            "lng": "105.8404401",
            "note": "",
            "status": 900,
            "status_text": "Đơn mới",
            "created_at": "2025-04-26 16:03:24",
            "parcel": null,
            "latest_status": {
              "data": {
                "status": 900,
                "status_text": "Đơn mới",
                "message": null,
                "created_at": "2025-04-26 16:03:24"
              }
            },
            "statuses": {
              "data": [
                {
                  "status": 900,
                  "status_text": "Đơn mới",
                  "message": null,
                  "created_at": "2025-04-26 16:03:24"
                }
              ]
            }
          },
          {
            "id": "GSNX8EXZLM",
            "tracking_number": null,
            "tracking_url": null,
            "kind": 2,
            "kind_text": "Điểm giao hàng",
            "is_return": false,
            "completed_at": null,
            "failed_at": null,
            "returned_at": null,
            "fail_note": null,
            "address": "373 P. Vũ Tông Phan, Khương Đình, Thanh Xuân, Hà Nội, Việt Nam",
            "lat": "20.9899983",
            "lng": "105.8137906",
            "note": "",
            "status": 900,
            "status_text": "Đơn mới",
            "created_at": "2025-04-26 16:03:24",
            "parcel": {
              "name": "Quần áo, Giày dép",
              "quantity": 0,
              "amount": 0,
              "cod_amount": 0,
              "length": 0,
              "width": 0,
              "height": 0,
              "weight": 500
            },
            "latest_status": {
              "data": {
                "status": 900,
                "status_text": "Đơn mới",
                "message": null,
                "created_at": "2025-04-26 16:03:24"
              }
            },
            "statuses": {
              "data": [
                {
                  "status": 900,
                  "status_text": "Đơn mới",
                  "message": null,
                  "created_at": "2025-04-26 16:03:24"
                }
              ]
            }
          }
        ]
      },
      "latest_status": {
        "data": {
          "status": 900,
          "status_text": "Đơn mới",
          "message": "Tạo đơn hàng",
          "created_at": "2025-04-26 16:03:24"
        }
      },
      "statuses": {
        "data": [
          {
            "status": 900,
            "status_text": "Đơn mới",
            "message": "Tạo đơn hàng",
            "created_at": "2025-04-26 16:03:24"
          }
        ]
      }
    }
  ]
}

Trong đó:

Tên trườngMô tả
idMã vận đơn Goship
codeMã vận đơn của hãng vận chuyển
order_idMã đơn hàng của đối tác
shipper_phoneSố điện thoại người gửi
shipper_nameTên người gửi
carrierMã hãng vận chuyển
carrier_textTên hãng vận chuyển
carrier_logoLogo hãng vận chuyển
serviceMã dịch vụ
requestsDanh sách các yêu cầu của hãng vận chuyển
vehiclePhương tiện vận chuyển
discountMức giảm giá
stop_feePhí dừng đỗ
delivery_feePhí giao hàng
total_fee_carrierTổng phí của hãng vận chuyển
service_feePhí dịch vụ (nền tảng)
total_feeTổng phí của đơn hàng
cod_amountTổng tiền thu hộ
total_amountTổng tiền của đơn hàng
tracking_urlĐường dẫn theo dõi đơn hàng
statusTrạng thái đơn hàng
status_textTrạng thái đơn hàng (text)
errorMã lỗi
error_textMô tả lỗi
noteGhi chú
polylinesĐường đi của đơn hàng
can_cancelCó thể hủy đơn hàng
can_updateCó thể cập nhật đơn hàng
pickup_atThời gian lấy hàng
delivery_atThời gian giao hàng
shipper_accept_atThời gian người gửi chấp nhận đơn hàng
completed_atThời gian hoàn thành đơn hàng
returned_atThời gian trả hàng
metadataThông tin bổ sung
cancel_atThời gian hủy đơn hàng
created_atThời gian tạo đơn hàng
updated_atThời gian cập nhật đơn hàng
pointsDanh sách các điểm giao hàng
points[].idMã điểm giao hàng
points[].tracking_numberMã theo dõi đơn hàng
points[].tracking_urlĐường dẫn theo dõi đơn hàng
points[].kindLoại điểm giao hàng (1: Điểm lấy hàng, 2: Điểm giao hàng)
points[].kind_textLoại điểm giao hàng (text)
points[].is_returnCó phải là điểm trả hàng không
points[].completed_atThời gian hoàn thành đơn hàng
points[].failed_atThời gian thất bại đơn hàng
points[].returned_atThời gian trả hàng
points[].fail_noteGhi chú lỗi
points[].addressĐịa chỉ giao hàng
points[].latVĩ độ
points[].lngKinh độ
points[].noteGhi chú
points[].statusTrạng thái đơn hàng
points[].status_textTrạng thái đơn hàng (text)
points[].created_atThời gian tạo đơn hàng
points[].parcelThông tin hàng hóa
points[].parcel.nameTên hàng hóa
points[].parcel.quantitySố lượng hàng hóa
points[].parcel.amountGiá trị hàng hóa
points[].parcel.cod_amountGiá tiền thu hộ
points[].parcel.lengthChiều dài hàng hóa
points[].parcel.widthChiều rộng hàng hóa
points[].parcel.heightChiều cao hàng hóa
points[].parcel.weightTrọng lượng hàng hóa
points[].latest_statusTrạng thái mới nhất của đơn hàng
points[].statusesDanh sách trạng thái

Phân trang:

Mặc định url này sẽ trả về 25 bản ghi, để lấy nhiều hơn hoặc ít hơn 25 bản ghi mặc định, chúng ta sử dụng tham số size trên query string, ví dụ:

GET https://sandbox.goship.io/api/v2/ondemand-shipments?size=30

Để di chuyển giữa các trang, chúng ta sử dụng tham số page trên query string

GET https://sandbox.goship.io/api/v2/ondemand-shipments?size=30&page=2

Tìm kiếm shipment

Chúng ta sẽ sử dụng tham số code để tìm kiếm thông tin chi tiết về vận đơn đó.

GET https://sandbox.goship.io/api/v2/ondemand-shipments?code=g3lm98me

Hoặc GET https://sandbox.goship.io/api/v2/ondemand-shipments/g3lm98me

Trong đó code có thể nhận giá trị của các trường id, order_id hoặc carrier_code.

Hoặc tìm kiếm 1 danh sách các vận đơn theo thời gian tạo sử dụng tham số fromto

  • from: Integer - Thời gian bắt đầu
  • to: Integer - Thời gian kết thúc

GET https://sandbox.goship.io/api/v2/ondemand-shipments?from=12345678&to=87654321

Phân trang và Response data tương tự như API shipment listing ở trên.

Tham khảo tài liệu mô tả về Phân trang

Tạo mới vận đơn

Chúng ta có thể thêm mới 1 vận đơn bằng cách thực hiện 1 request như sau

POST https://sandbox.goship.io/api/v2/ondemand-shipments

Request body:

{
  "order_id": "INTERNAL-ORDER-ID",
  "paths": [
    {
      "address": "Ngõ 371 Phố Vũ Tông Phan, Phường Khương Đình, Quận Thanh Xuân, Hà Nội, Việt Nam",
      "name": "My Company",
      "phone": "0987654321",
      "lat": 20.9898715,
      "lng": 105.8139308,
      "kind": 1
    },
    {
      "address": "300 Đ. Giải Phóng, Phương Liệt, Hai Bà Trưng, Hà Nội, Việt Nam",
      "name": "Nguoi nhan",
      "phone": "0123456789",
      "lat": 20.9902259,
      "lng": 105.8405199,
      "kind": 2,
      "parcel": {
        "name": "Quần áo, Giày dép",
        "quantity": 0,
        "weight": 999,
        "height": 0,
        "width": 0,
        "length": 0,
        "cod_amount": 0,
        "amount": 0
      }
    }
  ],
  "carrier": 1,
  "vehicle": "BIKE",
  "service": "HAN-BIKE",
  "note": "Ghi chú cho tài xế",
  "metadata": ["Thông tin bổ sung ..."],
  "requests": [
    {
      "_id": "HAN-BIKE-ROUND-TRIP"
    }
  ]
}

Trong đó:

Tên trườngMô tảType
order_idMã đơn hàng của đối tácstring
pathsDanh sách các điểm giao hàngArray of object
paths[].addressĐịa chỉ giao hàngstring
paths[].nameTên người gửi hoặc người nhậnstring
paths[].phoneSố điện thoại người gửi hoặc người nhậnstring
paths[].latVĩ độfloat
paths[].lngKinh độfloat
paths[].kindLoại điểm giao hàng (1: Điểm lấy hàng, 2: Điểm giao hàng)Enum 1, 2
paths[].parcelThông tin hàng hóaobject
paths[].parcel.nameTên hàng hóastring
paths[].parcel.quantitySố lượng hàng hóainteger
paths[].parcel.weightTrọng lượng hàng hóa (gram)integer
paths[].parcel.heightChiều cao hàng hóa (cm)integer
paths[].parcel.widthChiều rộng hàng hóa (cm)integer
paths[].parcel.lengthChiều dài hàng hóa (cm)integer
paths[].parcel.cod_amountTiền thu hộ của gói hànginteger
paths[].parcel.amountGiá trị hàng hóainteger
carrierMã hãng vận chuyển Xem danh sách hãng vận chuyểninteger
vehiclePhương tiện vận chuyểnEnum BIKE
serviceMã id dịch vụ Xem danh sách dịch vụ khi lấy biểu phístring
noteGhi chústring
metadataThông tin bổ sungArray of object
requestsDanh sách các yêu cầu bổ sung để tính phí đúng nhấtArray
requests[]._idID của yêu cầustring
requests[].tier_codeMã tier của yêu cầu (Đối với yêu cầu hàng cồng kềnh)Xem mẫustring
requests[].numSố lượng yêu cầu Xem mẫuinteger

Response data:

{
  "code": 200,
  "status": "success",
  "data": {
    "id": "GS3Y6X2OLK",
    "code": "GS3Y6X2OLK",
    "order_id": "G-MYTRACKING-CODE",
    "status": 901,
    "status_text": "Đã gửi sang hãng vận chuyển",
    "tracking_url": null,
    "metadata": ["Thông tin bổ sung ..."],
    "can-update": true
    ...
  }
}

Sửa thông tin Vận đơn

PUT https://sandbox.goship.io/api/v2/ondemand-shipments/56GDG8F Trong đó, 56GDG8F là mã vận đơn Goship.

Các đơn có trạng thái trường can-update sẽ có thể sửa lại thông tin của đơn hàng để gửi lại sang hãng vận chuyển.

Request body: Tương tự khi tạo đơn.

Xóa vận đơn

DELETE https://sandbox.goship.io/api/v2/ondemand-shipments/56GDG8F

Trong đó, 56GDG8F là mã vận đơn Goship.

Response data:

Success

{
  "code": 200,
  "status": "success"
}

Error

{
  "code": 404,
  "status": "Error",
  "data": "Resource Not Found",
  "message": "Not Found"
}