NodPay 支付系统项目分析报告
1. 项目概述
项目名称: NodPay 项目类型: 基于 CodeIgniter 框架的支付系统/发票管理系统 框架版本: CodeIgniter (NodCMS 自定义框架) 网站名称: NodPay 默认货币: USD ($) 默认语言: 英语 (English), 德语 (German)
2. 目录结构
/nodpay_11/├── index.php # 入口文件├── .htaccess # Apache重写规则├── Robots.txt # 爬虫规则├── assets/ # 前端资源 (CSS, JS, 图片, CKEditor等)├── install/ # 安装程序│ ├── config/ # 安装配置文件│ │ ├── database_template.php│ │ └── import.sql # 数据库初始化SQL│ └── templates/ # 安装向导模板├── nodcms/ # 核心应用代码│ ├── config/ # 配置文件│ │ ├── config.php # 主配置│ │ ├── database.php # 数据库配置│ │ ├── routes.php # 路由配置│ │ ├── nodcms.php # NodCMS配置│ │ └── autoload.php # 自动加载配置│ ├── controllers/ # 控制器│ ├── core/ # 核心基类│ │ ├── NodCMS_Controller.php│ │ ├── NodCMS_Model.php│ │ ├── NodCMS_Loader.php│ │ └── NodCMS_Router.php│ ├── helpers/ # 辅助函数│ ├── libraries/ # 扩展库│ ├── language/ # 语言包│ ├── models/ # 数据模型│ ├── third_party/ # 第三方扩展包│ │ ├── Payment/ # 支付模块│ │ └── Feespay/ # 费用模块│ └── views/ # 视图文件├── system/ # CodeIgniter框架系统目录└── upload_file/ # 上传文件目录3. 主要功能模块
3.1 支付模块 (Payment)
路径: /nodcms/third_party/Payment/
核心功能:
- 发票管理: 创建、编辑、查看发票
- 支付处理: 支持多种支付网关集成
- 支付通知: webhook回调处理
- 退款管理: 退款记录和处理
- 货运管理: 货运地址和订单管理
支付网关支持:
- PayPal
- Stripe
3.2 用户模块 (Membership)
- 用户注册/登录
- 用户个人资料管理
- 头像管理
- 密码修改
3.3 管理后台 (Admin)
- 系统仪表板
- 用户管理
- 语言管理
- 菜单管理
- 邮件模板管理
- 支付设置
- 发票设置
- 国家/地区管理
3.4 费用模块 (Feespay)
路径: /nodcms/third_party/Feespay/
- 费用项目创建
- 费用支付管理
4. 核心控制器
4.1 前端控制器
控制器 | 路径 | 功能说明 |
General | /nodcms/controllers/General.php | 通用前端控制器,处理首页、语言切换等 |
Payment | /nodcms/controllers/Payment.php | 支付处理核心,发票展示、支付流程 |
Registration | /nodcms/controllers/Registration.php | 用户注册、登录、密码重置 |
Feespay | /nodcms/controllers/Feespay.php | 费用相关前端功能 |
4.2 后端控制器
控制器 | 路径 | 功能说明 |
General_admin | /nodcms/controllers/General_admin.php | 管理后台首页、设置、系统配置 |
Payment_admin | /nodcms/controllers/Payment_admin.php | 支付管理、发票管理、支付网关设置 |
Feespay_admin | /nodcms/controllers/Feespay_admin.php | 费用管理后台 |
Payment_api | /nodcms/controllers/Payment_api.php | 支付API接口 |
4.3 会员控制器
控制器 | 路径 | 功能说明 |
General_members | /nodcms/controllers/General_members.php | 会员中心、个人账户管理 |
5. 核心数据模型
5.1 支付相关模型
模型名
| 表名 | 功能 |
Invoices_model | invoice | 发票主表 |
Invoices_items_model | invoice_item | 发票项目明细 |
Invoice_payments_model | invoice_payments | 支付记录 |
Invoices_pending_payment_model | 待查 | 待处理支付 |
Invoices_shipping_model | 待查 | 货运信息 |
Invoices_paid_downloads_model | invoice_paid_downloads | 已支付下载文件 |
Country_model | countries | 国家/地区 |
5.2 系统模型
模型名 | 表名 | 功能 |
Users_model | users | 用户管理 |
Groups_model | groups | 用户组 |
Languages_model | languages | 语言管理 |
Settings_model | settings | 系统设置 |
Menu_model | menu | 菜单管理 |
Email_messages_model | auto_email_messages | 邮件模板 |
Gallery_model | gallery | 画廊管理 |
Upload_files_model | upload_files | 文件上传管理 |
6. 数据库表结构
6.1 核心业务表
invoice (发票主表)
- invoice_id: 发票ID
- reference_id/reference_text: 关联引用
- created_date: 创建时间
- amount: 金额
- invoice_key: 发票密钥
- invoice_name/email/address/tel: 发票收件人信息
- discount/discount_present: 折扣
- total_amount: 总金额
- vat_present/vat_amount: 增值税
- paid: 支付状态 (0/1)
- online_paid: 在线支付状态
- invoice_lock: 锁定状态
- expired: 过期状态
- invoice_deadline: 截止日期
- shipping_info_required: 是否需要货运信息
invoice_item (发票项目)
- item_id: 项目ID
- invoice_id: 关联发票
- item_title/description: 项目名称/描述
- item_price/count/total: 价格/数量/小计
- parcel_*: 货运包裹信息
invoice_payments (支付记录)
- payment_id: 支付ID
- invoice_id: 发票ID
- gateway_key: 支付网关
- transaction_id: 交易号
- amount/fee_amount: 金额/手续费
- created_date: 支付时间
- transaction_info: 交易详情
users (用户表)
- user_id: 用户ID
- username/password: 用户名/密码
- firstname/lastname: 姓名
- email: 邮箱
- group_id: 用户组
- status/active: 账户状态
- avatar: 头像
- language_id: 默认语言
6.2 系统表
- auto_email_messages: 邮件模板
- ci_sessions: 会话存储
- gallery/gallery_image: 图片库
- gateways: 支付网关配置
- languages: 语言配置
- menu: 导航菜单
- settings: 系统设置
- social_links: 社交链接
- titles: 标题翻译
- translations: 通用翻译
- upload_files: 上传文件管理
- countries: 国家列表
- fees/fees_payments: 费用管理
7. 路由配置
主要路由规则 (/nodcms/config/routes.php):
// 默认控制器$route['default_controller'] = "General/setLanguagePrefix";// 管理后台$route['admin']= "General_admin/dashboard";$route['admin/(.+)']= "General_admin/$1";// 会员中心$route['user/dashboard'] = "General_members/dashboard";$route['user/account']= "General_members/account";// 支付相关$route['([a-z]{2})/invoice/([0-9]+)/([a-zA-Z0-9-]+)'] = "Payment/invoice/$1/$2/$3";// 注册登录$route['([a-z][a-z])/(login|logout)']= "Registration/$2/$1";$route['([a-z][a-z])/user-registration']= "Registration/userRegistration/$1";8. 核心配置文件
8.1 数据库配置
文件: /nodcms/config/database.php
$db['default'] = array( 'hostname' => 'localhost', 'username' => 'nodpay_11', 'password' => 'nodpay_11', 'database' => 'nodpay_11', 'dbdriver' => 'mysqli', 'char_set' => 'utf8',);8.2 系统配置
文件: /nodcms/config/nodcms.php
- 模板配置 (frontend, backend, membership)
- 自动加载模型
- 自动加载辅助函数
- 邮件自动消息模板
- 默认系统设置
8.3 支付API配置
文件: /nodcms/third_party/Payment/config/nodcms.php
$config['payment_apis'] = array( 'paypal'=>array( 'key'=>"paypal", 'name'=>"PayPal", 'class'=>"Paypal", 'require_fields'=>array("paypal_client_id","paypal_secret"), ), 'stripe'=>array( 'key'=>"stripe", 'name'=>"Stripe", 'class'=>"Stripe", 'require_fields'=>array("stripe_secret_key", "stripe_publishable_key"), ),);9. 核心业务逻辑
9.1 支付流程
- 用户创建发票 (invoice)
- 添加发票项目 (invoice_item)
- 选择支付网关
- 跳转到支付网关 (PayPal/Stripe)
- 支付完成后 webhook 回调
- 更新发票支付状态
- 发送支付确认邮件
9.2 发票生命周期
- 创建: 生成发票基本信息
- 待支付: 等待用户支付
- 支付中: 用户正在支付 (pending)
- 已支付: 支付完成
- 已完成: 交付货物/下载文件
- 过期: 超过截止日期
9.3 用户认证
- Session-based 认证
- 密码使用 MD5 加密 (默认配置)
- 支持用户组权限 (Admin: group_id=1, Users: group_id=20)
10. 重要视图文件
前端视图 (/nodcms/views/):
- frontend/ - 前端页面模板
- membership/ - 会员页面模板
- admin/ - 管理后台模板
- emails/ - 邮件模板
支付视图 (/nodcms/third_party/Payment/views/):
- frontend/invoice.php - 发票页面
- admin/payment_dashboard.php - 支付仪表板
- admin/invoice_receipt.php - 收据页面
11. 第三方库
库名 | 用途 |
CKEditor | 富文本编辑器 |
Ion.RangeSlider | 范围滑块 |
Bootstrap | UI框架 |
PayPal SDK | PayPal支付集成 |
Stripe SDK | Stripe支付集成 |
12. 总结
NodPay 是一个功能完整的支付发票管理系统,具有以下特点:
- 多语言支持: 英语、德语
- 多支付网关: PayPal + Stripe
- 完整的发票流程: 创建 -> 支付 -> 完成
- 用户管理系统: 注册、登录、权限控制
- 管理后台: 全面的系统配置和管理功能
- 可扩展架构: 基于 NodCMS/CodeIgniter 框架,支持模块化扩展
核心代码位于 /nodcms/ 目录,第三方扩展位于 /nodcms/third_party/ 目录。数据库使用 MySQL,字符集 UTF-8。
13. 默认管理员账号
- 用户名: admin
- 密码: 123456 (MD5: e10adc3949ba59abbe56e057f20f883e)
