# school_pay 表文档 ## 表概述 **表名**: school_pay **功能**: 支付信息管理表,负责管理教务系统中的所有支付记录,包括支付流水、支付状态、支付方式等核心支付信息 ## 字段说明 ``` Field Type Collation Null Key Default Extra Privileges Comment id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键 main_id int NULL NO 0 select,insert,update,references 支付会员id from_main_id int NULL NO 0 select,insert,update,references 发起支付会员id out_trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付流水号 trade_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 业务类型 trade_id int NULL NO 0 select,insert,update,references 业务id trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 交易单号 body varchar(1000) utf8mb4_general_ci NO select,insert,update,references 支付主体 money decimal(10,2) NULL NO NULL select,insert,update,references 支付金额 voucher varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付票据 status int NULL NO 0 select,insert,update,references 支付状态(0.待支付 1. 支付中 2. 已支付 -1已取消) json varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付扩展用支付信息 create_time int NULL NO 0 select,insert,update,references 创建时间 pay_time int NULL NO 0 select,insert,update,references 支付时间 cancel_time int NULL NO 0 select,insert,update,references 关闭时间 type varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付方式 mch_id varchar(50) utf8mb4_general_ci NO select,insert,update,references 商户收款账号 main_type varchar(255) utf8mb4_general_ci NO select,insert,update,references channel varchar(50) utf8mb4_general_ci NO select,insert,update,references 支付渠道 fail_reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 失败原因 ``` ## 功能用途 ### 主要功能 - **支付流水管理**: 生成和管理唯一的支付流水号,确保支付记录可追溯 - **多业务类型支持**: 支持不同业务类型的支付处理(订单支付、充值等) - **支付状态跟踪**: 实时跟踪支付状态(待支付、支付中、已支付、已取消) - **多支付方式**: 支持多种支付渠道和支付方式 - **代付功能**: 支持发起支付会员和实际支付会员的分离管理 - **支付票据管理**: 管理支付凭证和票据信息 - **商户账号管理**: 管理不同的商户收款账号 - **支付时间记录**: 记录支付创建、完成、取消等关键时间节点 - **失败原因追踪**: 记录支付失败的具体原因,便于问题排查 ### 业务场景 - **订单支付**: 学员购买课程时的支付处理 - **充值支付**: 学员账户余额充值 - **代付服务**: 家长为孩子支付学费等代付场景 - **退款处理**: 处理退费相关的支付记录 - **支付对账**: 与第三方支付平台进行对账 - **财务结算**: 生成财务报表和收入统计 - **支付监控**: 监控支付成功率和失败原因 - **风控管理**: 识别异常支付行为 ## 关联关系 ### 主要关联表 - `school_member`: 会员信息表 (main_id, from_main_id) - `school_order_table`: 订单信息表 (通过trade_id关联) - `school_contract`: 合同信息表 (通过trade_id关联) - `school_refund`: 退款信息表 (通过trade_id关联) - `school_recharge`: 充值记录表 (通过trade_id关联) - `sys_pay_config`: 支付配置表 (通过type关联) ### 关联说明 - **会员关联**: main_id关联实际支付的会员,from_main_id关联发起支付的会员 - **业务关联**: 通过trade_type和trade_id关联具体的业务记录(订单、合同、充值等) - **支付配置**: 通过type字段关联支付方式配置 - **商户关联**: mch_id关联具体的商户收款账号 - **渠道关联**: channel字段标识支付渠道来源 ## 索引建议 - **主键索引**: id (已存在) - **唯一索引**: out_trade_no (支付流水号唯一性) - **外键索引**: - main_id (支付会员查询) - from_main_id (发起支付会员查询) - **业务索引**: - trade_type (业务类型查询) - trade_id (业务ID查询) - trade_no (交易单号查询) - **状态索引**: status (支付状态查询) - **时间索引**: - create_time (创建时间查询) - pay_time (支付时间查询) - **复合索引**: - (main_id, status) (会员支付状态查询) - (trade_type, trade_id) (业务关联查询) - (type, status) (支付方式状态查询) - (create_time, status) (时间状态查询) - (mch_id, status) (商户支付状态查询) ## 注意事项 - **流水号唯一性**: out_trade_no必须全局唯一,避免重复支付 - **金额精度**: money字段使用decimal(10,2),确保财务计算精度 - **状态流转**: 支付状态有严格的流转规则(0→1→2或0→-1) - **时间逻辑**: pay_time不能早于create_time,cancel_time只在取消时设置 - **代付逻辑**: from_main_id和main_id可以不同,支持代付场景 - **业务关联**: trade_type和trade_id必须配套使用,确保业务关联正确 - **支付方式**: type字段决定了支付的具体处理逻辑 - **商户配置**: mch_id必须与系统配置的商户账号匹配 - **支付渠道**: channel字段用于区分不同的支付来源 - **失败处理**: 支付失败时必须记录fail_reason,便于问题排查 - **数据安全**: 支付相关敏感信息需要加密存储 - **幂等性**: 同一笔支付请求多次提交应该返回相同结果 - **对账机制**: 定期与第三方支付平台进行对账,确保数据一致性 - **监控告警**: 支付失败率过高时需要及时告警