第三方金流串接 – 資料庫規劃

閱讀時間約 7 分鐘

※ 架構設計

raw-image

※ 資料庫規劃

  • id:流水號,唯一代替產品名稱的辨識代碼,AUTO_INCREMENT。
  • name:VARCHAR(255),NOT NULL。
  • amount:INTEGER(整數),UNSIGNED(不能是負數)。
  • description:TEXT,描述產品。
  • pre_order:作為金流交易賣出物品時的預扣額度。

※ 資料庫規劃轉化為實際操作

  • 在src資料夾內建立一個database的資料夾:
raw-image
  • 在database資料夾中建立products.sql檔案,寫進預先規劃的內容:
CREATE TABLE `products` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` varchar(255) NOT NULL DEFAULT '',
`amount` int UNSIGNED NOT NULL DEFAULT 0,
`description` text,
`pre_order` int UNSIGNED NOT NULL DEFAULT 0,

);

這段 SQL 語句是建立一個名為 products 的資料表,並定義其結構。以下是各欄位的詳細說明:

  • id:整數型欄位,無符號 (UNSIGNED),不能為空 (NOT NULL),自動遞增 (AUTO_INCREMENT),並設置為主鍵 (PRIMARY KEY)。
  • name:變長字元串 (VARCHAR),最大長度為 255 字元,不能為空,預設值為空字串 ('')。
  • amount:無符號整數 (UNSIGNED),不能為空,預設值為 0。
  • description:文字型欄位 (TEXT),用於存儲產品描述。
  • pre_order:無符號整數 (UNSIGNED),不能為空,預設值為 0。

※ 打開MySQL Workbench新增products 表格

刪除已有表格

DROP TABLE IF EXISTS `products`;

建立新的表格

CREATE TABLE `products` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`amount` INT UNSIGNED NOT NULL DEFAULT 0,
`description` TEXT,
`pre_order` INT UNSIGNED NOT NULL DEFAULT 0
);
raw-image

※ 訂單表規劃

  • id:VARCHAR(20) NOT NULL PRIMARY KEY。(大部分金流的 API,它們的 ID 都要求是一個亂數的字串)
  • total:INT UNSIGNED NOT NULL DEFAULT 0。
  • created_at:DATETIME NOT NULL DEFAULT NOW()。
  • updated_at:DATETIME NOT NULL DEFAULT NOW()。
  • payment_provider:ENUM('PAYPAL', 'ECPAY')。
  • payment_way:ENUM('CSV', 'CC', 'ATM', 'PAYPAL')。
  • status:ENUM('WAITING', 'SUCCESS', 'FAILED', 'CANCEL')。
  • contents:JSON DEFAULT NULL (商品內容[{商品ID,商品數量,商品價格}])

※ 訂單:產品的對應表

  • product_id
  • order_id

※ 訂單表轉化為實際操作

  • 在database資料夾內建立orders.sql檔案,寫進預先規劃的內容:
raw-image
CREATE TABLE `orders` (
`id` varchar(20) NOT NULL PRIMARY KEY COMMENT '大部分金流的API它們的ID都要求是一個亂數的字串',
`total` int unsigned NOT NULL DEFAULT 0,
`created_at` datetime NOT NULL DEFAULT now(),
`updated_at` datetime NOT NULL DEFAULT now(),
`payment_provider` enum('PAYPAL', 'ECPAY'),
`payment_way` enum('CSV', 'CC', 'ATM', 'PAYPAL'),
`status` enum('WAITING', 'SUCCESS', 'FAILED', 'CANCEL'),
`contents` JSON DEFAULT NULL COMMENT '商品內容 [{商品ID, 商品數量, 商品價格}]'
);

這段 SQL 語法的目的是在資料庫中創建一個名為 orders 的表格,並定義其結構。具體內容如下:

  • id:VARCHAR(20) NOT NULL PRIMARY KEY,並帶有註解「大部分金流的 API 它們的 ID 都要求是一個亂數的字串」,表示每個訂單的唯一識別碼。
  • total:INT UNSIGNED NOT NULL DEFAULT 0,表示訂單的總金額,預設為 0。
  • created_at:DATETIME NOT NULL DEFAULT NOW(),表示訂單創建的時間,預設為當前時間。
  • updated_at:DATETIME NOT NULL DEFAULT NOW(),表示訂單最後更新的時間,預設為當前時間。
  • payment_provider:ENUM('PAYPAL', 'ECPAY'),表示支付提供商,可選擇 PAYPAL 或 ECPAY。
  • payment_way:ENUM('CSV', 'CC', 'ATM', 'PAYPAL'),表示支付方式,可選擇 CSV、信用卡、ATM 或 PAYPAL。
  • status:ENUM('WAITING', 'SUCCESS', 'FAILED', 'CANCEL'),表示訂單狀態,可選擇等待、成功、失敗或取消。
  • contents:JSON DEFAULT NULL,並帶有註解「商品內容 [{商品ID, 商品數量, 商品價格}]」,表示訂單中的商品內容,預設為空。
raw-image


    全端網頁開發專業知識分享
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ※ 下載Typescript 建立 TypeScript 和 Express 的基本目錄結構和必要配置。 npm install -g typescript-express-generator 建立模板引擎: ts-express --view=ejs server 安裝node_m
    ※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
    ※ 開發第三方金流串接使用工具: Typescript。 MySQL。 ※ 開發第三方金流串接使用技術: 基礎的docker使用方式。 用Typescript開發Node.JS的金流服務伺服器。 前端框架VueJs。 ※ 常見第三方金流平台介紹: PayPal: 特色: 全球最大
    ※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
    ※ Mongoose官網 ※ 認識Mongoose Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。 ※ Mongoose安裝 ※ 建立資料夾: mkdir mo
    ※建置 MongoDB 資料庫,可以有兩種方式: 上 MongoDB 官網,把 MongoDB 的軟體下載下來,在本地安裝資料庫。 使用 MongoDB Atlas,這是 MongoDB 官方提供的全球雲端文件資料庫服務。 兩者的功能和操作上是相同的,在本地安裝與啟動資料庫會有連線速度上的優勢
    ※ 下載Typescript 建立 TypeScript 和 Express 的基本目錄結構和必要配置。 npm install -g typescript-express-generator 建立模板引擎: ts-express --view=ejs server 安裝node_m
    ※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
    ※ 開發第三方金流串接使用工具: Typescript。 MySQL。 ※ 開發第三方金流串接使用技術: 基礎的docker使用方式。 用Typescript開發Node.JS的金流服務伺服器。 前端框架VueJs。 ※ 常見第三方金流平台介紹: PayPal: 特色: 全球最大
    ※ 具備三項工具: 編輯器 終端機 瀏覽器 ※ 步驟一:建立資料夾 mkdir mongodb-demo cd mongodb-demo code . ※ 步驟二:初始化,建立package.json npm init -y ※ 步驟三:安裝網頁伺服器 – Express 因為
    ※ Mongoose官網 ※ 認識Mongoose Mongoose 是提供給 Node.js 使用的 MongoDB ODM。透過 Mongoose,我們可以用物件導向語法,以更直覺的方式操作 MongoDB 資料庫。 ※ Mongoose安裝 ※ 建立資料夾: mkdir mo
    ※建置 MongoDB 資料庫,可以有兩種方式: 上 MongoDB 官網,把 MongoDB 的軟體下載下來,在本地安裝資料庫。 使用 MongoDB Atlas,這是 MongoDB 官方提供的全球雲端文件資料庫服務。 兩者的功能和操作上是相同的,在本地安裝與啟動資料庫會有連線速度上的優勢
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
    Thumbnail
    到存放虛擬機的磁碟處\點選想要註冊的機器\註冊機器(登錄虛擬機器)
    Thumbnail
    題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
    Thumbnail
    Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    為什麼會有Schema Registry的出現? 因為Kafka的零拷貝原則, 也就是kafka本身並不會去碰觸到訊息也不進行資料驗證, 而是bypass的傳送, 預設都以位元組來傳輸資料會比較有效率, 但位元組誰看得懂啊...。 加上Kafka的特性是生產者與消費者並不能直接溝通, 因
    Thumbnail
    到存放虛擬機的磁碟處\點選想要註冊的機器\註冊機器(登錄虛擬機器)
    Thumbnail
    題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
    Thumbnail
    Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼