- vừa được xem lúc

Sử dụng API Giao hàng Nhanh để tính giá cước vận chuyển

0 0 103

Người đăng: Dương Mạnh Đăng

Theo Viblo Asia

Nếu ai đang phát triển một trang web liên quan đến việc vận chuyển sản phẩm như mua bán hàng online, chắc hẳn sẽ phải tích hợp API của các dịch vụ giao hàng như Giao hàng Nhanh, Viettel Post,...

Trong bài này, mình xin hướng dẫn cách sử dụng API của Giao hàng Nhanh để tính phí vận chuyển hàng hóa.

1. Tạo tài khoản

Để có thể sử dụng được API, chúng ta cần có tài khoản của GHN để lấy user token.

  • B1: Truy cập vào link sau để đăng ký tài khoản: https://sso.ghn.vn/register
  • B2: Sau khi đăng nhập thành công, bấm vào tên mình ở góc trên bên trái màn hình để xem thông tin cá nhân.
  • B3: Tại ô Token API, nhấn Xem để lấy Token.

2. API lấy thông tin địa chỉ giao hàng

Để có thể tính toán được chi phí vận chuyển, chúng ta cần phải có input là Quận huyện, Phường xã nơi lấy hàng và nơi nhận hàng.

Để lấy được dữ liệu về tất cả Tỉnh thành phố, Quận huyện, Phường xã của Việt Nam, chúng ta làm như sau:

2.1. API lấy thông tin Tỉnh, Thành Phố

Sau đây mình sẽ gọi thử API này bằng Postman. Copy token vừa lấy được ở phần 1, cho vào Headers. Kết quả trả về thành công sẽ như trong hình.

2.2. API lấy thông tin Quận, Huyện

Để lấy thông tin Quận/Huyện của một Tỉnh/ Thành phố nào đó, ta dùng API sau:

Ví dụ mình lấy danh sách các quận thuộc thành phố Hà Nội:

Vì thành phố Hà Nội có province_id là 201 nên mình sẽ truyền param province_id=201 dưới dạng json vào Body. Kết quả trả về thành công sẽ như sau:

2.3. API lấy thông tin Phường, Xã

API này tương tự như API lấy thông tin Quận, Huyện.

Ví dụ mình lấy danh sách các phường thuộc quận Hà Đông (district_id = 1542)

3. API lấy thông tin gói dịch vụ

Việc giao hàng từ vị trí A đến vị trí B sẽ có nhiều cách thức khác nhau như: giao hàng bằng đường bộ, đường hàng không, tàu thủy,... Mỗi phương thức giao hàng sẽ có giá cước khác nhau, nên đây cũng sẽ là input cho API tính cước phí giao hàng.

Để lấy các phương thức giao hàng khả dụng, ta dùng API sau:

Cách lấy shop_id sẽ nằm trong màn Quản lý cửa hàng. Ví dụ mình lấy gói dịch vụ khả dụng khi chuyển hàng từ quận Hà Đông (id: 1542) đến quận 1 - TP Hồ Chí Minh (id: 1442): Kết quả trả về cho thấy có 2 gói khả dụng, đó là vận chuyển theo đường hàng không và theo đường bộ.

4. API tính giá cước vận chuyển

Cuối cùng cũng đến API tính giá cước ?

  • API: https://online-gateway.ghn.vn/shiip/public-api/v2/shipping-order/fee
  • Method: GET/POST
  • Header: token, shop_id
  • Param:
    • service_id hoặc service_type_id:
      • service_id: int - ID của gói dịch vụ mà bạn chọn (lấy được ở phần 3)
      • service_type_id: Nếu không điền service_id, có thể thay thế bằng 1 trong 3 lựa chọn sau: 1: Express, 2: Standard, 3: Saving
    • insurance_value: int - giá trị của sản phẩn. GHN căn cứ vào giá trị này để tính tiền bảo hiểm cho hàng hóa.
    • coupon: String - Mã giảm giá của GHN. Nếu không có, để rỗng: "" hoặc null
    • to_ward_code: String - ID Phường/ Xã người nhận
    • to_district_id: int - ID Quận/Huyện người nhận
    • from_district_id: int - ID Quận/Huyện người gửi
    • weight: int - trọng lượng hàng hóa (gram)
    • length: int - Chiều dài (cm)
    • width: int - Chiều rộng (cm)
    • height: int - Chiều cao (cm)

Ví dụ, mình sẽ tính phí vận chuyển với thông tin vận chuyển như sau:

{ "service_id":53321, "insurance_value":500000, "coupon": null, "from_district_id":1542, "to_district_id":1444, "to_ward_code":"20314", "height":15, "length":15, "weight":1000, "width":15
}

Gọi API với params truyền vào như trên, ta được kết quả như sau:

{ "code": 200, "message": "Success", "data": { "total": 37000, "service_fee": 37000, "insurance_fee": 0, "pick_station_fee": 0, "coupon_value": 0, "r2s_fee": 0 }
}

Vậy tổng giá cước khi vận chuyển một kiện hàng có kích thước 15x15x15cm, nặng 1kg từ Hà Đông (Hà Nội) đi Quận 1 (TP Hồ Chí Minh) là 37000đ.

5. Kết

Trên đây, mình đã hướng dẫn cách sử dụng API của GHN để tính giá cước vận chuyển. Ngoài ra còn những API khác cũng rất quan trọng như tính thời gian vận chuyển, tạo đơn hàng,.... thì mời các bạn xem thêm trong doc của GHN: https://api.ghn.vn/home/docs/detail, cách làm cũng tương tự như trên.

Cảm ơn các bạn đã theo dõi

6. Tài liệu tham khảo

Bình luận

Bài viết tương tự

- vừa được xem lúc

Flutter - GetX - Using GetConnect to handle API request (Part 4)

Giới thiệu. Xin chào các bạn, lại là mình với series về GetX và Flutter.

0 0 322

- vừa được xem lúc

API vs WebSockets vs WebHooks: What to Choose?

. Khi xây dựng bất kì một ứng dụng nào, chúng ta đều cần phải có một cơ chế đáng tin cậy để giao tiếp giữa các thành phần của nó. Đây là khi APIs, WebSockets và WebHooks được ứng dụng vào.

0 0 85

- vừa được xem lúc

Sử dụng Fast JSON API serialization trong Ruby on Rails

Ở bài viết này chúng ta sẽ thử tạo 1 project API sử dụng gem fast_jsonapi cho serializer. Đầu tiên là tạo một project API mới. $ rails new rails-jsonapi --database=postgresql --skip-action-mailbox --skip-action-text --skip-spring -T --skip-turbolinks --api. .

0 0 117

- vừa được xem lúc

Test thử ba loại API chụp màn hình Windows

Hiện tại, Windows cung cấp khoảng ba cách để chụp màn hình. Thế thì cái nào là nhanh nhất? Tôi muốn test thử từng cái.

0 0 52

- vừa được xem lúc

Ngừng sử dụng REST cho API — GraphQL là cách tốt hơn

Mở đầu. REST đã được nhiều developers sử dụng để gửi dữ liệu qua HTTP trong khi GraphQL thường được trình bày như một công nghệ thay thế các API REST.

0 0 82

- vừa được xem lúc

Quản lý và sử dụng API trong Nuxt bằng cách sử dụng Repository Pattern

Mở đầu năm mới, à nhầm, mở đầu bài viết. Cái tên NuxtJS chắc hẳn cũng không còn xa lạ gì với những bạn yêu thích VueJS nữa, đương nhiên mình cũng là một chàng trai dành tình yêu to lớn cho frameworks này.

0 0 211