# Supay 聚合支付 **Repository Path**: yansaker/supay ## Basic Information - **Project Name**: Supay 聚合支付 - **Description**: Supay 聚合支付 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-04 - **Last Updated**: 2026-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Supay 聚合支付 个人收款聚合支付网关,可手机挂机 + 云端挂机。3.0 起改为**单文件部署**:收银台、管理后台、下单接口全部编译进一个可执行文件,运行时不依赖 Node、不需要额外部署前端。 #### 系统要求 - Linux x86_64(发行版下载的是 `supay-go-linux-amd64`) - MySQL 5.7+(**不再需要 Redis**) - 对外端口默认 `9090`(2.x 是 8080) #### 与 2.x 的区别 | | 2.x | 3.0 | |---|---|---| | 依赖 | MySQL + Redis | 仅 MySQL | | 前端 | 需单独放置静态目录 | 内嵌在二进制里 | | 端口 | 8080 | 9090 | | 初始化 | 改配置文件 | 网页安装向导,或环境变量 | #### 安装教程 在仓库上方的「发行版」下载 `supay-3.0.0-linux-amd64.tar.gz`,解压后包里是可执行权限的 `supay-go-linux-amd64` 和一份环境变量模板 `.env.example`。 **方式一:宝塔面板(网站 → Go 项目,推荐新手)** 宝塔的 Go 项目表单只有「项目路径 / 启动命令 / 运行用户 / 项目端口」,**没有环境变量输入框**,所以数据库不用提前注入变量,直接在安装向导里填(见第 4 步),配置会写在二进制同目录的 `supay-config.json`。本发行版是已编译好的静态二进制,服务器不需要再装 Go 环境。 1. 「数据库」里建库 `supay`,字符集 `utf8mb4`(也可以跳过这步,安装向导勾选自动建库)。 2. 「文件」进入 `/www/wwwroot/`,新建目录 `supay`,上传 `supay-3.0.0-linux-amd64.tar.gz` 并解压,得到 `supay-go-linux-amd64`(包内已带执行权限;若面板提示权限不足,把文件权限改成 `755`)。 3. 「网站 → Go 项目 → 添加项目」,按下表填写: | 字段 | 填写 | |---|---| | 项目名 | `supay` | | 项目路径 | `/www/wwwroot/supay/supay-go-linux-amd64` | | 启动命令 | `/www/wwwroot/supay/supay-go-linux-amd64` | | 运行用户 | `root`;用 `www` 的话要保证该目录可写(安装配置文件写在这里) | | 项目端口 | `9090` | | 放行端口 | 开启 | 4. 保存并启动,浏览器打开 `http://服务器IP:9090/setup/` 完成安装向导:「测试连接」确认账号可用,「开始安装」按需建库建表并写入初始数据。 5. 域名与 HTTPS:在「网站 → 反向代理」新建指向 `http://127.0.0.1:9090` 的代理站点并申请 SSL 证书,然后到后台「支付配置」把服务器域名填成这个 HTTPS 域名(宝塔会自己生成代理配置,下面那段 Nginx 用不上了)。 6. 阿里云/腾讯云等还要在控制台**安全组**放行 `9090`;只走反向代理的话,放行 `80/443` 即可。 宝塔部署的注意点: - 进程必须由面板启动。自己用 `nohup` 或命令行拉起来的进程面板识别不了,列表会一直显示「停止」。 - 停止/重启用项目列表里的按钮,不要在 SSH 里 `kill`,否则面板状态与实际不一致。 - 升级:停止项目 → 覆盖 `supay-go-linux-amd64` → 启动项目。表结构会自动做幂等增量迁移,不会清空数据;覆盖前先备份 `supay-config.json`。 - 端口直接暴露公网时,启动后请立刻完成第 4 步;安装完成后 `/setup` 接口会自动关闭。 - 成功页会展示一次初始管理员账号,登录后请立即在「系统设置」修改密码并配置安全入口 `admin_entry`。 **方式二:命令行部署** **安装向导(不写任何配置文件)** 1. 解压到 `/opt/supay/` 并启动: ```bash tar -xzf supay-3.0.0-linux-amd64.tar.gz -C /opt/supay /opt/supay/supay-go-linux-amd64 ``` 2. 浏览器打开 `http://服务器IP:9090/setup/`,填写 MySQL 信息: - 「测试连接」确认账号可用、目标库是否存在 - 「开始安装」按需建库、建表并写入初始数据 3. 安装信息写入二进制同目录的 `supay-config.json`(权限 600),完成后向导锁定,只提供状态查看。 4. 成功页会展示一次初始管理员账号,登录后请立即在「系统设置」修改密码并配置安全入口 `admin_entry`。 > 向导只建表、不清数据,可重复执行;需要换数据库时停服后删除 `supay-config.json` 再重启即可重新进入向导。 > 关闭「自动创建数据库」时,目标库必须已存在,且该账号对它有建表权限。 **环境变量(不用向导时用)** 先建库: ```sql CREATE DATABASE supay CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` `/etc/supay.env`(权限 600,模板见包内 `.env.example`): ```ini DB_HOST=127.0.0.1 DB_USER=supay DB_PASSWORD=你的密码 DB_NAME=supay JWT_SECRET=你的随机密钥 GIN_MODE=release ``` 只要数据库变量存在,安装向导就会自动锁定,适合用配置管理或容器 Secret 统一注入。 **systemd 常驻** ```ini [Unit] Description=Supay payment gateway After=network.target mysql.service [Service] Type=simple WorkingDirectory=/opt/supay EnvironmentFile=/etc/supay.env ExecStart=/opt/supay/supay-go-linux-amd64 Restart=always RestartSec=3 [Install] WantedBy=multi-user.target ``` **Nginx(可选,仅用于域名与 HTTPS)** ```nginx location / { proxy_pass http://127.0.0.1:9090; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ``` #### 部署后必做 1. 修改初始管理员密码 2. 「支付渠道」配置收款码/凭据并启用通道 3. 「APP 配置」用配置二维码初始化 Android 监控端 4. 首次登录后台会停在「免责声明」页,勾选确认后进入各模块 #### 页面一览 - 公开页:`/` 官网首页、`/pay` 下单承接页(兼容易支付协议)、`/pay/order/订单号` 收银台(默认/票务/简约三套模板,后台 `pay_template` 切换)、`/setup` 安装向导 - 管理后台:`/admin/dashboard`、`/admin/users`、`/admin/orders`、`/admin/channels`、`/admin/pay-config`、`/admin/settings`、`/admin/api-docs`、`/admin/app-config`、`/admin/email`、`/admin/about` - 登录入口为 `/admin/login/安全入口`,未配置入口时任意路径均可进入,配置后必须带正确入口 #### 升级 1. 备份 `supay-config.json` 和数据库 2. 停止服务,用新二进制覆盖旧文件 3. 启动,表结构会自动做幂等增量迁移,不会清空数据 #### 安全提示 - 二进制内不含任何密钥;数据库密码、`JWT_SECRET` 只从环境变量或 `supay-config.json` 读取,`GIN_MODE=release` 时不会加载 `.env` - `supay-config.json` 是明文密码文件,权限保持 600,目录只让服务账号可读,切勿提交到仓库 - 若 `9090` 直接暴露公网,请启动后立刻完成安装,避免安装接口被他人先访问 - 建议用 Nginx/防火墙限制来源,并为后台开启 HTTPS #### 交流与反馈 问题请开 Issue 或 Gitee 讨论区提。