-- 支付应用表 (tz_pay_app) CREATE TABLE `tz_pay_app` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应用编号,数据库自增', `app_key` varchar(64) NOT NULL COMMENT '应用标识', `name` varchar(128) NOT NULL COMMENT '应用名', `status` tinyint(4) NOT NULL COMMENT '状态 (枚举 CommonStatusEnum)', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `order_notify_url` varchar(512) DEFAULT NULL COMMENT '支付结果的回调地址', `refund_notify_url` varchar(512) DEFAULT NULL COMMENT '退款结果的回调地址', `transfer_notify_url` varchar(512) DEFAULT NULL COMMENT '转账结果的回调地址', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_app_key` (`app_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付应用表'; -- 支付渠道表 (tz_pay_channel) CREATE TABLE `tz_pay_channel` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '渠道编号,数据库自增', `code` varchar(32) NOT NULL COMMENT '渠道编码 (枚举 PayChannelEnum)', `status` tinyint(4) NOT NULL COMMENT '状态 (枚举 CommonStatusEnum)', `fee_rate` double DEFAULT NULL COMMENT '渠道费率,单位:百分比', `remark` varchar(512) DEFAULT NULL COMMENT '备注', `app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)', `config` json DEFAULT NULL COMMENT '支付渠道配置', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_code_app_id` (`code`,`app_id`), KEY `idx_app_id` (`app_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付渠道表'; -- 支付通知日志表 (tz_pay_notify_log) CREATE TABLE `tz_pay_notify_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志编号,自增', `task_id` bigint(20) NOT NULL COMMENT '通知任务编号 (关联 tz_pay_notify_task.id)', `notify_times` int(11) NOT NULL COMMENT '第几次被通知', `response` varchar(1024) DEFAULT NULL COMMENT 'HTTP 响应结果', `status` tinyint(4) NOT NULL COMMENT '支付通知状态 (枚举 PayNotifyStatusEnum)', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_task_id` (`task_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付通知日志表'; -- 支付通知任务表 (tz_pay_notify_task) CREATE TABLE `tz_pay_notify_task` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号,自增', `app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)', `type` tinyint(4) NOT NULL COMMENT '通知类型 (枚举 PayNotifyTypeEnum)', `data_id` bigint(20) NOT NULL COMMENT '数据编号', `merchant_order_id` varchar(64) DEFAULT NULL COMMENT '商户订单编号', `merchant_transfer_id` varchar(64) DEFAULT NULL COMMENT '商户转账单编号', `status` tinyint(4) NOT NULL COMMENT '通知状态 (枚举 PayNotifyStatusEnum)', `next_notify_time` datetime DEFAULT NULL COMMENT '下一次通知时间', `last_execute_time` datetime DEFAULT NULL COMMENT '最后一次执行时间', `notify_times` int(11) DEFAULT NULL COMMENT '当前通知次数', `max_notify_times` int(11) DEFAULT NULL COMMENT '最大可通知次数', `notify_url` varchar(512) NOT NULL COMMENT '通知地址', `tenant_id` bigint(20) NOT NULL COMMENT '租户ID', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), KEY `idx_app_id` (`app_id`), KEY `idx_type_data_id` (`type`,`data_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付通知任务表'; -- 支付订单表 (tz_pay_order) CREATE TABLE `tz_pay_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单编号,数据库自增', `app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)', `channel_id` bigint(20) NOT NULL COMMENT '渠道编号 (关联 tz_pay_channel.id)', `channel_code` varchar(32) NOT NULL COMMENT '渠道编码 (枚举 PayChannelEnum)', `merchant_order_id` varchar(64) NOT NULL COMMENT '商户订单编号', `subject` varchar(256) NOT NULL COMMENT '商品标题', `body` varchar(512) DEFAULT NULL COMMENT '商品描述信息', `notify_url` varchar(512) DEFAULT NULL COMMENT '异步通知地址', `price` int(11) NOT NULL COMMENT '支付金额,单位:分', `channel_fee_rate` double DEFAULT NULL COMMENT '渠道手续费,单位:百分比', `channel_fee_price` int(11) DEFAULT NULL COMMENT '渠道手续金额,单位:分', `status` tinyint(4) NOT NULL COMMENT '支付状态 (枚举 PayOrderStatusEnum)', `user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP', `expire_time` datetime DEFAULT NULL COMMENT '订单失效时间', `success_time` datetime DEFAULT NULL COMMENT '订单支付成功时间', `extension_id` bigint(20) DEFAULT NULL COMMENT '支付成功的订单拓展单编号 (关联 tz_pay_order_extension.id)', `no` varchar(64) DEFAULT NULL COMMENT '支付成功的外部订单号 (关联 tz_pay_order_extension.no)', `refund_price` int(11) DEFAULT NULL COMMENT '退款总金额,单位:分', `channel_user_id` varchar(128) DEFAULT NULL COMMENT '渠道用户编号', `channel_order_no` varchar(128) DEFAULT NULL COMMENT '渠道订单号', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_merchant_order_id_app_id` (`merchant_order_id`,`app_id`), KEY `idx_app_id` (`app_id`), KEY `idx_channel_id` (`channel_id`), KEY `idx_status` (`status`), KEY `idx_extension_id` (`extension_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付订单表'; -- 支付订单扩展表 (tz_pay_order_extension) CREATE TABLE `tz_pay_order_extension` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '订单拓展编号,数据库自增', `no` varchar(64) NOT NULL COMMENT '外部订单号', `order_id` bigint(20) NOT NULL COMMENT '订单号 (关联 tz_pay_order.id)', `channel_id` bigint(20) NOT NULL COMMENT '渠道编号 (关联 tz_pay_channel.id)', `channel_code` varchar(32) NOT NULL COMMENT '渠道编码', `user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP', `status` tinyint(4) NOT NULL COMMENT '支付状态 (枚举 PayOrderStatusEnum)', `channel_extras` json DEFAULT NULL COMMENT '支付渠道的额外参数', `channel_error_code` varchar(64) DEFAULT NULL COMMENT '调用渠道的错误码', `channel_error_msg` varchar(512) DEFAULT NULL COMMENT '调用渠道报错时,错误信息', `channel_notify_data` text DEFAULT NULL COMMENT '支付渠道的同步/异步通知的内容', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_no` (`no`), KEY `idx_order_id` (`order_id`), KEY `idx_channel_id` (`channel_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付订单扩展表'; -- 支付退款单表 (tz_pay_refund) CREATE TABLE `tz_pay_refund` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '退款单编号,数据库自增', `no` varchar(64) NOT NULL COMMENT '外部退款号', `app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)', `channel_id` bigint(20) NOT NULL COMMENT '渠道编号 (关联 tz_pay_channel.id)', `channel_code` varchar(32) NOT NULL COMMENT '渠道编码 (枚举 PayChannelEnum)', `order_id` bigint(20) NOT NULL COMMENT '订单编号 (关联 tz_pay_order.id)', `order_no` varchar(64) NOT NULL COMMENT '支付订单编号', `merchant_order_id` varchar(64) NOT NULL COMMENT '商户订单编号', `merchant_refund_id` varchar(64) NOT NULL COMMENT '商户退款订单号', `notify_url` varchar(512) DEFAULT NULL COMMENT '异步通知地址', `status` tinyint(4) NOT NULL COMMENT '退款状态 (枚举 PayRefundStatusEnum)', `pay_price` int(11) NOT NULL COMMENT '支付金额,单位:分', `refund_price` int(11) NOT NULL COMMENT '退款金额,单位:分', `reason` varchar(512) DEFAULT NULL COMMENT '退款原因', `user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP', `channel_order_no` varchar(128) DEFAULT NULL COMMENT '渠道订单号', `channel_refund_no` varchar(128) DEFAULT NULL COMMENT '渠道退款单号', `success_time` datetime DEFAULT NULL COMMENT '退款成功时间', `channel_error_code` varchar(64) DEFAULT NULL COMMENT '调用渠道的错误码', `channel_error_msg` varchar(512) DEFAULT NULL COMMENT '调用渠道的错误提示', `channel_notify_data` text DEFAULT NULL COMMENT '支付渠道的同步/异步通知的内容', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_no` (`no`), UNIQUE KEY `uk_merchant_refund_id_app_id` (`merchant_refund_id`,`app_id`), KEY `idx_app_id` (`app_id`), KEY `idx_channel_id` (`channel_id`), KEY `idx_order_id` (`order_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='支付退款单表'; -- 转账单表 (tz_pay_transfer) CREATE TABLE `tz_pay_transfer` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号', `no` varchar(64) NOT NULL COMMENT '转账单号', `app_id` bigint(20) NOT NULL COMMENT '应用编号 (关联 tz_pay_app.id)', `channel_id` bigint(20) NOT NULL COMMENT '转账渠道编号 (关联 tz_pay_channel.id)', `channel_code` varchar(32) NOT NULL COMMENT '转账渠道编码 (枚举 PayChannelEnum)', `merchant_transfer_id` varchar(64) NOT NULL COMMENT '商户转账单编号', `type` tinyint(4) NOT NULL COMMENT '类型 (枚举 PayTransferTypeEnum)', `subject` varchar(256) NOT NULL COMMENT '转账标题', `price` int(11) NOT NULL COMMENT '转账金额,单位:分', `user_name` varchar(64) DEFAULT NULL COMMENT '收款人姓名', `status` tinyint(4) NOT NULL COMMENT '转账状态 (枚举 PayTransferStatusRespEnum)', `success_time` datetime DEFAULT NULL COMMENT '订单转账成功时间', `alipay_logon_id` varchar(128) DEFAULT NULL COMMENT '支付宝登录号', `openid` varchar(128) DEFAULT NULL COMMENT '微信 openId', `notify_url` varchar(512) DEFAULT NULL COMMENT '异步通知地址', `user_ip` varchar(32) DEFAULT NULL COMMENT '用户 IP', `channel_extras` json DEFAULT NULL COMMENT '渠道的额外参数', `channel_transfer_no` varchar(128) DEFAULT NULL COMMENT '渠道转账单号', `channel_error_code` varchar(64) DEFAULT NULL COMMENT '调用渠道的错误码', `channel_error_msg` varchar(512) DEFAULT NULL COMMENT '调用渠道的错误提示', `channel_notify_data` text DEFAULT NULL COMMENT '渠道的同步/异步通知的内容', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime NOT NULL COMMENT '最后更新时间', `creator` varchar(64) NOT NULL COMMENT '创建者', `updater` varchar(64) NOT NULL COMMENT '更新者', `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_no` (`no`), UNIQUE KEY `uk_merchant_transfer_id_app_id` (`merchant_transfer_id`,`app_id`), KEY `idx_app_id` (`app_id`), KEY `idx_channel_id` (`channel_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='转账单表';