API 总览

本文按路由清单给出全量端点一览(来源:后端 handler 注册代码 + Swagger 注解,swag v2.0.0)。 字段级说明、请求 / 响应示例、错误码请查阅:

  • 运行时 Swagger UI:http://<backend>:<port>/swagger/index.html
  • API 集成指南(OAuth2 商户接入全流程)

认证方式速查

平面 中间件 携带方式 说明
/api/v1/* 写操作 JWTAuth Authorization: Bearer <jwt> 管理员会话(登录接口返回的 token 存在 Cookie auth_token,前端自动携带)
/api/v2/* BearerMiddleware.Authenticate + RequireScope(scope) Authorization: Bearer <oauth_token> 商户 / 第三方应用,按 scope 鉴权
公开接口 见各表中「公开」标注

admin scope 自动通过所有 scope 检查(等价超管)。OAuth2 token 默认有效期 1 小时。

公共 / 基础设施

方法 路径 认证 说明
GET / 公开 服务欢迎页
GET /health 公开 健康检查(Docker HEALTHCHECK 使用)
GET /swagger/*any 公开 Swagger UI
GET /api/v1/info 公开 服务信息(版本等)
GET /api/v1/payment/channels 公开 三渠道启用状态(enabled/configured/fromDB/sandbox/reason
POST /oauth/token 公开 OAuth2 换取 token(client_credentials)
GET /oauth/scopes 公开 有效 scope 列表(前端「API 应用管理」实时拉取)
POST /oauth/revoke Bearer 吊销 token

登录 / 账号(JWT)

方法 路径 认证 说明
POST /api/v1/login 公开 管理员登录 {username,password} → JWT
POST /api/v1/register 公开 注册(取决于 Auth.EnableRegister
POST /api/v1/logout JWT 退出登录
GET /api/v1/profile JWT 当前用户资料
GET /api/v1/verify JWT 校验 token
POST /api/v1/refresh JWT 刷新 token

支付(Payment)

统一收银接口按订单支付方式自动路由到支付宝 / 微信 / PayPal,支持统一下单 / 查单 / 关单 / 取消 / 退款

方法 路径 v1 (JWT) v2 (OAuth2 scope)
POST /payment/pay payment:write
GET /payment/query/:outTradeNo payment:read
GET /payment/orders order:read
POST /payment/cancel/:outTradeNo payment:write
POST /payment/close/:outTradeNo payment:write
POST /payment/refund payment:write
POST /payment/notify/alipay ✅(v1 公开) v2 公开(渠道回调)
POST /payment/notify/wechat ✅(v1 公开) v2 公开(渠道回调)
POST /payment/notify/paypal ✅(v1 公开) v2 公开(渠道回调)
GET /payment/return/paypal 公开 公开(PayPal 同步返回)

完整前缀:v1 为 /api/v1/payment,v2 为 /api/v2/payment

支付渠道配置(数据库热加载)

方法 路径 v1 (JWT) v2 (OAuth2 scope)
GET /payment/config/list config:read
GET /payment/config/:provider config:read
POST /payment/config/:provider config:write
PUT /payment/config/:provider/toggle config:write
GET /payment/config/audit-logs

完整前缀:/api/v1/payment/config/api/v2/payment/config。保存即热加载,无需重启; 配置 / 证书变更会写入审计日志(tb_payment_audit)。provideralipay | wechat | paypal

证书管理(支付证书)

方法 路径 v1 (JWT) v2 (OAuth2 scope)
POST /certs/upload cert:manage
POST /certs/upload/file cert:manage
POST /certs/list cert:manage
GET /certs/:id cert:manage
DELETE /certs/:id cert:manage
POST /certs/:id/default cert:manage
GET /certs/:id/download cert:manage

完整前缀:/api/v1/api/v2。证书内容落盘 runtime/certs/ 并自动回写渠道配置、热加载。

订单(Orders)

方法 路径 v1 (JWT) v2 (OAuth2 scope)
GET /orders order:read
GET /orders/stats order:read
GET /orders/trend order:read
GET /orders/payment-stats order:read
GET /orders/status-stats order:read
GET /orders/:orderId order:read
GET /orders/no/:orderNo order:read
DELETE /orders/:orderId order:write

完整前缀:/api/v1/api/v2

用户 / 会员(Users)

方法 路径 v1 (JWT) v2 (OAuth2 scope)
GET /users user:read
GET /users/stats user:read
GET /users/:userId user:read
PUT /users/:userId user:write
POST /users/:userId/vip user:write
POST /users/:userId/coin user:write
PUT /users/:userId/status user:write

完整前缀:/api/v1/api/v2。VIP 会员即 is_vip = true 的用户。

商品(Products)

方法 路径 公开 v1 (JWT) v2 (OAuth2 scope)
GET /products product:read
GET /products/:productId product:read
POST /products product:write
PUT /products/:productId product:write
DELETE /products/:productId product:write
PUT /products/:productId/status product:write

完整前缀:/api/v1/api/v2。读接口公开(商品目录无需鉴权),写接口需 JWT / scope。

项目(Projects)

方法 路径 v1 (JWT) v2 (OAuth2 scope)
GET /projects project:read
GET /projects/stats project:read
GET /projects/:projectId project:read
POST /projects project:write
PUT /projects/:projectId project:write
DELETE /projects/:projectId project:write

金币(Coins)

方法 路径 公开 v1 (JWT) v2 (OAuth2 scope)
GET /coins/records coin:read
GET /coins/stats coin:read
GET /coins/trend coin:read
GET /coin/charge-config 公开(充值配置)

API 应用管理(OAuth2 Client CRUD)

提供两条并行入口(解决“创建第一个应用”的引导死锁):

方法 v1 路径(管理员 JWT,控制台) v2 路径(Bearer + apiapp:manage 说明
GET /api/v1/api-apps /api/v2/api-apps 应用列表
GET /api/v1/api-apps/:appId /api/v2/api-apps/:appId 应用详情
POST /api/v1/api-apps /api/v2/api-apps 创建应用(生成 client_id / secret)
PUT /api/v1/api-apps/:appId /api/v2/api-apps/:appId 编辑配置
PUT /api/v1/api-apps/:appId/status /api/v2/api-apps/:appId/status 启用 / 禁用
DELETE /api/v1/api-apps/:appId /api/v2/api-apps/:appId 删除应用

控制台「API 应用管理」页面(/dashboard/api-apps)走 v1 管理员 JWT(无需先持有 API 应用凭证,否则会死锁); v2 供已授权的外部应用调用。密钥仅创建 / 轮换时一次性展示(bcrypt 存储)。

SkillPay(SkillHub X402)

方法 路径 v2 (OAuth2 scope) 说明
POST /api/v2/skillpay/resource skillpay:call 首次调用返回 402 + L1 支付码;支付后再调用返回付费内容(X-Out-Trade-No 幂等)
GET /api/v2/skillpay/query/:outTradeNo skillpay:call 查询 SkillPay 订单状态
POST /api/v2/skillpay/refund skillpay:refund 退款

会员令牌(Membership Token)

方法 路径 v2 (OAuth2 scope) 说明
POST /api/v2/membership/issue membership:issue 签发会员令牌(付费后)
POST /api/v2/membership/verify membership:verify 验证会员令牌

Scope 全集

创建 API 应用时可勾选的 scope(GET /oauth/scopes 实时返回):

Scope 含义
payment:read / payment:write 查询支付订单 / 创建 · 退款 · 取消 · 关闭
order:read / order:write 查询订单列表 / 删除订单
user:read / user:write 查询用户 / 修改用户 · VIP · 金币
product:read / product:write 查询商品(本身公开)/ 管理商品
project:read / project:write 查询项目 / 管理项目
coin:read 查询金币记录
config:read / config:write 查看 / 更新支付渠道配置(管理级,仅授可信应用
cert:manage 证书上传 / 下载 / 删除(管理级
skillpay:call / skillpay:refund 调用 SkillPay / 退款
membership:issue / membership:verify 签发 / 验证会员令牌
apiapp:manage API 应用 CRUD
admin 超级权限,自动通过所有 scope 检查

订单状态码

状态码 含义
1 待支付
2 已扫码(未支付)
101 支付失败
201 已支付
300 已关闭(超时自动关单 / 手动关闭)
400 已退款

前端映射常量见 frontend/src/constants/options.ts。过期订单由 OrderScheduler 定时任务(每 5 分钟)自动关闭 15 分钟前未支付订单。

常见返回结构

后端统一返回结构(多数接口):{ "code": 200, "message": "success", "data": {...} },分页接口另含 total / pageNum / pageSize / totalPagescode = 200 表示成功。