PayServer 是一个完整的个人收款解决方案,由三个核心组件组成:
- Server - Go 后端 API 服务,处理订单、记录匹配、Webhook 回调
- Admin - Next.js 管理后台,订单/应用/Agent 管理,数据统计
- Agent - Flutter 移动应用,监听支付通知并上报服务端
- 🔔 实时通知 - 设备收到付款时立即通知后端服务
- 🔌 插件化存储 - 支持 Supabase / PostgreSQL / MySQL
- 📱 移动端采集 - Flutter Agent 后台监听通知
- 🎛️ 管理后台 - 现代化 Next.js Dashboard
- 🔐 安全认证 - JWT + Supabase Auth
- 🚀 易于部署 - 支持 SaaS 和自托管
- ✍️ 手动录入 - 支持手动补录收款记录
- 🔋 后台保活 - 支持电池优化白名单和开机自启
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Agent │────▶│ Server │◀────│ Admin │
│ (Flutter) │ │ (Next.js) │ │ (Next.js) │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
┌──────▼──────┐
│ Database │
│ (Supabase) │
└─────────────┘
| 开始 | 选择服务 | 添加服务 | 关于 |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
cd admin
cp .env.example .env.local
# 编辑 .env.local 配置 Supabase
pnpm install
pnpm devcd agent
flutter pub get
flutter runcd server
cp .env.example .env
# 编辑 .env 配置数据库连接
go run main.go- 创建订单 - 外部应用通过 API 创建待支付订单
- 调度 Agent - 系统自动选择可用 Agent 和支付方式
- 监听收款 - Agent 监听支付宝/微信收款通知
- 自动匹配 - 收款记录与待支付订单自动匹配
- 回调通知 - 支付成功后触发 Webhook 回调
- Admin 后台:收款记录页面支持手动录入
- Agent 端:首页 FAB 按钮支持手动录入收款
- 支持选择支付渠道(微信/支付宝)和输入金额
Agent 支持以下保活机制:
- 前台服务通知
- 电池优化白名单
- 开机自动启动
- 定时心跳上报
payserver/
├── server/ # Go 后端 (可选)
│ ├── apis/ # HTTP handlers
│ ├── core/ # 核心业务逻辑
│ ├── server/ # HTTP server
│ └── store/ # 存储层 (postgres/supabase/mysql)
├── admin/ # Next.js 管理后台 + API
│ ├── app/ # App Router
│ ├── components/ # UI 组件
│ └── lib/ # 服务层 + 工具库
├── agent/ # Flutter 移动端
│ ├── lib/core/ # 核心服务 (监听/电池)
│ ├── lib/data/ # 数据层 (API/数据库)
│ └── lib/presentation/ # UI (页面/组件)
└── docs/ # 文档
curl -X POST "http://localhost:3000/api/v1/order?appid=YOUR_APP_ID&method=wechat" \
-H "Content-Type: application/json" \
-d '{
"number": "ORDER-001",
"name": "测试商品",
"price": 1999,
"redirect_url": "https://example.com/success"
}'curl -X POST "http://localhost:3000/api/v1/records" \
-H "Content-Type: application/json" \
-d '{
"agent_uid": "YOUR_AGENT_UID",
"type": "wechat",
"amount": 1999,
"number": "WX-PAY-001"
}'curl "http://localhost:3000/api/v1/order/ORDER_UID/status"
# 返回: {"status": 2} // 1=pending, 2=paid, 3=expired, 4=canceled| 文档 | 说明 |
|---|---|
| 架构设计 | 系统整体架构设计 |
| API 规范 | RESTful API 接口文档 |
| 存储层设计 | 插件化数据库架构 |
| Admin 设计 | 管理后台设计 |
| Agent 设计 | Flutter 端设计 |
| 组件 | 技术 |
|---|---|
| Server | Go 1.21+, gorilla/mux, GORM |
| Admin | Next.js 14, React, Tailwind CSS, Supabase |
| Agent | Flutter 3.10+, Riverpod, Drift |
| Database | Supabase / PostgreSQL / MySQL |
- Go 后端核心 API
- 插件化存储层
- Flutter Agent 通知监听
- Next.js Admin 基础框架
- Next.js API 服务层
- 手动录入收款记录
- Agent 后台保活 (电池优化/开机启动)
- 收款记录列表页
- Admin Dashboard 数据可视化
- Agent 扫码绑定
- Webhook 重试调度器
- 多 Agent 负载均衡
MIT



