# Tính phí vận chuyển

* Tính năng này dùng để tính phí vận chuyển cho một đơn hàng. Một hãng vận chuyển có thể có nhiều bảng giá, nhiều dịch vụ khác nhau.

## Request

* Xem [common request params](https://apidocs.nhanh.vn/v3/readme#request-params).
* Xem [Postman sample](https://www.postman.com/nhanh-vn/pos-open-nhanh-vn/request/8j38unq/shipping-fee).
* **Chú ý**: [Cài đặt vận chuyển](https://nhanh.vn/setting/order/index#connect-carrier) trên Nhanh.vn hỗ trợ 2 hình thức kết nối với các hãng vận chuyển, bạn cần hiểu rõ doanh nghiệp đang dùng hình thức kết nối nào để gọi API tính phí, và lấy các thông tin cần thiết dùng cho [API tạo đơn hàng](https://apidocs.nhanh.vn/v3/order/add)
  * [Kết nối có sẵn của Nhanh.vn](#carrier-nhanh-account): Mọi kế nối đi qua tài khoảng bảng giá chung của Nhanh.
  * [Kết nối tài khoản riêng của shop](#carrier-shop-account): Doanh nghiệp dùng tài khoản vận chuyển đã đăng ký với các hãng vận chuyển.

### filters

| Key            | Type                          | Description                                                                                                  |
| -------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------ |
| type           | int $$^{{\color{red}\*}}$$    | <p>Hình thức kết nối vận chuyển<br>1: Kết nối có sẵn của Nhanh.vn<br>2: Kết nối tài khoản riêng của shop</p> |
| depotId        | int                           | ID kho hàng                                                                                                  |
| shippingWeight | int $$^{{\color{red}\*}}$$    | Trọng lượng đơn hàng                                                                                         |
| price          | int                           | Tổng tiền sản phẩm                                                                                           |
| totalCod       | int                           | Tiền thu hộ                                                                                                  |
| carrier        | array                         | Mảng thông tin hãng vận chuyển. [Xem bên dưới](#carrier)                                                     |
| shippingFrom   | object $$^{{\color{red}\*}}$$ | Mảng thông tin người gửi. [Xem bên dưới](#shippingfrom)                                                      |
| shippingTo     | object $$^{{\color{red}\*}}$$ | Mảng thông tin người nhận. [Xem bên dưới](#shippingto)                                                       |

### carrier

| Key             | Type   | Description                                                                                                                                                                                                                              |
| --------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id              | int    | ID hãng vận chuyển ( $$^{{\color{red}\*}}$$ dùng cho hình thức shop tự kết nối)                                                                                                                                                          |
| service         | string | Dịch vụ vận chuyển                                                                                                                                                                                                                       |
| followTotalFee  | int    | Lấy theo tổng phí (1: Có, 0: Không)                                                                                                                                                                                                      |
| isDeclaredValue | int    | Khai giá (1: Có, 0: Không)                                                                                                                                                                                                               |
| declaredValue   | int    | Giá trị khai giá                                                                                                                                                                                                                         |
| promotionCode   | string | Mã khuyến mại vận chuyển                                                                                                                                                                                                                 |
| ids             | array  | Mảng ID hãng vận chuyển muốn dùng                                                                                                                                                                                                        |
| extraServices   | object | <p>Mảng dịch vụ cộng thêm (chỉ áp dụng với kết nối tài khoản riêng của shop: sendCarrierType = 2)<br>- BEST:<br>+ Đổi trả hàng: isReturnGoods = 1<br>- Viettel:<br>+ Loại thư từ: isDocument = 1<br>+ Phát tận tay: handDelivery = 1</p> |

#### Carrier Nhanh Account

* Kết nối có sẵn của Nhanh.vn

```curl
curl --location --globoff 'https://pos.open.nhanh.vn/v3.0/shipping/fee?appId={{appId}}&businessId={{businessId}}' \
--header 'Authorization: {{accessToken}}' \
--header 'Content-Type: application/json' \
--data '{
    "filters": {
        "type": 1,
        "shippingWeight":2100,
        "price": 321000,
        "totalCod": 256800,
        "shippingFrom": {
            "cityId": 254,
            "districtId": 331,
            "wardId" : 1026,
            "address": "170 Đê La Thành",
            "locationVersion": "v1"
        },
        "shippingTo": {
           "cityId": 254,
           "districtId": 331,
           "wardId" : 1120,
           "locationVersion": "v1"
        }
    }
}'
```

#### Carrier Shop Account

* Kết nối tài khoản riêng của shop

```curl
curl --location --globoff 'https://pos.open.nhanh.vn/v3.0/shipping/fee?appId={{appId}}&businessId={{businessId}}' \
--header 'Authorization: {{accessToken}}' \
--header 'Content-Type: application/json' \
--data '{
    "filters": {
        "type": 2,
        "shippingWeight":2100,
        "price": 321000,
        "totalCod": 256800,
        "shippingFrom": {
            "cityId": 254,
            "districtId": 331,
            "wardId" : 1026,
            "address": "170 Đê La Thành",
            "locationVersion": "v1"
        },
        "shippingTo": {
           "cityId": 254,
           "districtId": 331,
           "wardId" : 1120,
           "locationVersion": "v1"
        },
        "carrier": {
            "id": 8
        }
    }
}'
```

### shippingFrom

| Key             | Type                          | Description                                                                                                                 |
| --------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| cityId          | int $$^{{\color{red}\*}}$$    | ID Tỉnh/thành phố lấy từ [API địa chỉ](https://apidocs.nhanh.vn/v3/shipping/location)                                       |
| districtId      | int $$^{{\color{red}\*}}$$    | ID Quận/huyện lấy từ [API địa chỉ](https://apidocs.nhanh.vn/v3/shipping/location) (bắt buộc khi là địa chỉ 3 cấp)           |
| wardId          | int $$^{{\color{red}\*}}$$    | ID Phường/xã lấy từ [API địa chỉ](https://apidocs.nhanh.vn/v3/shipping/location) (bắt buộc khi là địa chỉ 2 cấp)            |
| address         | string                        | Địa chỉ người gửi                                                                                                           |
| locationVersion | string $$^{{\color{red}\*}}$$ | <p>v1: Địa chỉ 3 cấp (Tỉnh / Thành phố, Quận / Huyện, Phường / Xã)<br>v2: Địa chỉ 2 cấp (Tỉnh / Thành phố, Phường / Xã)</p> |

### shippingTo

| Key             | Type                          | Description                                                                                                                 |
| --------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| cityId          | int $$^{{\color{red}\*}}$$    | ID Tỉnh/thành phố lấy từ [API địa chỉ](https://apidocs.nhanh.vn/v3/shipping/location)                                       |
| districtId      | int $$^{{\color{red}\*}}$$    | ID Quận/huyện lấy từ [API địa chỉ](https://apidocs.nhanh.vn/v3/shipping/location) (bắt buộc khi là địa chỉ 3 cấp)           |
| wardId          | int $$^{{\color{red}\*}}$$    | ID Phường/xã lấy từ [API địa chỉ](https://apidocs.nhanh.vn/v3/shipping/location) (bắt buộc khi là địa chỉ 2 cấp)            |
| address         | string                        | Địa chỉ người nhận                                                                                                          |
| locationVersion | string $$^{{\color{red}\*}}$$ | <p>v1: Địa chỉ 3 cấp (Tỉnh / Thành phố, Quận / Huyện, Phường / Xã)<br>v2: Địa chỉ 2 cấp (Tỉnh / Thành phố, Phường / Xã)</p> |

## Response

* Xem cấu trúc chung [tại đây](https://apidocs.nhanh.vn/v3/readme#response).

### Failed response

* Xem các mã lỗi chung [tại đây](https://apidocs.nhanh.vn/v3/readme#failed-response).

### Successful response

```json
{
  "code": 1,
  "data": [
    {
      "logo": "(string) Đường dẫn ảnh hãng vận chuyển",
      "carrier": {
        "id": "(int) ID hãng vận chuyển",
        "accountId": "(int) ID tài khoản tự kết nối",
        "accountName": "(string) Tên tài khoản tự kết nối",
        "shopId": "(string) ID shop tự kết nối"
      },
      "service": {
        "id": "(int) ID dịch vụ",
        "name": "(string) Tên dịch vụ",
        "code": "(string) Mã dịch vụ",
        "description": "(string) Mô tả dịch vụ"
      },
      "shipFee": "(double) Phí vận chuyển",
      "codFee": "(double) Phí thu tiền hộ",
      "declaredFee": "(double) Phí khai giá",
      "customerShipFee": "(double) Phí ship báo khách"
    }
  ]
}
```
