Files
hdk-pay/llm.txt
李东云 6bc423417c refactor: 适配项目目录结构从 app/ 改为 src/
修改 run-in-docker.sh 项目名以保持一致性
更新测试脚本和 composer.json 中的目录引用
添加项目文档和计划文件
2025-11-28 18:07:48 +08:00

214 lines
6.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HDK-Pay 项目分析报告
## 1. 项目基本信息
- **项目名称**: HDK-Pay
- **项目类型**: PHP 支付平台 SDK
- **描述**: 用于连接 LuxPay 支付平台的 SDK
- **版本**: 1.11.1
- **PHP 版本要求**: >= 8.2
- **许可证**: MIT
## 2. 技术栈
### 2.1 核心依赖
- **PHP**: >= 8.2
- **Hyperf**: ~3.1.0 (框架)
- **Guzzle**: 用于 HTTP 请求
- **MoneyPHP**: 货币处理
- **Carbon**: 日期时间处理
- **BCMath 扩展**: 高精度数学计算
### 2.2 开发依赖
- **PHPUnit**: 单元测试
- **Pest**: 测试框架
- **PHPStan**: 静态代码分析
- **PHP-CS-Fixer**: 代码风格检查
## 3. 项目架构
### 3.1 目录结构
```
├── src/ # 源代码目录
│ ├── Application/ # 应用层
│ │ ├── Command/ # 命令行工具
│ │ └── Dto/ # 数据传输对象
│ ├── Domain/ # 领域层
│ │ ├── Account/ # 账户领域
│ │ ├── Invoice/ # 发票领域
│ │ ├── Product/ # 产品领域
│ │ └── Transaction/ # 交易领域
│ ├── Enum/ # 枚举类
│ ├── Infrastructure/ # 基础设施层
│ │ └── Repository/ # 仓库实现
│ ├── Resource/ # 资源层
│ ├── Sdk/ # SDK 接口
│ ├── Trait/ # 特质
│ └── ConfigProvider.php # 配置提供者
├── tests/ # 测试目录
├── publish/ # 发布配置
├── scripts/ # 脚本工具
├── composer.json # Composer 配置
└── README.md # 项目说明
```
### 3.2 架构模式
- **领域驱动设计 (DDD)**: 项目采用 DDD 架构,清晰划分了领域层、应用层和基础设施层
- **依赖倒置原则**: 通过接口定义依赖,实现了高层模块与低层模块的解耦
- **聚合根模式**: 核心领域对象如 TransactionRecord、Invoice 等都继承自 AggregateRoot
## 4. 核心功能模块
### 4.1 账户管理
- **账户余额**: 管理用户账户余额和积分
- **积分日志**: 记录积分的增减变动
- **积分类型**: 支持多种积分类型管理
### 4.2 交易管理
- **订单处理**: 支持创建、查询、更新订单
- **支付类型**: 支持卡片支付和积分支付
- **订单状态**: 完整的订单生命周期管理
- **交易记录**: 详细的交易记录和退款记录
### 4.3 发票管理
- **发票创建**: 支持创建发票
- **地址管理**: 支持常用地址管理
- **发票产品**: 管理发票中的产品信息
### 4.4 产品管理
- **充值产品**: 管理充值产品
- **产品类型**: 支持多种产品类型
- **充值效果**: 定义充值产品的效果
## 5. 主要领域模型
### 5.1 账户领域
- **AccountBalance**: 账户余额聚合根
- **PointsBalance**: 积分余额值对象
- **PointLog**: 积分日志聚合根
### 5.2 交易领域
- **TransactionRecord**: 交易记录聚合根
- **Item**: 交易项值对象
- **CardTransaction**: 卡片交易值对象
- **PointTransaction**: 积分交易值对象
### 5.3 发票领域
- **Invoice**: 发票聚合根
- **Address**: 地址值对象
- **InvoiceInfo**: 发票信息值对象
- **InvoiceProduct**: 发票产品值对象
### 5.4 产品领域
- **RechargeProduct**: 充值产品聚合根
- **ProductItem**: 产品项实体
- **RechargeEffect**: 充值效果值对象
## 6. RPC 服务
### 6.1 核心 RPC 类
- **OrderRpc**: 订单相关 RPC 服务
- **GoodsRpc**: 商品相关 RPC 服务
- **StripeRpc**: Stripe 支付相关 RPC 服务
- **WechatRpc**: 微信支付相关 RPC 服务
### 6.2 主要接口
- **create**: 创建订单
- **webhooksNotificationHandler**: 处理 Webhooks 通知
## 7. 配置说明
### 7.1 配置文件
- **payment.php**: 支付平台配置文件,包含基础 URI 等配置
### 7.2 配置项
- **http_request.pay.rpc_base_uri**: RPC 基础 URI通常为 https://pay.luxcreo.cn 或 https://test-pay.luxcreo.cn
- **payment.base_uri**: 支付平台基础 URI
## 8. 测试策略
### 8.1 测试类型
- **单元测试**: 测试单个类或方法
- **功能测试**: 测试完整的业务流程
- **集成测试**: 测试不同模块之间的交互
### 8.2 测试框架
- **PHPUnit**: 用于单元测试和功能测试
- **Pest**: 用于更简洁的测试编写
### 8.3 测试执行
```bash
vendor/bin/phpunit # 运行所有测试
composer test # 运行测试脚本
```
## 9. 开发流程
### 9.1 运行环境说明
项目通过本地运行 Docker 来创建运行容器,因此所有执行的终端命令都应该使用以下方式之一:
- 使用 `run-in-docker.sh` 脚本:`./run-in-docker.sh <command>`
- 使用 `scripts/test/` 下的脚本:`./scripts/test/<script-name>.sh`
### 9.2 安装依赖
```bash
./run-in-docker.sh composer install
```
### 9.3 代码风格检查
```bash
./run-in-docker.sh composer cs-fix
# 或使用专门的脚本
./scripts/test/code-style-check.sh
```
### 9.4 代码风格修复
```bash
./scripts/test/code-style-fix.sh
```
### 9.5 静态代码分析
```bash
./run-in-docker.sh composer analyse
# 或使用专门的脚本
./scripts/test/static-analysis.sh
```
### 9.6 运行测试
```bash
./run-in-docker.sh composer test
# 或使用专门的脚本
./scripts/test/all-tests.sh # 运行所有测试
./scripts/test/unit-tests.sh # 运行单元测试
```
### 9.7 CI 流程
```bash
./scripts/test/ci.sh
```
## 10. 发布与部署
### 10.1 发布配置
```bash
php bin/hyperf.php vendor:publish singularity/hdk-pay
```
### 10.2 部署方式
- 支持 Docker 部署
- 支持传统 PHP-FPM 部署
- 支持 Hyperf 协程部署
## 11. 总结
HDK-Pay 是一个基于 Hyperf 框架开发的支付平台 SDK采用领域驱动设计架构支持多种支付方式和交易类型。项目具有清晰的代码结构、完整的测试覆盖和良好的扩展性适合作为企业级支付解决方案的基础组件。
主要特点:
- 基于 DDD 架构,领域模型清晰
- 支持多种支付方式和交易类型
- 完整的订单生命周期管理
- 强大的发票管理功能
- 灵活的配置和扩展机制
- 完善的测试覆盖
- 支持多环境部署
该项目为企业提供了一个可靠、安全、易于扩展的支付解决方案,能够满足不同业务场景的支付需求。