# MerchantSite APIs

### Host endpoint

**Production**: `ws.ems.com.vn`

**Sandbox**: `staging.ws.ems.com.vn`

**Prefix**: `/api/v1`


# Giới thiệu

### **Token api** <a href="#token-api" id="token-api"></a>

* Token được người dùng tự tạo trong hệ thống quản lý vận đơn.
* Đối tác NÊN tạo token cho từng môi trường với đường link bên dưới:
  * **Production** : `bill.ems.com.vn`
  * **Sandbox** : `staging.bill.ems.com.vn`

### **Version history** <a href="#version-history" id="version-history"></a>

**v1.2.2** 01/06/2020:

1. Bổ sung dịch vụ ECOD-Đồng giá, dịch vụ siêu tốc nội thành.
2. Kết nối tích hợp đối tác lớn.

**v1.2.1** 01/04/2020:

1. Bổ sung API tạo xuất kho.

**v1.2.0** 23/10/2018:

1. Bổ sung danh sách dịch vụ.
2. Bổ sung danh sách trạng thái.
3. Chỉnh sửa UI tài liệu.

**v1.0.1** 13/10/2018:

1. Bỏ chức năng lấy danh sách đơn hàng.
2. Tối ưu thông tin tạo đơn hàng.


# Authentication

MerchantSite EMS sử dụng token để xác minh danh tính người dùng người dùng.


# Đăng ký Token

Trước khi bắt đầu xác thực và sử dụng MCS APIs , bạn cần đăng ký với hệ thống EMS.

![Đăng nhập vào hệ thống https://bill.ems.com.vn/login.](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ma2uwmvQoTlKhlQ57rk%2F-Ma6jFop4wqZ03DBNaFz%2F-Ma6lQp2fyemOkvYQb7M%2FScreenshot_1.png?alt=media\&token=b1ca595d-48a5-4c4b-803c-d358536abf7f)

![Truy cập và chọn tạo Key](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ma2uwmvQoTlKhlQ57rk%2F-Ma6jFop4wqZ03DBNaFz%2F-Ma6oFTvsW0oA_zSvwoD%2FScreenshot_2.png?alt=media\&token=2f957da0-ee5a-422b-b147-f8b52e9dde92)

![Tạo thành công API KEY](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ma2uwmvQoTlKhlQ57rk%2F-Ma6jFop4wqZ03DBNaFz%2F-Ma6pg2HGk0uROFGtQ94%2FScreenshot_3.png?alt=media\&token=fc68cd7a-9553-4da2-9221-51dcda604ed4)


# Điểm lấy hàng


# Tạo điểm lấy hàng

## Create Inventory

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/inventory/create`

API tạo điểm lấy hàng.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Headers

| Name   | Type   | Description            |
| ------ | ------ | ---------------------- |
| Accept | string | application/javascript |

#### Request Body

| Name           | Type   | Description           |
| -------------- | ------ | --------------------- |
| name           | string | Tên điểm lấy hàng     |
| username       | string | Tên người liên hệ     |
| phone          | string | Số điện thoại liên hệ |
| province\_code | string | Mã tỉnh/thành phố     |
| district\_code | string | Mã quận/huyện         |
| ward\_code     | string | Mã phường/xã          |
| address        | string | Địa chỉ               |

{% tabs %}
{% tab title="200 " %}

```php
Đăng ký thành công:
{'code': 'success', 'message': 'Thành công', 'data': [Mã kho hàng]}

Thất bại:
{'code': 'error', 'message': '.......', 'data': 0}

```

{% endtab %}
{% endtabs %}


# Cập nhật điểm lấy hàng

## Update Inventory

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/inventory/update`

API cập nhật thông tin điểm gửi hàng.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Headers

| Name   | Type   | Description            |
| ------ | ------ | ---------------------- |
| Accept | string | application/javascript |

#### Request Body

| Name     | Type    | Description                         |
| -------- | ------- | ----------------------------------- |
| id       | integer | Mã điểm lấy hàng                    |
| name     | string  | Tên điểm lấy hàng                   |
| username | string  | Tên người liên hệ                   |
| phone    | string  | Số điện thoại liên hệ               |
| address  | string  | Địa chỉ                             |
| active   | boolean | True: Sử dụng, False: Ngừng sử dụng |

{% tabs %}
{% tab title="200 " %}
{% code title="" %}

```php
Cập nhật thành công:
{"code": "success", "message": "Thành công", "data": [Mã kho hàng]}

Cập nhật thất bại:
{"code": "error", "message": "........", "data": [Mã kho hàng]}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Danh sách điểm lấy hàng

## List Inventory

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/inventory/list`

API trả về danh sách điểm lấy hàng.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Query Parameters

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| page  | integer |             |
| limit | integer |             |

{% tabs %}
{% tab title="200 " %}

```php
{
  "code": "success",
  "message": "Thành công",
  "data": [
    {
      "id": [integer],
      "name": [string],
      "username": [string],
      "phone": [string],
      "country_code": [string],
      "province_code": [string],
      "district_code": [string],
      "ward_code": [string],
      "address": [string],
      "active": [integer],
      "created_at": [string],
      "country_name": [string],
      "province_name": [string],
      "district_name": [string],
      "ward_name": [string]
    }
  ]
}
```

{% endtab %}
{% endtabs %}


# Bưu gửi


# Tạo bưu gửi

## Create Order

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/orders/create-v2`

API tạo bưu gửi.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Headers

| Name   | Type   | Description            |
| ------ | ------ | ---------------------- |
| Accept | string | application/javascript |

#### Request Body

| Name            | Type    | Description                                                                                                                                |
| --------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| order\_code     | string  | *`Mã đơn hàng của khách hàng`*                                                                                                             |
| inventory       | string  | *`Mã điểm lấy hàng (nếu có)`*                                                                                                              |
| inventory\_name | string  | *`Tên điểm lấy hàng (Nếu bạn ko có mã điểm gửi hàng thì hãy nhập thông tin này)`*                                                          |
| from\_name      | string  | *`Tên người lấy hàng (Nếu bạn không có mã điểm lấy hàng thì hãy nhập thông tin này)`*                                                      |
| from\_phone     | string  | *`Số điện thoại liên người lấy hàng (Nếu bạn không có mã điểm lấy hàng thì hãy nhập thông tin này)`*                                       |
| from\_province  | string  | *`Mã tỉnh/thành phố lấy hàng (Nếu bạn không có mã điểm lấy hàng thì hãy nhập thông tin này)`*                                              |
| from\_district  | string  | *`Mã quận/huyện lấy hàng (Nếu bạn không có mã điểm lấy hàng thì hãy nhập thông tin này)`*                                                  |
| from\_ward      | string  | *`Mã phường/xã lấy hàng (Nếu bạn không có mã điểm lấy hàng thì hãy nhập thông tin này)`*                                                   |
| from\_address   | string  | *`Địa chỉ lấy hàng (Nếu bạn không có mã điểm lấy hàng thì hãy nhập thông tin này)`*                                                        |
| to\_name        | string  | *`Tên người nhận hàng`*                                                                                                                    |
| to\_phone       | string  | *`Số điện thoại người nhận`*                                                                                                               |
| to\_province    | string  | *`Mã tỉnh/thành phố nhận`*                                                                                                                 |
| to\_district    | string  | *`Mã quận/huyện nhận`*                                                                                                                     |
| to\_ward        | string  | *`Mã phường/xã nhận`*                                                                                                                      |
| to\_address     | string  | *`Địa chỉ người nhận`*                                                                                                                     |
| to\_postal      | string  | *`Mã bưu chính nơi nhận (Nếu có)`*                                                                                                         |
| to\_longitude   | string  |                                                                                                                                            |
| to\_latitude    | string  |                                                                                                                                            |
| product\_name   | string  | *`Tên sản phẩm`*                                                                                                                           |
| total\_amount   | number  | *`Giá trị sản phẩm (vnđ)`*                                                                                                                 |
| total\_quantity | number  | *`Số lượng`*                                                                                                                               |
| total\_weight   | number  | *`Khối lượng (gram)`*                                                                                                                      |
| money\_collect  | number  | *`Tiền thu hộ (vnđ)`*                                                                                                                      |
| description     | string  | *`Mô tả sản phẩm`*                                                                                                                         |
| size            | string  | <p>\[<em><code>length</code></em>x<em><code>width</code></em>x<em><code>height</code></em>] <br><em><code>'20x30x40'  (cm)</code></em></p> |
| service         | number  | *`Mã dịch vụ (Danh mục -> Danh sách dịch vụ)`*                                                                                             |
| checked         | boolean | *`Cho người nhận xem hàng (True: Có, False: Không)`*                                                                                       |
| fragile         | string  | *`Hàng dễ vỡ (True: Có, False: Không)`*                                                                                                    |
| vas             | array   | <p><em><code>Dịch vụ cộng thêm (Danh mục -> Danh sách dịch vụ cộng thêm)</code></em><br><em><code>\['cod', 'ptt']</code></em><br></p>      |
| payment\_config | boolean | *`Người nhận trả cước vận chuyển (True: Có, False: Không)`*                                                                                |

{% tabs %}
{% tab title="200 " %}

```php
Thành công:
{
    'code': 'success',
    'message': 'Thành công',
    'data': [
        'tracking_code': [string],
        'courier_code': '',
        'status_code': [string],
        'fee': [
            'fee': [number], // cước chính
            'remote_fee': [number] // cước vùng xa
        ],
        'vas': [
            'total_vas': [number], // tổng cước dịch vụ cộng thêm
            'vas_detail': [
                [
                'code': [string], // mã dịch vụ cộng thêm
                'fee': [number] // cước dịch vụ cộng thêm
                ]
            ] // chi tiết cước dịch vụ cộng thêm
        ],
        'money_collect': [number]
    ]
}

Thất bại:
{
    'code': 'error',
    'message': '.....',
}
```

{% endtab %}
{% endtabs %}


# Tạo phiếu xuất kho

## Create Order

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/orders/logistic-order`

API tạo phiếu xuất kho chỉ sử dụng cho những khách hàng sử dụng phần mềm Merchant site và lưu trữ hàng tại kho hàng của EMS.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Headers

| Name   | Type   | Description            |
| ------ | ------ | ---------------------- |
| Accept | string | application/javascript |

#### Request Body

| Name             | Type    | Description                               |
| ---------------- | ------- | ----------------------------------------- |
| products\_detail | array   | *`Danh sách sản phẩm`*                    |
| ProductCode      | string  | *`Mã sản phẩm`*                           |
| Grade            | string  | *`Ngăn/Giá để sản phẩm`*                  |
| DescriptionLine  | string  | *`Mô tả sản phẩm`*                        |
| TotalPrice       | integer | *`Giá trị sản phẩm (vnđ)`*                |
| Quantity         | integer | *`Số lượng sản phẩm`*                     |
| inventory        | integer | *`Mã điểm lấy hàng`*                      |
| to\_name         | string  | *`Tên người nhận`*                        |
| to\_phone        | string  | *`Số điện thoại người nhận`*              |
| to\_province     | string  | *`Mã tỉnh/thành phố nhận`*                |
| to\_district     | string  | *`Mã quận/huyện nhận`*                    |
| to\_ward         | string  | *`Mã phường/xã nhận`*                     |
| to\_address      | string  | *`Địa chỉ người nhận`*                    |
| order\_code      | string  | *`Mã đơn hàng`*                           |
| product\_name    | string  | *`Tên sản phẩm`*                          |
| total\_amount    | integer | *`Tổng số chi phí (vnđ)`*                 |
| total\_quantity  | integer | *`Tổng số lượng`*                         |
| total\_weight    | integer | *`Tổng khối lượng (gram)`*                |
| money\_collect   | integer | *`Tiền thu hộ (vnđ)`*                     |
| description      | string  | *`Mô tả thêm`*                            |
| service          | integer | *`Mã dịch vụ`*                            |
| checked          | boolean | *`Cho xem hàng (True: Có, False: Không)`* |
| fragile          | boolean | *`Hàng dễ vỡ (True: Có, False: Không)`*   |

{% tabs %}
{% tab title="200 C1ake successfully retrieved." %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": {
        "fee": {
            "fee": 10120,
            "remote_fee": 0
        },
        "vas": {
            "total_vas": 13000,
            "vas_detail": [
                {
                    "code": "cod",
                    "fee": 13000
                }
            ]
        },
        "money_collect": 250000,
        "estimate": 72,
        "tracking_code": "ExxxxxxxxxxVN",
        "status_code": "X"
    }
}
```

{% endtab %}
{% endtabs %}

{% code title="Sample request json body" %}

```php
{
  "order_code": "EMSN_13",
  "to_name": "Tôn",
  "to_phone": "0978013623",
  "to_province": "10",
  "to_district": "1430",
  "to_address": "23/5 Phạm Hùng, Nam Từ Liêm, Hà Nội",
  "product_name": "TSU",
  "products_detail": [
    {
      "ProductCode": "TEST02",
      "Grade": "A",
      "DescriptionLine": "TL123",
      "TotalPrice": 1580000,
      "Quantity": 3
    }
  ],
  "description":  "sản phẩm demo",
  "total_weight": 1000,
  "money_collect": 1580000,
  "service": 1,
  "checked": 1,
  "fragile": false,
  "inventory": 349,
  "total_amount": 0,
  "total_quantity": 0
}
```

{% endcode %}


# Tính phí

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/get-order-fee`

{% hint style="info" %}
API tính cước phí.
{% endhint %}

#### Header:

| Key          | Value            |
| ------------ | ---------------- |
| Content-Type | application/json |

####

#### Parameters:

<table><thead><tr><th> Tên trường</th><th> Kiểu dữ liệu</th><th> Chú thích</th><th data-type="checkbox">Bắt buộc</th></tr></thead><tbody><tr><td>from_province</td><td>String</td><td>Mã tỉnh gửi</td><td>true</td></tr><tr><td>from_district</td><td>String</td><td>Mã quận/huyện gửi</td><td>true</td></tr><tr><td>to_province</td><td>String</td><td>Mã tỉnh nhận</td><td>true</td></tr><tr><td>to_district</td><td>String</td><td>Mã quận/huyện nhận</td><td>true</td></tr><tr><td>service</td><td>Number</td><td>Mã dịch vụ</td><td>true</td></tr><tr><td>total_weight</td><td>Number</td><td>Khối lượng (gram)</td><td>true</td></tr><tr><td>money_collect</td><td>Number</td><td>Tổng tiền thu ở người nhận (vnđ)</td><td>true</td></tr><tr><td>total_quantity</td><td>Number</td><td>Số lượng sản phẩm</td><td>true</td></tr></tbody></table>

####

#### Responses:

```
Thành công:
{
    "code": "success",
    "message": "Thành công",
    "data": {
        "fee": {
            "fee": 16088, // Cước chính
            "remote_fee": 0 // Cước vùng xa
        },
        "vas": {
            "total_vas": 13000, // Tổng cước dịch vụ cộng thêm
            "vas_detail": [
                {
                    "code": "cod", // Dịch vụ cộng thêm
                    "fee": 13000 // Cước
                }
            ]
        },
        "money_collect": "100000" // Tổng tiền thu ở người nhận
    }
}
--------
Tổng cước = fee.fee + fee.remote_fee + vas.total_vas
          = 16088 + 0 + 13000
          = 29088
--------


Thất bại:
{
    "code": "error",
    "message": "xxxxxxxxxx"
}

```


# Chi tiết bưu gửi

## Retrieve Order

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/orders/tracking/:tracking_code`

API trả về chi tiết thông tin bưu gửi.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

{% tabs %}
{% tab title="200 " %}

```php
{
    "code": "success",
    "data": {
        "service_id": 1, // Mã dịch vụ
        "tracking_code": [string], // Mã EMS
        "courier_code": null,
        "from_country": "VN", // Mã quốc gia gửi
        "from_province": "10", // Mã Tỉnh/Thành phố gửi
        "to_country": "VN", // Mã quốc gia nhận
        "to_province": "80", // Mã Tỉnh/Thành phố nhận
        "total_weight": 100, // Khối lượng (gram)
        "status": 2, // Mã trạng thái
        "created_at": "2021-05-19 18:27:23", // Thời gian tạo
        "__get_fee": { // Chi tiết cước
            "fee": 18018, // Cước chính (vnđ)
            "remote_fee": 3080, // Cước vùng xa (vnđ)
            "return_fee": 0, // Cước chuyển hoàn (vnđ)
            "vk_fee": 0, // bỏ qua
            "total_vas": 15000, // Tổng cước dịch vụ cộng thêm (vnđ)
            "money_collect": 359000 // Tiền thu hộ (vnđ)
        },
        "__get_status": [ // Danh sách hành trình bưu gửi
            {
                "status": 2, // Mã trạng thái
                "address": "EMS", // Địa chỉ
                "description": "Đã duyệt đơn hàng, chờ lấy hàng", // Mô tả
                "tracedate": "2021-05-19 18:27:23" // Thời gian cập nhật trạng thái
            },
            {
                "status": 1,
                "address": "EMS",
                "description": "Đã tạo đơn hàng, chờ duyệt lấy hàng",
                "tracedate": "2021-05-19 18:27:23"
            }
        ],
        "__get_vas": [ // Danh sách dịch vụ cộng thêm
            {
                "vas_code": "cod", // Mã dịch vụ cộng thêm
                "fee": 15000 // Cước (vnđ)
            } 
        ]
    }
}
```

{% endtab %}
{% endtabs %}


# In bưu gửi

<mark style="color:blue;">`GET`</mark> `https://bill.ems.com.vn/prints/{tracking_code}`

{% hint style="info" %}
Api in bưu gửi tùy chọn theo các mẫu A5, A6, B1, E4.
{% endhint %}

#### Parameters:

<table><thead><tr><th width="205.28571428571428">Tên trường</th><th width="150">Kiểu dữ liệu</th><th>Chú thích</th><th data-type="checkbox">Bắt buộc</th></tr></thead><tbody><tr><td>merchant_token</td><td>String</td><td>Token</td><td>true</td></tr><tr><td>tracking_code</td><td>String</td><td>Mã EMS, có thể nhiều mã cùng lúc. VD: EAxxxxVN, EBxxxxVN.</td><td>true</td></tr><tr><td>paper-size</td><td>String</td><td>EMS cung cấp 4 mẫu in cho khách: Mặc định mẫu A5 paper-size=E4 paper-size=A6 paper-size=B1</td><td>false</td></tr></tbody></table>

```
Ví dụ: 
https://bill.ems.com.vn/prints/EMxxxxxxxVN,EMxxxxxxVN?merchant_token=xxxxxxxxxxx&paper-size=E4.
```

#### Responses:

{% tabs %}
{% tab title="Kiểu thường - Size A5" %}

#### Mẫu mặc định.

![](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Ma2uwmvQoTlKhlQ57rk%2Fuploads%2F59KXjLmf2mVQPFAxZ8XC%2Fimage.png?alt=media\&token=c86dfaf9-8089-47fb-b9f7-ce1f403c7490)
{% endtab %}

{% tab title="Kiểu nhãn - size 8x12.5" %}
paper-size=E4

![](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Ma2uwmvQoTlKhlQ57rk%2Fuploads%2FF5P7qwRXO2Wxhl4dPHOI%2Fimage.png?alt=media\&token=77661fc3-e01a-40e2-b70d-046a3a82de2b)
{% endtab %}

{% tab title="Kiểu B1 - size 10x6.5" %}
paper-size=B1

![](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Ma2uwmvQoTlKhlQ57rk%2Fuploads%2F1Gub9LAhbWkQGjMgXJAL%2Fimage.png?alt=media\&token=cb103e1d-f361-480e-b6d0-6457be129e95)
{% endtab %}

{% tab title="Kiểu A6" %}
paper-size=A6

![](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Ma2uwmvQoTlKhlQ57rk%2Fuploads%2FPa5n97t3L0jWNPF33bnz%2Fimage.png?alt=media\&token=6706b667-2eeb-4235-9456-4a6e1452bc40)
{% endtab %}
{% endtabs %}


# Hủy bưu gửi

## Destroy Order

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/orders/manual-cancel-order`

This endpoint allows you to get free cakes.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Request Body

| Name           | Type   | Description |
| -------------- | ------ | ----------- |
| tracking\_code | string | Mã đơn hàng |

{% tabs %}
{% tab title="200 " %}

```
Thành công: 
{
    "code": "success",
    "message": "Hủy đơn hàng thành công",
    "data": "ExxxxxxxxxxVN"
}

Thất bại:
{
    "code": "error",
    "message": ".....",
}
```

{% endtab %}
{% endtabs %}


# Webhook

Trả về trạng thái bưu gửi thông qua api ngay khi có trạng thái mới nhất.

**Để cấu hình webhook, người dùng đăng nhập vào hệ thống, tại menu bên trái.**

![Cấu hình > Webhook > Click Tạo webhook](https://1578743389-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Ma2uwmvQoTlKhlQ57rk%2F-Ma7s51k6-rInDjnnHoa%2F-Ma7tamDwbGy15GBgS19%2FScreenshot_4.png?alt=media\&token=14011d59-1e72-48a5-b350-60c6afb1ecc9)

#### Header / Body json

{% tabs %}
{% tab title="Header" %}
{% code title="Header" %}

```php
Content-Type : application/json
ems-transaction : "1234567890"
```

{% endcode %}

{% hint style="info" %}
**ems-transaction** *là 1 chuỗi ký tự ngẫu nhiên duy nhất ứng với mỗi trạng thái bưu gửi*
{% endhint %}
{% endtab %}

{% tab title="Body json" %}
{% code title="Body json" %}

```
{
    "tracking_code": "EJ012345678VN",
    "order_code": "ODR356",
    "status_code": 4,
    "status_name": "Đang vận chuyển",
    "note": "Đã đóng chuyến thư đi",
    "locate": "890100 - KTC1 Vĩnh Long (ÐT:02703834180)",
    "datetime": "28/08/2019 07:54:50",
    "total_weight": 240,
    "money_collect": 210000,
    "total_fee": 34000
}

*Note: 
    datetime: thời gian cập nhật trạng thái.
    Chú ý sắp xếp trạng thái nhận về theo trường "datetime".
    Trạng thái có datetime mới nhất sẽ là trạng thái cuối cùng.
```

{% endcode %}
{% endtab %}

{% tab title="Description" %}

| Parameter      | Description                       |
| -------------- | --------------------------------- |
| tracking\_code | *`Mã bưu gửi`*                    |
| order\_code    | *`Mã đơn hàng (Nếu có)`*          |
| status\_code   | *`Mã trạng thái`*                 |
| status\_name   | *`Tên trạng thái`*                |
| note           | *`Ghi chú`*                       |
| locate         | *`Vị trí bưu gửi`*                |
| datetime       | *`Thời gian cập nhật trạng thái`* |
| total\_weight  | *`Khối lượng bưu gửi`*            |
| money\_collect | *`Số tiền thu hộ`*                |
| total\_fee     | *`Tổng cước (Tạm tính)`*          |
| {% endtab %}   |                                   |
| {% endtabs %}  |                                   |

#### Response demo

{% tabs %}
{% tab title="Success response" %}

```php
{
 "code" : "success",
 "transaction" : "1234567890"
}
```

{% endtab %}

{% tab title="Error response" %}

```php
{
 "code" : "error",
 "transaction" : "1234567890"
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**Api callback** phải có định dạng response giống với response demo và có method là **POST**
{% endhint %}

{% hint style="warning" %}
Developer xắp sếp dữ liệu webhook nhận về theo param "datetime" trong body json nhận được trước khi hiển thị dữ liệu để tránh hiển thị sai trạng thái.
{% endhint %}

{% hint style="info" %}
**transaction** lấy tại ems-transaction trên **header**
{% endhint %}


# Tạo webhook

## Create Webhook

<mark style="color:green;">`POST`</mark> `http://ws.ems.com.vn/api/v1/metadata/webhook`

API tạo kết nối webhook.

#### Path Parameters

| Name                                              | Type   | Description |
| ------------------------------------------------- | ------ | ----------- |
| merchant\_token<mark style="color:red;">\*</mark> | string | *`Token`*   |

#### Headers

| Name                                     | Type   | Description            |
| ---------------------------------------- | ------ | ---------------------- |
| Accept<mark style="color:red;">\*</mark> | string | application/javascript |

#### Request Body

| Name                                   | Type   | Description   |
| -------------------------------------- | ------ | ------------- |
| link<mark style="color:red;">\*</mark> | string | Link callback |

{% tabs %}
{% tab title="200 " %}

```
Thành công:
{'code': 'success', 'message': 'Tạo webhook thành công'}

Thất bại:
{'code': 'error', 'message': '......'
```

{% endtab %}
{% endtabs %}


# Cập nhật Webhook

<mark style="color:orange;">`PUT`</mark> `http://ws.ems.com.vn /api/v1/metadata/webhook`

{% hint style="info" %}
API cập nhật webhook.
{% endhint %}

#### Header:

| Key    | Value            |
| ------ | ---------------- |
| Accept | application/json |

#### Parameters:

<table><thead><tr><th>Tên Trường</th><th>Kiểu dữ liệu</th><th>Chú thích</th><th data-type="checkbox">Bắt buộc</th></tr></thead><tbody><tr><td>merchant_token</td><td>String</td><td>Token</td><td>true</td></tr><tr><td>status</td><td>0,1</td><td><p>Không bắt buộc</p><p>0: Ngừng sử dụng</p><p>1: Sử dụng</p></td><td>false</td></tr><tr><td>link</td><td>String</td><td><p>Không bắt buộc</p><p>Đường đẫn webhook mới</p></td><td>false</td></tr></tbody></table>

#### Responses:

```
Thành công:
{
    "code":"success",
    "message":"Cập nhật webhook thành công",
    "data":
        {
            "link":"https:\/\/pos.pages.fm\/api\/v1\/ems\/update?api_token=$2b$12$D.D1m4eo1dSGq3RHzBAjjuQcRcEDzEbA0AQ.IwfBkN4AA.JtxcWS6",
            "email_alert":null,
            "function":"journey",
            "status":"active",
            "action":"RUN",
            "created_at":"2021-10-22 14:30:10"
        }
}

Thất bại:
{
    "code":"error",
    "message":"Lỗi ....",
    "data": []
}
```

####


# Thông tin webhook

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn /api/v1/metadata/webhook`

{% hint style="info" %}
Api get thông tin webhook đã cài đặt.
{% endhint %}

#### Parameters:

| Tên trường      | Kiểu dữ liệu | Chú thích |
| --------------- | ------------ | --------- |
| merchant\_token | String       | Token     |

```
Ví dụ:
http://ws.ems.com.vn/api/v1/metadata/webhook?merchant_token=xxxxxxxxxxxxxxxx
```

#### Responses:

```
{
    "code":"success",
    "message":"Thành công",
    "data":
        {
            "link":"https:\/\/pos.pages.fm\/api\/v1\/ems\/update?api_token=$2b$12$D.D1m4eo1dSGq3RHzBAjjuQcRcEDzEbA0AQ.IwfBkN4AA.JtxcWS6",
            "email_alert":null,
            "function":"journey",
            "status":"active",
            "action":"RUN",
            "created_at":"2021-10-22 14:30:10"
        }
}
```


# Danh mục


# Danh sách quốc gia

## /address/country

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/address/country`

API trả về danh sách quốc gia.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

{% tabs %}
{% tab title="200 " %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "code": [string],
            "name": [string]
        },
    ]
}
```

{% endtab %}
{% endtabs %}


# Danh sách tỉnh/thành phố

## /address/province

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/address/province`

API trả về danh sách tỉnh/thành phố.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

{% tabs %}
{% tab title="200 " %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "description": [string],
            "code": [string],
            "name": [string],
            "slug_name": [string]
        },
    ]
}
```

{% endtab %}
{% endtabs %}


# Danh sách quận/huyện

## /address/district

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/address/district`

API trả về danh sách quận huyện.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Query Parameters

| Name           | Type   | Description                   |
| -------------- | ------ | ----------------------------- |
| province\_code | string | `Mã tỉnh/thành phố (nếu có).` |

{% tabs %}
{% tab title="200 " %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "description": [string],
            "code": [string],
            "name": [string],
            "province_code": [string],
            "slug_name": [string]
        },
    }
}
```

{% endtab %}
{% endtabs %}


# Danh sách phường/xã

## /address/ward

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/address/ward`

API trả về danh sách phường/xã.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

#### Query Parameters

| Name           | Type   | Description                     |
| -------------- | ------ | ------------------------------- |
| province\_code | string | *`Mã tỉnh/thành phố (nếu có).`* |
| district\_code | string | *`Mã quận/huyện (nếu có).`*     |

{% tabs %}
{% tab title="200 " %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "code": [string],
            "name": [string],
            "district_code": [string],
            "province_code": [string],
            "slug_name": [string]
        },
    ]
}
```

{% endtab %}
{% endtabs %}


# Danh sách trạng thái

## /metadata/status

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/metadata/status`

API trả về danh sách trạng thái.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

{% tabs %}
{% tab title="200 Cake successfully retrieved." %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "code": [interger],
            "name": [string]
        },
    ]
}
```

{% endtab %}
{% endtabs %}


# Danh sách dịch vụ

## /metadata/service

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/metadata/service`

API trả về danh sách dịch vụ.

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Toke`*    |

{% tabs %}
{% tab title="200 " %}

```
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "code": [integer],
            "name": [string]
        },
    ]
}
```

{% endtab %}
{% endtabs %}


# Danh sách dịch vụ cộng thêm

## /metadata/vas

<mark style="color:blue;">`GET`</mark> `http://ws.ems.com.vn/api/v1/metadata/vas`

API trả về danh sách dịch vụ cộng thêm

#### Path Parameters

| Name            | Type   | Description |
| --------------- | ------ | ----------- |
| merchant\_token | string | *`Token`*   |

{% tabs %}
{% tab title="200 " %}

```php
{
    "code": "success",
    "message": "Thành công",
    "data": [
        {
            "code": [string],
            "name": [string]
        },
    ]
}
```

{% endtab %}
{% endtabs %}


