支付收銀系統(tǒng)設(shè)計(jì)

一、系統(tǒng)設(shè)計(jì)概要

支付收銀系統(tǒng)設(shè)計(jì)概要,這里我們?yōu)榱朔奖銛U(kuò)展,增加一個(gè)業(yè)務(wù)方的概念,即一個(gè)收銀系統(tǒng)接入多個(gè)業(yè)務(wù)方,這個(gè)業(yè)務(wù)方既可以是不同的部門也可以是不同的業(yè)務(wù)。

下面是系統(tǒng)的交互時(shí)序圖,可以參考下一個(gè)大概的流程。

  • 提交支付
  • 支付結(jié)果異步通知
  • 客戶端輪詢結(jié)果
支付時(shí)序圖.jpg

客戶端下單,完成業(yè)務(wù)訂單的創(chuàng)建。
客戶端用業(yè)務(wù)系統(tǒng)的訂單請求支付收銀系統(tǒng)支付,支付系統(tǒng)請求三方支付,完成支付請求。
這是一個(gè)標(biāo)準(zhǔn)的支付請求流程。

二、系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)

業(yè)務(wù)方設(shè)計(jì)

CREATE TABLE `pay_partner` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `partner_id` char(6) DEFAULT NULL COMMENT '接入方標(biāo)志',
  `partner_name` varchar(64) DEFAULT NULL COMMENT '接入方名稱',
  `partner_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '接入方狀態(tài)',
  `partner_key` varchar(128) DEFAULT NULL COMMENT '接入方秘鑰',
  `query_url` varchar(255) DEFAULT NULL COMMENT '查詢連接',
  `pay_notify_url` varchar(255) DEFAULT NULL COMMENT '支付通知地址',
  `refund_notify_url` varchar(255) DEFAULT NULL COMMENT '退款通知地址',
  `created_at` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
  `updated_at` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

支付方式設(shè)計(jì)

CREATE TABLE `pay_type` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `pay_type_key` varchar(10) DEFAULT NULL COMMENT '支付方式key',
  `pay_type_name` varchar(32) DEFAULT NULL COMMENT '支付方式名稱',
  `pay_type_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '支付方式狀態(tài)',
  `pay_type_service` varchar(32) DEFAULT NULL COMMENT '支付方式服務(wù)',
  `created_at` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
  `updated_at` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

賬戶設(shè)計(jì)

CREATE TABLE `pay_account` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `account_id` varchar(10) DEFAULT NULL COMMENT '賬戶id',
  `account_name` varchar(64) DEFAULT NULL COMMENT '賬戶名稱',
  `account_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '賬戶狀態(tài)',
  `pay_type_key` varchar(10) DEFAULT NULL COMMENT '支付方式key',
  `account_no` varchar(32) DEFAULT NULL COMMENT '三方賬戶號(hào)',
  `sub_account_no` varchar(32) DEFAULT NULL COMMENT '三方子賬戶號(hào)',
  `app_id` varchar(32) DEFAULT NULL COMMENT '三方應(yīng)用id',
  `sub_app_id` varchar(32) DEFAULT NULL COMMENT '三方子應(yīng)用id',
  `account_key` varchar(64) DEFAULT NULL COMMENT '三方商戶秘鑰',
  `cert_path` varchar(255) DEFAULT NULL COMMENT '證書目錄',
  `created_at` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
  `updated_at` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

賬戶簽約設(shè)計(jì)

CREATE TABLE `pay_partner_account` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `partner_id` char(6) DEFAULT NULL COMMENT '接入方標(biāo)志',
  `account_id` varchar(10) DEFAULT NULL COMMENT '賬戶id',
  `assign_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '簽約狀態(tài)',
  `client` varchar(10) DEFAULT NULL COMMENT '客戶端',
  `created_at` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
  `updated_at` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

訂單表設(shè)計(jì)

CREATE TABLE `pay_order` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `partner_id` char(6) DEFAULT NULL COMMENT '接入方標(biāo)志',
  `partner_no` varchar(64) DEFAULT NULL COMMENT '業(yè)務(wù)訂單號(hào)',
  `order_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '訂單類型',
  `order_status` int(11) DEFAULT NULL COMMENT '訂單狀態(tài)',
  `order_no` varchar(64) DEFAULT NULL COMMENT '訂單號(hào)',
  `out_order_no` varchar(64) DEFAULT NULL COMMENT '三方訂單號(hào)',
  `total_fee` int(11) DEFAULT NULL COMMENT '總訂單金額',
  `item_fee` int(11) DEFAULT NULL COMMENT '實(shí)付金額',
  `coupon_fee` int(11) DEFAULT NULL COMMENT '優(yōu)惠金額',
  `account_id` varchar(10) DEFAULT NULL COMMENT '賬戶id',
  `pay_type_key` varchar(10) DEFAULT NULL COMMENT '支付方式',
  `pay_account` varchar(32) DEFAULT NULL COMMENT '支付賬戶',
  `pay_at` datetime DEFAULT NULL COMMENT '支付時(shí)間',
  `created_at` datetime DEFAULT NULL COMMENT '創(chuàng)建時(shí)間',
  `updated_at` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容