Skip to content

lucaswang420/Pay-plugin-example

Repository files navigation

Pay Plugin for Drogon Framework

Version: 1.0.0 | Status: ✅ Production Ready | License: MIT

Tests Performance Documentation

基于 Drogon 框架的企业级支付处理插件,支持支付宝沙箱、微信支付等多种支付平台,采用现代化的服务架构设计,配备完整的前端管理界面。

特性架构快速开始文档性能贡献


🎯 项目概述

Pay Plugin 是一个生产级的支付处理系统,展示了如何在 C++ Drogon 环境下集成第三方支付平台(支付宝、微信支付等)。项目采用服务导向架构(SOA),实现了高内聚、低耦合的代码组织,配备完整的 Vue 3 前端管理界面,具备完整的测试覆盖、监控告警和运维自动化能力。

关键成就

  • 测试覆盖率: 80%+ (107+ 测试用例)
  • 性能卓越: P50 < 15ms, P95 < 39ms, P99 < 46ms
  • 生产就绪: 完整的部署、监控、安全文档
  • CI/CD: 自动化测试和部署管道
  • 零技术债务: 所有测试完成,无遗留问题

✨ 核心特性

支付能力

  • 💳 多支付渠道: 支付宝沙箱、微信支付、易扩展支持其他平台
  • 🔄 幂等性保护: 防止重复支付和退款
  • 💰 完整退款流程: 支持部分退款和全额退款
  • 📱 支付回调处理: 异步回调验证和处理
  • 📊 对账功能: 自动对账和报表生成
  • 🎨 前端管理界面: Vue 3 + Element Plus,完整的支付流程管理

技术特性

  • 🏗️ 服务架构: 清晰的服务边界和职责分离
  • 🔐 API认证: 基于API Key和Scope的权限控制
  • 📈 可观测性: Prometheus指标 + Grafana仪表板
  • 🛡️ 安全加固: 完整的安全检查清单和最佳实践
  • 🚀 高性能: 异步处理 + 连接池优化
  • ⚙️ 环境配置: 支持.env文件配置,无硬编码敏感信息

开发体验

  • 🧪 测试覆盖: 单元测试 + 集成测试 + E2E测试
  • 📚 完整文档: 部署、运维、API文档齐全
  • 🤖 自动化: CI/CD管道自动化测试和部署
  • 🔧 运维脚本: 备份、恢复、日志查看等脚本

🏗️ 架构设计

服务架构

项目采用服务导向架构,将支付流程拆分为5个核心服务:

PayPlugin (入口)
    │
    ├── PaymentService       → 支付创建和查询
    ├── RefundService        → 退款处理和查询
    ├── CallbackService      → 支付回调处理
    ├── IdempotencyService   → 幂等性管理
    └── ReconciliationService → 对账和报表

技术栈

后端:

  • 框架: Drogon (C++ Web Framework)
  • 数据库: PostgreSQL 13+
  • 缓存: Redis 6.0+
  • 构建: CMake 3.15+ + Conan
  • 测试: Google Test
  • 监控: Prometheus + Grafana

前端:

  • 框架: Vue 3 (Composition API)
  • UI组件: Element Plus
  • 状态管理: Pinia
  • HTTP客户端: Axios
  • 构建工具: Vite

项目结构

Pay-plugin-example/
├── PayBackend/              # C++ 后端应用
│   ├── controllers/         # HTTP 路由层
│   ├── services/            # 业务服务层
│   ├── plugins/             # Drogon 插件 (支付宝/微信)
│   ├── models/              # ORM 模型
│   ├── filters/             # 认证过滤器
│   ├── utils/               # 工具类
│   ├── test/                # 测试 (107+ tests)
│   ├── sql/                 # 数据库迁移脚本
│   ├── scripts/             # 构建和部署脚本
│   ├── docs/                # 后端文档
│   ├── config.json          # 应用配置
│   └── .env                 # 环境变量 (本地开发)
├── PayFrontend/             # Vue 3 前端应用
│   ├── src/
│   │   ├── views/           # 页面组件
│   │   ├── components/      # 可复用组件
│   │   ├── api/             # API 客户端
│   │   └── stores/          # Pinia 状态管理
│   ├── public/              # 静态资源
│   └── .env.local           # 前端环境变量
├── docs/                    # 项目级文档
│   └── superpowers/         # 开发计划和报告
├── scripts/                 # 构建脚本
├── certs/                   # 证书目录 (不提交)
└── README.md                # 本文件

🚀 快速开始

系统要求

最低配置:

  • CPU: 4核, 内存: 2GB, 磁盘: 10GB

推荐配置:

  • CPU: 8+核, 内存: 4GB+, 磁盘: 20GB+ SSD

软件依赖:

  • PostgreSQL 13.0+
  • Redis 6.0+
  • Drogon Framework (最新稳定版)
  • Conan 1.40+
  • Visual Studio 2019+ (Windows) / GCC 7+ (Linux)
  • CMake 3.15+

安装和部署

1. 克隆项目

git clone <repository-url>
cd Pay-plugin-example/PayBackend

2. 安装依赖

# Windows
conan install . --build=missing

# Linux
conan install . --build=missing -s build_type=Release

3. 编译项目

# Windows (必须使用Release模式)
scripts\build.bat

# Linux
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

4. 配置数据库

-- 创建数据库
CREATE DATABASE pay_production;
CREATE USER pay_user WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE pay_production TO pay_user;

5. 配置环境变量

创建 .env 文件(参考 .env.example):

# 数据库配置
DB_HOST=localhost
DB_PORT=5432
DB_NAME=pay_production
DB_USER=pay_user
DB_PASSWORD=your_password

# Redis配置
REDIS_HOST=localhost
REDIS_PORT=6379

# API配置
API_KEY=your_api_key_here

# 支付宝沙箱配置
ALIPAY_APP_ID=your_app_id
ALIPAY_SELLER_ID=your_seller_id
ALIPAY_PRIVATE_KEY_PATH=./certs/alipay_private_key.pem
ALIPAY_PUBLIC_KEY_PATH=./certs/alipay_public_key.pem
ALIPAY_GATEWAY_URL=https://openapi.alipaydev.com/gateway.do

6. 启动后端服务

# Windows
.\build\Release\PayServer.exe

# Linux
./build/PayServer

7. 启动前端界面

cd PayFrontend
npm install
npm run dev

前端访问地址:http://localhost:5173

8. 验证部署

curl http://localhost:5566/health

预期响应:

{
  "status": "healthy",
  "timestamp": 1680739200,
  "services": {
    "database": "ok",
    "redis": "ok"
  }
}

详细的部署指南请参阅 deployment_guide.md


📊 性能指标

响应时间

指标 实际 目标 状态
P50 13-15ms < 50ms ✅ 超越 3-4倍
P95 15-39ms < 200ms ✅ 超越 5-10倍
P99 15-46ms < 500ms ✅ 超越 10-30倍

性能评级: ⭐⭐⭐⭐⭐ (5/5) - 卓越

吞吐量

  • 配置:4个工作线程,32个数据库连接,32个Redis连接
  • 理论并发:250-280 RPS
  • 实际测试:23-73 RPS (串行测试)

🧪 测试

测试覆盖率

总体覆盖率: 80%+ (107+ 测试用例)

模块覆盖:

  • PaymentService: 85% (20+ tests)
  • RefundService: 90% (19 tests)
  • CallbackService: 82% (37 tests)
  • IdempotencyService: 88% (8 tests)
  • ReconciliationService: 75% (5 tests)
  • Controllers/Filters: 80% (12 tests)
  • Utils: 92% (6 tests)

运行测试

cd PayBackend

# 运行所有测试
build/test/Release/PayBackendTests.exe

# 运行特定测试
build/test/Release/PayBackendTests.exe -r PaymentService
build/test/Release/PayBackendTests.exe -r RefundService

注意: 测试需要 PostgreSQL 和 Redis 服务运行。构建脚本会自动复制配置文件到测试目录。


📚 文档

用户文档

技术文档

文档索引


🔒 安全

安全特性

  • ✅ API Key 认证
  • ✅ Scope-based 权限控制
  • ✅ 幂等性保护
  • ✅ SQL 注入防护
  • ✅ HTTPS 支持
  • ✅ 敏感数据脱敏

安全最佳实践

详细的安全指南请参阅 security_checklist.md


🤝 贡献

欢迎贡献代码!请遵循以下流程:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

开发规范

  • 遵循现有代码风格
  • 添加测试覆盖新功能
  • 更新相关文档
  • 确保 CI/CD 通过

📜 开源协议

本项目采用 MIT License 协议开源。


🙏 致谢


📞 联系方式

  • 问题反馈:GitHub Issues
  • 文档:PayBackend/docs/
  • 邮件:[项目维护者邮箱]

⬆ 返回顶部

Made with ❤️ by Pay Plugin Team

版本: v1.0.0 | 状态: ✅ Production Ready

About

Payment plugin with drogon web framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors