---
# System prepended metadata

title: Member System & Shopping Cart API DOC

---

---
title: 'Member System & Shopping Cart API DOC'
disqus: hackmd
---

Member System &
Shopping Cart API DOC
===

## 目錄/Contents

[TOC]

## 會員 member

### 註冊 register
:::warning
**POST** /api/member
:::


| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| name(<font color = "#FD0000">required</font>)  | String | x-www-form-urlencoded | 會員名稱 |
| email(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 會員信箱 |
| password(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 會員密碼 |

---
:::warning
Request
```json=
{
    "name": "peter", //member name
    "email": "peter@gmail.com", //member email
    "password": "123" //member password
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "status": "Success",
    "result": {
        "registerMember": {
            "name": "peter", 
            "email": "peter@gmail.com",
            "password": "df5df8f2a4d541d5q7w8d5d21f4g5e3s5c5ddfgh", //Encrypted password
            "created_date": "2021-09-25 17:09:57"
        }
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Email 格式錯誤
```json=
{
    "result": {
        "status": "Register fail",
        "err": "Please enter correct email format. (123@gmail.com)"
    }
}
```
Response
Error type: Email 已經註冊
```json=
{
    "result": {
        "status": "Register fail",
        "err": "Email has already registered"
    }
}
```

:::


### 登入 Login
:::warning
**POST** /api/member/login
:::


| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| email(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 會員信箱 |
| password(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 會員密碼 |

---
:::warning
Request
```json=
{
    "email": "peter@gmail.com", //member email
    "password": "123" //member password
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "status": "Success",
    "result": "Welcom peter"
}
```
Headers
```json=
{
    "token": "[JWT Token]"//登入成功後，分配一個token給使用者
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Email 或是密碼錯誤
```json=
{
    "result": {
        "status": "Login fail",
        "err": "Please enter correct email and password"
    }
}
```
:::


### 修改資料 Modify
:::info
**PUT** /api/member
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |

| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| name(<font color = "#FD0000">required</font>)  | String | x-www-form-urlencoded | 新會員名稱 |
| password(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 新會員密碼 |

---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
```json=
{
    "name": "peterUpdate", //member name
    "password": "123123" //member password
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": {
        "status": "Success",
        "memberUpdateData": {
            "name": "peterUpdate",
            "password": "[Encrypted password]",//加密後的密碼
            "update_date": "2021-09-25 18:21:23"
        }
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::


## 商品 Product


### 取得商品 Get Product List

:::success
**GET** /api/product
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": [
        {
            "id": 1,
            "name": "camera",
            "price": 1000,
            "stock_quantity": 100,
            "img": null,
            "img": null,
            "remark": "Leica M3",
            "update_date": null,
            "create_date": "2021-10-11 16:00:00"
        },
        {
            "id": 2,
            "name": "lens",
            "price": 10,
            "stock_quantity": 20,
            "img": null,
            "img": null,
            "remark": "Leica 28mm",
            "update_date": null,
            "create_date": "2021-10-11 16:00:00"
        },
        ...其他產品
    ]
}
```
:::


## 訂單 Order


### 取得所有訂單 Get All Orders

:::success
**GET** /api/order
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |

---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": [
        {
            "order_id": 1,
            "member_id": 1,
            "product_id": 2,
            "order_quantity": 10,
            "order_price": 2000,
            "is_complete": 0,
            "update_date": "2021-09-20 13:00:00"
        },
        {
            "order_id": 1,
            "member_id": 1,
            "product_id": 3,
            "order_quantity": 20,
            "order_price": 600,
            "is_complete": 0,
            "update_date": "2021-09-20 13:00:00"
        },
    ]
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::


### 取得單筆訂單 Get member Orders

:::success
**GET** /api/order/member
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |
---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": {
        "status": "Order created Successfully",
        "orderData": [
            {
                "order_id": 1,
                "memberID": 2,
                "product_id": "1",
                "order_quantity": 1,
                "order_price": 1000,
                "create_date": "2021-09-25 18:49:56",
                "is_complete": 0
            },
            {
                "order_id": 1,
                "memberID": 2,
                "product_id": "2",
                "order_quantity": 2,
                "order_price": 50,
                "create_date": "2021-09-25 18:49:56",
                "is_complete": 0
            },
            {
                "order_id": 1,
                "memberID": 2,
                "product_id": "3",
                "order_quantity": 2,
                "order_price": 400,
                "create_date": "2021-09-25 18:49:56",
                "is_complete": 0
            }
        ]
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::


### 新增訂單 Create Order
:::warning
**POST** /api/order
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |

| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| productID(<font color = "#FD0000">required</font>)  | String | x-www-form-urlencoded | 商品ID |
| quantity(<font color = "#FD0000">required</font>)| Int | x-www-form-urlencoded | 商品數量 |

---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
```json=
{
    "productID": "1, 2, 3", //要訂購的商品ID
    "quantiy": 1, 2, 1 //依序每種商品的訂購數量
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": {
        "status": "Order created Successfully",
        "orderData": [
            {
                "order_id": 1,
                "memberID": 2,
                "product_id": "1",
                "order_quantity": 1,
                "order_price": 1000,
                "create_date": "2021-09-25 18:49:56",
                "is_complete": 0
            },
            {
                "order_id": 1,
                "memberID": 2,
                "product_id": "2",
                "order_quantity": 2,
                "order_price": 50,
                "create_date": "2021-09-25 18:49:56",
                "is_complete": 0
            },
            {
                "order_id": 1,
                "memberID": 2,
                "product_id": "3",
                "order_quantity": 2,
                "order_price": 400,
                "create_date": "2021-09-25 18:49:56",
                "is_complete": 0
            }
        ]
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::


### 修改訂單 Modify Order
:::info
**PUT** /api/order
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |

| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| orderID(<font color = "#FD0000">required</font>)  | String | x-www-form-urlencoded | 訂單編號 |
| productID(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 產品編號 |
| quantity(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 修改後數量 |

---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
```json=
{
    "orderID": "6", //訂單編號
    "productID": "2", //產品編號
    "quantity": "3" //修改後數量
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": {
        "status": "Update order successfully",
        "updateOrderData": {
            "orderID": "6", //訂單編號
            "memberID": 9,
            "productID": "2", //產品編號
            "quantity": "3" //修改後數量
            "update_date": "2021-09-25 18:21:23"
        }
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::


### 刪除訂單 Delete Order
:::danger
**DELETE** /api/order
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |

| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| orderID(<font color = "#FD0000">required</font>)  | Int | x-www-form-urlencoded | 訂單編號 |
| productID(<font color = "#FD0000">required</font>)| String | x-www-form-urlencoded | 產品編號 |

---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
```json=
{
    "orderID": "6", //訂單編號
    "productID": "2", //產品編號
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": {
        "status": "Delete the order successfully",
        "deleteOrderData": {
            "orderID": "6", //訂單編號
            "memberID": 9,
            "productID": "2", //產品編號
        }
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: 找不到訂單
```json=
{
    "result": {
        "status": "Delete the order fail",
        "err": "Can not find the order."
    }
}
```
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::


### 完成訂單 Complete Order
:::info
**PUT** /api/order/complete
:::
| Headers    | Key   | Value | 描述 |
| --- | ----- | ----------- |----------- |
|     | token | [JWT Token] | 登入後的token |

| Body參數                                       | 類型   | 傳輸格式              | 描述     |
| ---------------------------------------------- | ------ | --------------------- | -------- |
| orderID(<font color = "#FD0000">required</font>)  | Int | x-www-form-urlencoded | 訂單編號 |

---
:::warning
Request 

Header
```json=
{
    "token": "[JWT token]"
}
```
```json=
{
    "orderID": "6", //訂單編號
}
```
:::

<font color = "green">**Success 200**</font>

:::success
Response
```json=
{
    "result": {
        "status": "Order id: 6 payment complished. thanks for using our service! Order detail will be send to peter@gmail.com"
    }
}
```
:::

<font color="red">**Error**</font>
:::danger
Response
Error type: Token過期/Token錯誤
```json=
{
    "result": {
        "status": "Wrong token",
        "err": "Please login agin."
    }
}
:::



User flows
---

Project Timeline
---

## Contact me

:::info
**GITHub:** https://github.com/ec1348/shopping_cart
**Email:** ec1348@gmail.com
**Call:** 0970834201
:::

###### tags: `API` `Shpping Cart` `Member System`
