Documentation

描述

Halo 支付插件 (Plugin Payment) - 详细版

功能完备的一站式支付解决方案,为 Halo 博客生态提供企业级支付能力。

支付插件-插件主界面预览.png

目录


概述

Halo 支付插件是专为 Halo 博客系统设计的支付管理解决方案。插件采用现代化架构设计,支持响应式编程模型,提供完整的支付生命周期管理能力。

设计理念

  • 统一接口:所有支付渠道通过统一的 PaymentService 接口抽象,降低接入成本
  • 可扩展性:基于 Halo 扩展点机制,支持自定义支付渠道开发
  • 安全优先:多层安全校验机制,保障交易安全
  • 商户生态:内置完整的商户管理平台,支持多商户运营模式

功能特性

核心功能

功能模块说明
多渠道支付支持 8 大支付渠道,16+ 种支付方式
商户平台完整的商户入驻、审核、管理系统
结算系统自动/手动结算,灵活的费率配置
提现管理多账户提现,完整审核流程
数据统计实时交易概览,多维度数据分析
事件通知支付状态变更实时通知
定时任务自动同步支付状态,定时结算

支付能力

  • 发起支付(明文/加密)
  • 查询支付状态
  • 关闭支付订单
  • 异步回调处理
  • 支付状态同步

支付插件-支付流程.png


支付渠道详解

国内支付

支付宝

  • 当面付 (FACE_TO_FACE_PAYMENT):适用于线下扫码支付场景
  • 手机网站支付 (QUICK_WAP_WAY):适用于移动端网页支付
  • 电脑网站支付 (FAST_INSTANT_TRADE_PAY):适用于 PC 端网页支付

配置项:appId、应用私钥、支付宝公钥、sellerId

支付插件-支付宝配置.png

微信支付

  • 原生支付 (WECHATPAY_NATIVE):生成二维码,用户扫码支付
  • H5 支付 (WECHATPAY_H5):移动端浏览器内调起微信支付
  • JSAPI 支付 (WECHATPAY_JSAPI):微信公众号/小程序内支付

配置项:appId、商户号、商户私钥证书、APIv3 证书序列号

支付插件-微信支付配置.png

聚合支付平台

易支付

  • 支持支付宝、微信两种支付方式
  • 通过接口地址对接第三方易支付平台
  • 支持 MD5/RSA 签名方式

支付插件-易支付配置.png

源支付

  • 支持支付宝、微信两种支付方式
  • 通过接口地址对接第三方源支付平台
  • 支持 MD5/RSA 签名方式

支付插件-源支付配置.png

虎皮椒

  • 支持支付宝、微信两种支付方式
  • 通过 appId/appSecret 对接
  • 支持 MD5 签名方式

支付插件-虎皮椒配置.png

国际支付

PayPal

  • 支持 Checkout 支付流程
  • 支持沙箱/Live 环境切换
  • 支持多币种配置
  • 支持 Webhook 签名验证

配置项:clientId、clientSecret、WebhookId

支付插件-PayPal配置.png

Stripe

  • 支持 Checkout 支付流程
  • 支持 Webhook 签名验证
  • 支持优惠码配置
  • 支持账单地址收集

配置项:secretKey、publishableKey、webhookSecret

支付插件-Stripe配置.png

自定义支付

  • 通用支付接口,支持对接任意支付平台
  • 支持 MD5/RSA 签名方式
  • 可配置回调地址、查询接口等

商户平台

功能概述

商户平台是插件内置的多商户管理系统,支持商户入驻、审核、结算、提现等完整业务流程。

支付插件-商户平台概览.png

商户入驻

  1. 用户在用户中心提交入驻申请
  2. 填写商户信息(名称、业务类型、联系方式等)
  3. 平台管理员审核申请
  4. 审核通过后商户激活

支付插件-商户入驻申请.png

商户状态

状态说明
PENDING待审核
ACTIVE已激活
REJECTED已拒绝
SUSPENDED已停用

商户管理

  • 商户信息编辑
  • 商户状态管理
  • 商户专属费率配置
  • 商户提现账户管理(支持支付宝/微信/银行卡)

支付插件-商户管理.png


结算系统

结算方式

自动结算

  • 通过 Cron 表达式配置结算周期
  • 默认每月 1 日执行
  • 系统自动计算待结算订单并生成结算记录

手动结算

  • 管理员可手动触发结算
  • 支持按商户或按订单 ID 结算
  • 立即生成结算记录

支付插件-结算管理.png

结算配置

  • 系统默认手续费率
  • 商户专属手续费率
  • 结算周期配置
  • 结算审核开关

结算状态

状态说明
PENDING待结算
SUCCESS已结算
FAILED结算失败

提现管理

提现流程

  1. 商户提交提现申请
  2. 系统校验可提现余额
  3. 冻结提现金额
  4. 管理员审核(可选)
  5. 处理提现打款
  6. 提现完成/失败

支付插件-提现流程.png 支付插件-提现管理.png

提现账户

支持多种提现账户类型:

  • 支付宝
  • 微信
  • 银行卡

支付插件-提现账户.png

提现状态

状态说明
PENDING_AUDIT待审核
APPROVED已批准
REJECTED已拒绝
PROCESSING处理中
COMPLETED已完成
FAILED已失败

安全机制

签名验证

每个支付渠道都有独立的签名验证机制:

渠道签名方式
支付宝RSA2 签名 + SDK 验签
微信支付APIv3 证书签名 + NotificationParser 验签
易支付/源支付MD5/RSA 签名
虎皮椒MD5 签名
PayPalWebhook 签名验证 API
StripeHmacSHA256 Webhook 签名

数据校验

  • 金额校验:回调时校验支付金额与本地记录一致
  • appId/sellerId 校验:支付宝回调二次校验
  • 订单重复检测:发起支付前检查是否已存在相同订单
  • URL 安全校验:回调地址必须是外网可访问、非私有 IP

防重机制

  • 防重复通知:通过注解标记已通知状态
  • 防重复支付:订单号唯一性校验
  • 并发控制:定时任务禁止并发执行

系统架构

技术栈

  • 后端:Java 21 + Spring WebFlux (响应式)
  • 前端:Vue 3 + Tailwind CSS + Vite
  • 构建:Gradle 多模块

模块结构

plugin-payment/
├── api/          # API 模块 - 接口定义、支付服务实现
├── app/          # 应用模块 - 主类、端点、事件、调度
├── ui/           # 前端模块 - Vue 3 管理界面
└── api-docs/     # OpenAPI 文档

核心组件

  • PaymentService:支付服务接口,各渠道实现
  • DirectPaymentProvider:支付路由,分发请求到对应渠道
  • PaymentInfoReconciler:支付状态协调器,发布事件
  • PaymentScheduleRegistrar:定时任务注册器
  • PaymentNotifyService:通知服务

扩展点

  • payment-service:支付服务扩展点,支持自定义支付渠道
  • payment-provider:支付提供器扩展点,为其他插件提供支付能力

配置说明

通用设置

  • 密钥对管理(RSA)
  • 回调域名配置
  • 支付超时时间
  • 定时任务频率
  • 通知用户配置
  • 支付渠道选择

支付插件-通用设置-aIAN.png

支付渠道设置

每个支付渠道独立配置:

  • 启用/禁用开关
  • 渠道参数(appId、密钥等)
  • 沙箱/生产环境切换

商户平台设置

  • 平台启用开关
  • 入驻开关
  • 商户角色配置
  • 开户费设置
  • 结算配置
  • 协议条款管理
  • 业务类型管理

支付插件-商户平台设置.png