# Tài liệu kỹ thuật: Thông tin kết nối API
Để đảm bảo an toàn khi kết nối tới các API, cần sử dụng các thông tin bảo mật trong phần Header của mỗi yêu cầu. Các thông tin này bao gồm `AppName` và `AppSecret` và sẽ được cung cấp bởi đơn vị quản trị API.
## Thông tin bảo mật
Các thông tin bảo mật cần thiết trong phần Header cho tất cả các API bao gồm:
| Key | Giá trị | Mô tả |
|-----------|---------------------|---------------------------------------------|
| `AppName` | Được cung cấp bởi đơn vị quản trị API | Tên ứng dụng sử dụng API. |
| `AppSecret` | Được cung cấp bởi đơn vị quản trị API | Khóa bảo mật của ứng dụng sử dụng API. |
## Ví dụ về Header
Dưới đây là ví dụ về cách cấu hình Header bảo mật trong Postman:
| Key | Value | Description |
|------------|------------------------------------|-------------|
| `AppName` | **agencyHND** (mô tả: Tên ứng dụng của bạn) | Tên ứng dụng sử dụng API. |
| `AppSecret`| **5ULY!CJI3snb!sOFQEeBr!UsZBxnPLeGV4G!FhvX8VRavMuMff1TwNG!Ai%9Ul8r** (mô tả: Khóa bảo mật của ứng dụng) | Khóa bảo mật của ứng dụng sử dụng API. |
Lưu ý: Các giá trị thực tế của `AppName` và `AppSecret` sẽ được cung cấp bởi đơn vị quản trị API. Hãy liên hệ để nhận thông tin chi tiết.
## Áp dụng trong các API
### 1. API Tạo Đơn Hàng Nhiều Sản Phẩm
- **URL**: `https://way2gotravel.com/en/OpenAPI/CreateMultipleItemOrder`
- **Phương thức**: `POST`
- **Header**:
```plaintext
AppName: <Được cung cấp bởi đơn vị quản trị API>
AppSecret: <Được cung cấp bởi đơn vị quản trị API>
```
### 2. API Lấy Tất Cả Sản Phẩm
- **URL**: `https://way2gotravel.com/en/OpenAPI/QueryGetAllProducts`
- **Phương thức**: `POST`
- **Header**:
```plaintext
AppName: <Được cung cấp bởi đơn vị quản trị API>
AppSecret: <Được cung cấp bởi đơn vị quản trị API>
```
### 3. API Truy Vấn Đơn Hàng Đang Xử Lý
- **URL**: `https://way2gotravel.com/en/OpenAPI/QuerySimInProgress`
- **Phương thức**: `POST`
- **Header**:
```plaintext
AppName: <Được cung cấp bởi đơn vị quản trị API>
AppSecret: <Được cung cấp bởi đơn vị quản trị API>
```
## Ví dụ sử dụng trong Postman
Dưới đây là ví dụ về cách cấu hình Header bảo mật trong Postman cho API `QuerySimInProgress`:
1. Đặt phương thức là `POST`.
2. Đặt URL là `https://way2gotravel.com/en/OpenAPI/QuerySimInProgress`.
3. Trong tab Headers, thêm các thông tin bảo mật:
```plaintext
AppName: <Được cung cấp bởi đơn vị quản trị API>
AppSecret: <Được cung cấp bởi đơn vị quản trị API>
```
4. Trong tab Body, chọn `raw` và định dạng `JSON`, sau đó cung cấp body JSON như ví dụ yêu cầu API.
Nếu yêu cầu thành công, phản hồi sẽ bao gồm thông tin chi tiết về đơn hàng và trạng thái kích hoạt của các SIM.
## Ghi chú
- Bảo mật thông tin `AppName` và `AppSecret` là rất quan trọng. Không chia sẻ các thông tin này với người không có thẩm quyền.
- Nếu gặp vấn đề liên quan đến bảo mật hoặc cần thay đổi thông tin bảo mật, hãy liên hệ ngay với đơn vị quản trị API để được hỗ trợ.
Đây là tài liệu bảo mật cho các API. Nếu bạn có bất kỳ câu hỏi hoặc cần hỗ trợ thêm, vui lòng liên hệ bộ phận hỗ trợ.
---
# Tài liệu kỹ thuật: Kết nối API Tạo Đơn Hàng Nhiều Sản Phẩm
Tài liệu này cung cấp chi tiết về cách kết nối tới endpoint API `CreateMultipleItemOrder`.
## Endpoint
- **URL**: `https://way2gotravel.com/en/OpenAPI/CreateMultipleItemOrder`
- **Phương thức**: `POST`
- **Content Type**: `application/json`
## Tham số yêu cầu
Các tham số yêu cầu cần được gửi trong body dưới dạng JSON. Bảng sau liệt kê các tham số:
| Tham số | Loại | Bắt buộc | Mô tả |
|-------------------|---------|----------|-------------------------------------------------------------|
| `email` | String | Có | Địa chỉ email nhận thông tin đơn hàng. |
| `productsInfo` | Array | Có | Danh sách các sản phẩm đặt hàng. Xem chi tiết bảng dưới. |
| `paymentMethod` | String | Có | Phương thức thanh toán. Mặc định là 'API'. |
| `pickupPoint` | String | Không | Địa điểm nhận SIM vật lý, lấy từ `name` của API `/OpenAPI/GetPickupPoint`. |
| `shippingAddress` | String | Không | Địa chỉ giao hàng bao gồm số nhà, đường. |
| `shippingDistrict`| String | Không | Quận/huyện của địa chỉ giao hàng. |
| `shippingCity` | String | Không | Thành phố của địa chỉ giao hàng. |
| `shippingPhoneNumber` | String | Không | Số điện thoại của khách hàng. |
### Chi tiết productsInfo
| Tham số | Loại | Bắt buộc | Mô tả |
|---------------|---------|----------|-------------------------------------------------|
| `productCode` | String | Có | Mã sản phẩm. |
| `quantity` | Integer | Có | Số lượng sản phẩm. |
| `serialNumber`| String | Không | Mã SN trên SIM trắng để gán gói cho phôi SIM vật lý (Chỉ áp dụng với sản phẩm Gói cước)|
### Ví dụ về Body yêu cầu
```json
{
"email": "qlcv.way2go@gmail.com",
"productsInfo": [
{
"productCode": "W2G_NO_420", //CODE SẢN PHẨM
"quantity": 1, // SỐ LƯỢNG SẢN PHẨM
"serialNumber": "89859900680010017490"
}
],
"paymentMethod": "API",
"pickupPoint": "",
"shippingAddress": "83b Lý Thường Kiệt",
"shippingDistrict": "Hoàn Kiếm",
"shippingCity": "Hà Nội",
"shippingPhoneNumber": "0966951180"
}
```
## Phản hồi
Phản hồi được trả về dưới dạng JSON và bao gồm các trường sau:
| Trường | Loại | Mô tả |
|--------------|--------|--------------------------------|
| `orderCode` | String | Mã duy nhất của đơn hàng. |
### Ví dụ về phản hồi
```json
{
"orderCode": "140_638550781544792414"
}
```
## Ví dụ sử dụng Postman
Để tạo đơn hàng mới bằng Postman:
1. Đặt phương thức là `POST`.
2. Đặt URL là `https://way2gotravel.com/en/OpenAPI/CreateMultipleItemOrder`.
3. Trong tab Headers, đặt `Content-Type` là `application/json`.
4. Trong tab Body, chọn `raw` và định dạng `JSON`, sau đó cung cấp body JSON như ví dụ ở trên.
5. Nhấn `Send`.
Nếu yêu cầu thành công, phản hồi sẽ bao gồm `orderCode`.
## Ghi chú
- **Pickup Point**: Nếu có Pickup Point, lấy ra từ trường `name` của API `/OpenAPI/GetPickupPoint`. Nếu có Pickup point thì không cần nhập thông tin địa chỉ.
- **Địa chỉ và số điện thoại**: Nếu không có Pickup Point, cần nhập đủ thông tin địa chỉ và số điện thoại.
- **SIM vật lý**: Nếu trong đơn hàng có `PHISCAL_SIM`, bắt buộc phải có Pickup Point hoặc địa chỉ để phục vụ giao hàng.
Đây là tài liệu về endpoint API `CreateMultipleItemOrder`. Nếu bạn có bất kỳ câu hỏi hoặc cần hỗ trợ thêm, vui lòng liên hệ bộ phận hỗ trợ.
---
# Tài liệu kỹ thuật: Kết nối API Lấy Tất Cả Sản Phẩm
Tài liệu này cung cấp chi tiết về cách kết nối tới endpoint API `QueryGetAllProducts`.
## Endpoint
- **URL**: `https://way2gotravel.com/en/OpenAPI/QueryGetAllProducts`
- **Phương thức**: `POST`
- **Content Type**: `application/json`
## Tham số yêu cầu
Các tham số yêu cầu cần được gửi trong body dưới dạng JSON. Bảng sau liệt kê các tham số:
| Tham số | Loại | Bắt buộc | Mô tả |
|-----------------|---------|----------|------------------------------------------------------|
| `languageCode` | String | Có | Mã ngôn ngữ. Hỗ trợ các giá trị: 'vi-VN', 'en-US', 'ko-KR', 'zh-CN' |
### Ví dụ về Body yêu cầu
```json
{
"languageCode": "vi-VN"
}
```
## Phản hồi
Phản hồi được trả về dưới dạng JSON và bao gồm một mảng các sản phẩm. Mỗi sản phẩm có các trường sau:
| Trường | Loại | Mô tả |
|----------------------|---------|-------------------------------------------------------|
| `productCode` | String | Mã sản phẩm. |
| `simType` | String | Loại SIM: 'Physical_Sim' hoặc 'ESIM'. |
| `simPack` | String | Loại gói SIM: 'Package'(Không thể topup) hoặc 'Gói cước' (Có thể topup). |
| `dataLimit` | String | Giới hạn dữ liệu. |
| `validity` | Integer | Thời hạn sử dụng (ngày). |
| `smsNumber` | String | Số lượng SMS. |
| `phoneMinute` | String | Số phút gọi. |
| `phoneMinuteInNetwork`| String | Số phút gọi nội mạng. |
| `phoneMinuteOutNetwork`| String | Số phút gọi ngoại mạng. |
| `phoneMinuteInRegion`| String | Số phút gọi trong vùng. |
| `phoneMinuteOutRegion`| String | Số phút gọi ngoài vùng. |
| `name` | String | Tên gói cước. |
| `priceEach` | Number | Giá mỗi sản phẩm. |
| `specificationJson` | String | Chi tiết thông số sản phẩm dưới dạng JSON. |
| `coverage` | String | Danh sách quốc gia hỗ trợ SIM. |
### Ví dụ về phản hồi
```json
[
{
"productCode": "W2G_NO_28",
"simType": "Physical_Sim",
"sim'Pack'": "Package",
"dataLimit": "5GB / NGÀY",
"validity": 15,
"smsNumber": "50",
"phoneMinute": "1000",
"phoneMinuteInNetwork": "1000",
"phoneMinuteOutNetwork": "1000",
"phoneMinuteInRegion": "0.00",
"phoneMinuteOutRegion": "0.00",
"name": "ALL IN ONE",
"priceEach": 50000.0,
"specificationJson": "[{\"Value\":\"Thời hạn hiệu lực bắt đầu khi SIM được đăng ký và kích hoạt bằng cách quay số 900\",\"Name\":\"CHÍNH SÁCH KÍCH HOẠT\"},{\"Value\":\"YÊU CẦU\",\"Name\":\"e-KYC (XÁC MINH DANH TÍNH)\"},{\"Value\":\"CUỘC GỌI DỮ LIỆU\",\"Name\":\"LOẠI GÓI\"},{\"Value\":\"KHÔNG CÓ SẴN\",\"Name\":\"TÙY CHỌN NẠP TIỀN\"},{\"Value\":\"MOBIFONE\",\"Name\":\"NHÀ MẠNG\"}]",
"coverage": "Việt Nam"
},
{
"productCode": "W2G_NO_134",
"simType": "Physical_Sim",
"dataLimit": "1.5GB / NGÀY",
"sim'Pack'": "Gói cước",
"validity": 5,
"smsNumber": null,
"phoneMinute": null,
"phoneMinuteInNetwork": null,
"phoneMinuteOutNetwork": null,
"phoneMinuteInRegion": null,
"phoneMinuteOutRegion": null,
"name": "BASIC PLAN",
"priceEach": 20000.0,
"specificationJson": "[]",
"coverage": "Thái Lan"
}
]
```
## Ví dụ sử dụng Postman
Để lấy tất cả sản phẩm bằng Postman:
1. Đặt phương thức là `POST`.
2. Đặt URL là `https://way2gotravel.com/en/OpenAPI/QueryGetAllProducts`.
3. Trong tab Headers, đặt `Content-Type` là `application/json`.
4. Trong tab Body, chọn `raw` và định dạng `JSON`, sau đó cung cấp body JSON như ví dụ ở trên.
5. Nhấn `Send`.
Nếu yêu cầu thành công, phản hồi sẽ bao gồm thông tin chi tiết về các sản phẩm.
## Ghi chú
- Đảm bảo mã ngôn ngữ `languageCode` là hợp lệ. Hỗ trợ các giá trị: 'vi-VN', 'en-US', 'ko-KR', 'zh-CN'.
- Các thông tin chi tiết về sản phẩm sẽ giúp hiểu rõ hơn về từng gói cước và các tính năng đi kèm.
Đây là tài liệu về endpoint API `QueryGetAllProducts`. Nếu bạn có bất kỳ câu hỏi hoặc cần hỗ trợ thêm, vui lòng liên hệ bộ phận hỗ trợ.
---
# Tài liệu kỹ thuật: Kết nối API Truy Vấn Đơn Hàng Đang Xử Lý
Tài liệu này cung cấp chi tiết về cách kết nối tới endpoint API `QuerySimInProgress`.
## Endpoint
- **URL**: `https://way2gotravel.com/en/OpenAPI/QuerySimInProgress`
- **Phương thức**: `POST`
- **Content Type**: `application/json`
## Tham số yêu cầu
Các tham số yêu cầu cần được gửi trong body dưới dạng JSON. Bảng sau liệt kê các tham số:
| Tham số | Loại | Bắt buộc | Mô tả |
|---------------|---------|----------|----------------------------|
| `orderCode` | String | Có | Mã đơn hàng cần truy vấn. |
### Ví dụ về Body yêu cầu
```json
{
"orderCode": "140_638549910086549085"
}
```
## Phản hồi
Phản hồi được trả về dưới dạng JSON và bao gồm một mảng các chi tiết đơn hàng (orderDetails). Mỗi chi tiết đơn hàng có các trường sau:
| Trường | Loại | Mô tả |
|---------------|---------|---------------------------------------------------|
| `orderCode` | String | Mã đơn hàng. |
| `productCode` | String | Mã sản phẩm. |
| `appName` | String | Tên ứng dụng. |
| `createdDate` | String | Ngày tạo đơn hàng. |
| `iccid` | String | Mã ICCID của SIM. |
| `type` | String | Loại SIM: 'SIM' cho SIM vật lý, 'ESIM' cho e-SIM. |
| `qrCode` | String | URL mã QR để kích hoạt e-SIM. |
| `activeStatus`| String | Trạng thái kích hoạt. |
### Ví dụ về phản hồi
```json
[
{
"orderCode": "140_638549910086549085",
"productCode": "W2G_NO_418",
"appName": "agencyHND",
"createdDate": "2024-06-26T09:30:08.657",
"iccid": "8986012018520820838",
"type": "ESIM",
"qrCode": "https://esim.joytelecom.com/static/q/20240626/1719360941702_47fa665e2fb8c714b4b90265b461467f.png",
"activeStatus": "DA_KICH_HOAT"
},
{
"orderCode": "140_638549910086549085",
"productCode": "W2G_NO_419",
"appName": "agencyHND",
"createdDate": "2024-06-26T09:32:08.657",
"iccid": "8986012018520820839",
"type": "SIM",
"qrCode": "",
"activeStatus": "CHUA_KICH_HOAT"
}
]
```
## Mô tả kết quả trả về
- **Với physical SIM**: Sản phẩm sẽ chuyển trạng thái `DA_KICH_HOAT` khi giao SIM cho khách hàng.
- **Với e-sim**: Sản phẩm sẽ chuyển trạng thái `DA_KICH_HOAT` sau khi E-SIM được tạo. Quá trình này có thể diễn ra trong 2 phút, vậy nên đối tác có thể thực hiện gọi request 30s / lần để cập nhật đơn hàng. Mã QR sẽ được gắn khi đơn hàng chuyển sang trạng thái `DA_KICH_HOAT`.
## Ví dụ sử dụng Postman
Để truy vấn đơn hàng đang xử lý bằng Postman:
1. Đặt phương thức là `POST`.
2. Đặt URL là `https://way2gotravel.com/en/OpenAPI/QuerySimInProgress`.
3. Trong tab Headers, đặt `Content-Type` là `application/json`.
4. Trong tab Body, chọn `raw` và định dạng `JSON`, sau đó cung cấp body JSON như ví dụ ở trên.
5. Nhấn `Send`.
Nếu yêu cầu thành công, phản hồi sẽ bao gồm một mảng các thông tin chi tiết về đơn hàng và trạng thái kích hoạt của các SIM.
## Ghi chú
- Đảm bảo mã đơn hàng `orderCode` là hợp lệ.
- Thông tin chi tiết về đơn hàng sẽ giúp theo dõi trạng thái và kích hoạt SIM dễ dàng hơn.
Đây là tài liệu về endpoint API `QuerySimInProgress`. Nếu bạn có bất kỳ câu hỏi hoặc cần hỗ trợ thêm, vui lòng liên hệ bộ phận hỗ trợ.
---
# Tài liệu kỹ thuật: Kết nối API Lấy Điểm Nhận Hàng
Tài liệu này cung cấp chi tiết về cách kết nối tới endpoint API `GetPickupPoint`.
## Endpoint
- **URL**: `https://way2gotravel.com/en/OpenAPI/GetPickupPoint`
- **Phương thức**: `POST`
- **Content Type**: `application/json`
## Tham số yêu cầu
Các tham số yêu cầu cần được gửi trong body dưới dạng JSON. Bảng sau liệt kê các tham số:
| Tham số | Loại | Bắt buộc | Mô tả |
|-----------------|---------|----------|------------------------------------------------------|
| `languageCode` | String | Có | Mã ngôn ngữ. Hỗ trợ các giá trị: 'vi-VN', 'en-US', 'ko-KR', 'zh-CN' |
### Ví dụ về Body yêu cầu
```json
{
"languageCode": "vi-VN"
}
```
## Phản hồi
Phản hồi được trả về dưới dạng JSON và bao gồm một mảng các điểm nhận hàng. Mỗi điểm nhận hàng có các trường sau:
| Trường | Loại | Mô tả |
|----------------------|---------|-------------------------------------------------------|
| `id` | Integer | ID của điểm nhận hàng. |
| `name` | String | Tên và địa chỉ của điểm nhận hàng. |
| `url` | String | URL của điểm nhận hàng (có thể null nếu không có). |
| `code` | String | Mã của điểm nhận hàng. |
### Ví dụ về phản hồi
```json
[
{
"id": 2,
"name": "29/24 Yên Thế, phường 2, Quận Tân Bình, Tp.Hồ Chí Minh",
"url": null,
"code": "tansonnhat"
},
{
"id": 3,
"name": "57 Đinh Tiên Hoàng, Hà Nội",
"url": null,
"code": "tahien"
}
]
```
## Ví dụ sử dụng Postman
Để lấy danh sách điểm nhận hàng bằng Postman:
1. Đặt phương thức là `POST`.
2. Đặt URL là `https://way2gotravel.com/en/OpenAPI/GetPickupPoint`.
3. Trong tab Headers, đặt `Content-Type` là `application/json`.
4. Trong tab Body, chọn `raw` và định dạng `JSON`, sau đó cung cấp body JSON như ví dụ ở trên.
5. Nhấn `Send`.
Nếu yêu cầu thành công, phản hồi sẽ bao gồm thông tin chi tiết về các điểm nhận hàng.
## Ghi chú
- Đảm bảo mã ngôn ngữ `languageCode` là hợp lệ. Hỗ trợ các giá trị: 'vi-VN', 'en-US', 'ko-KR', 'zh-CN'.
- Các thông tin chi tiết về điểm nhận hàng sẽ giúp xác định vị trí và đặc điểm của từng điểm.
- Thông tin về trường `name` sẽ được sử dụng để đưa vào `pickupPoint` khi đặt hàng
---