Skip to content

Add pay-unify - #9479

Open
difyz9 wants to merge 2 commits into
1Panel-dev:devfrom
difyz9:app/pay-unify
Open

Add pay-unify#9479
difyz9 wants to merge 2 commits into
1Panel-dev:devfrom
difyz9:app/pay-unify

Conversation

@difyz9

@difyz9 difyz9 commented Sep 12, 2026

Copy link
Copy Markdown

应用信息

App Key pay-unify
名称 Pay-Unify 统一支付中台
类型 tool
标签 Tool
镜像 difyz9/pay-unify:2.0.2(Docker Hub,官方镜像)
架构 linux/amd64linux/arm64
仓库 https://github.com/difyz9/pay-unify
许可证 MIT

产品介绍

面向企业/开发者的统一支付中台:把多渠道支付接入、渠道密钥管理、商户授权、
变更审计收敛到一个容器里。支持支付宝 / 微信支付 / PayPal,内置管理控制台与
OAuth2 商户开放 API。

单镜像、单容器、单端口 —— 控制台为 100% 客户端组件,静态导出后由 Go
二进制 //go:embed 内嵌,前后端同源。因此不需要 Nginx 转发、不需要 Node
运行时、不需要前后端两个容器,在 1Panel 侧只需维护 1 个应用 / 1 个端口 / 1 份日志。

主要功能

  • 统一支付模型:下单 / 查询 / 关单 / 退款,三家渠道一套调用
  • 渠道热配置与证书管理:控制台保存即生效,无需重启
  • OAuth2 商户开放 API:Client Credentials + 细粒度 scope + IP 白名单 + 限流
  • 支付配置 / 证书操作审计日志
  • 控制台内置仪表盘、订单、商品、用户、积分等运营能力

包内容

apps/pay-unify/
├── logo.png            # 180x180, 8.1 KB
├── data.yml
├── README.md
├── README_en.md
└── 2.0.2/
    ├── data.yml
    ├── docker-compose.yml
    ├── data/{certs,logs}/
    └── scripts/init.sh

打包合规性

使用官方 1Panel-appstore-skills
的校验脚本自检通过:

$ python3 scripts/validate_app_package.py apps/pay-unify
OK: apps/pay-unify

要点:

  • 主服务 container_name: ${CONTAINER_NAME},加入 1panel-network(external)
  • labels.createdBy: "Apps"
  • 端口走 PANEL_APP_PORT_HTTP / rule: paramPort / type: number
  • 全部 ${...} 变量均在版本级 data.yml 声明;数据库依赖用 type: apps
    (MySQL / MariaDB / PostgreSQL,服务派生 ${PANEL_DB_PORT}
  • 密码类字段 type: password + random: true;i18n 覆盖 appstore 全部语言
  • init.sh 修正 data/certsdata/logs 属主:镜像以非 root(uid/gid 1000)
    运行,而 1Panel 以 root 创建挂载目录,不修正会导致证书上传失败

本地测试

已在 Docker 环境完成等价链路的端到端验证(与 1Panel 使用完全相同的
PANEL_DB_* 环境变量接口):

  • 安装后容器转 healthy(健康检查 GET /health/db
  • 控制台可正常访问并登录,创建支付渠道配置、上传证书后热加载生效
  • POST /oauth/token 换取 Bearer Token,调用 /api/v2/* 正常返回

镜像可用性

$ docker pull difyz9/pay-unify:2.0.2
$ docker manifest inspect difyz9/pay-unify:2.0.2 | grep architecture
  "architecture": "amd64"
  "architecture": "arm64"

镜像由 GitHub Actions 从 tag 自动构建并推送(.github/workflows/docker-publish.yml),
非本地手工上传。

2.0.2 安全修复

JWT.SecretKey 现在会拒绝公开占位值(replace-with / change-me /
your-secret 等)启动。此前示例密钥长度 43 字节能通过长度校验被静默接受,
任何人都能用仓库里可见的值伪造 isAdmin=true 的会话 token。
1Panel 安装时 PAY_JWT_SECRET 由表单强制生成,不受影响,但升级到最新版本更稳妥。

Pay-Unify 统一支付中台:聚合支付宝 / 微信支付 / PayPal,
内置管理控制台与 OAuth2 商户开放 API。

- 官方镜像:difyz9/pay-unify:2.0.1(Docker Hub,linux/amd64 + linux/arm64)
- 单容器单端口:前端静态导出后由 Go 二进制内嵌,无需额外 Nginx / Node
- 支持 1Panel 托管 MySQL / MariaDB / PostgreSQL
- 镜像 difyz9/pay-unify:2.0.2
- 2.0.2 修复:拒绝公开占位 JWT 密钥启动(此前示例密钥长度合法会被静默接受)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant