美文网首页
支付收银系统设计

支付收银系统设计

作者: 莴牛 | 来源:发表于2021-04-20 10:03 被阅读0次

    一、系统设计概要

    支付收银系统设计概要,这里我们为了方便扩展,增加一个业务方的概念,即一个收银系统接入多个业务方,这个业务方既可以是不同的部门也可以是不同的业务。

    下面是系统的交互时序图,可以参考下一个大概的流程。

    • 提交支付
    • 支付结果异步通知
    • 客户端轮询结果
    支付时序图.jpg

    客户端下单,完成业务订单的创建。
    客户端用业务系统的订单请求支付收银系统支付,支付系统请求三方支付,完成支付请求。
    这是一个标准的支付请求流程。

    二、系统数据库设计

    业务方设计

    CREATE TABLE `pay_partner` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `partner_id` char(6) DEFAULT NULL COMMENT '接入方标志',
      `partner_name` varchar(64) DEFAULT NULL COMMENT '接入方名称',
      `partner_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '接入方状态',
      `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 '创建时间',
      `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    

    支付方式设计

    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 '支付方式状态',
      `pay_type_service` varchar(32) DEFAULT NULL COMMENT '支付方式服务',
      `created_at` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    

    账户设计

    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 '账户状态',
      `pay_type_key` varchar(10) DEFAULT NULL COMMENT '支付方式key',
      `account_no` varchar(32) DEFAULT NULL COMMENT '三方账户号',
      `sub_account_no` varchar(32) DEFAULT NULL COMMENT '三方子账户号',
      `app_id` varchar(32) DEFAULT NULL COMMENT '三方应用id',
      `sub_app_id` varchar(32) DEFAULT NULL COMMENT '三方子应用id',
      `account_key` varchar(64) DEFAULT NULL COMMENT '三方商户秘钥',
      `cert_path` varchar(255) DEFAULT NULL COMMENT '证书目录',
      `created_at` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    

    账户签约设计

    CREATE TABLE `pay_partner_account` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `partner_id` char(6) DEFAULT NULL COMMENT '接入方标志',
      `account_id` varchar(10) DEFAULT NULL COMMENT '账户id',
      `assign_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '签约状态',
      `client` varchar(10) DEFAULT NULL COMMENT '客户端',
      `created_at` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    

    订单表设计

    CREATE TABLE `pay_order` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `partner_id` char(6) DEFAULT NULL COMMENT '接入方标志',
      `partner_no` varchar(64) DEFAULT NULL COMMENT '业务订单号',
      `order_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '订单类型',
      `order_status` int(11) DEFAULT NULL COMMENT '订单状态',
      `order_no` varchar(64) DEFAULT NULL COMMENT '订单号',
      `out_order_no` varchar(64) DEFAULT NULL COMMENT '三方订单号',
      `total_fee` int(11) DEFAULT NULL COMMENT '总订单金额',
      `item_fee` int(11) DEFAULT NULL COMMENT '实付金额',
      `coupon_fee` int(11) DEFAULT NULL COMMENT '优惠金额',
      `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 '支付时间',
      `created_at` datetime DEFAULT NULL COMMENT '创建时间',
      `updated_at` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    

    相关文章

      网友评论

          本文标题:支付收银系统设计

          本文链接:https://www.haomeiwen.com/subject/hqoilltx.html