码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台-Alimm.Com-码²
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
此内容为付费资源,请付费后查看
5
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费资源

MPAY V2 是一套基于 Webman 的支付中台后端服务,面向多商户、多通道、多支付方式的统一收款、支付路由、订单管理、退款、转账、清算和资金流水场景。

程序通过发行版安装包部署,内置安装向导会完成环境检测、数据库初始化、系统配置写入和管理员账号创建。

MPAY V2 的核心目标是把支付系统里容易分散的能力统一起来:商户、支付方式、支付插件、插件配置、支付通道、轮询组、路由策略、业务单、支付单、回调通知、退款、清算和资金账户都由后端统一建模和管理。

它不是简单的支付接口转发程序,而是一套可二次开发的支付中台底座:

  • 对平台方: 提供管理后台 API,用于维护商户、通道、插件、路由、订单、退款、清算和资金。
  • 对商户方: 提供商户后台 API,用于查看订单、退款、清算、余额、流水和 API 凭证。
  • 对接入方: 兼容 ePay V1/V2 协议,便于已有商城、发卡、资源站、业务系统快速接入。
  • 对开发者: 提供统一支付插件契约,便于扩展官方 API 支付、个人收款监听、网页流水监听等通道。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台⚙️ 功能特性

模块 能力
管理后台 API 管理员登录、商户、商户分组、商户策略、支付方式、支付插件、插件配置、支付通道、轮询组、路由预览、订单、退款、清算、资金、文件、系统配置
商户后台 API 商户登录、商户资料、API 凭证、我的通道、自助插件配置、商户路由、路由预览、支付订单、退款订单、清算记录、可提现余额、资金流水
收银台 API 收银台上下文、确认支付、支付单详情、支付状态、身份授权上下文、微信网页授权回调、身份回填继续支付
开放支付协议 ePay V1、ePay V2、页面跳转支付、API 创建订单、订单查询、退款、退款查询、关闭订单、商户信息、商户订单、转账、转账查询、转账余额
支付核心 业务单、支付单、支付路由、插件运行时、支付状态生命周期、回调幂等、主动查单、商户通知任务、交易追踪
插件体系 pay()query()notify()refund()refundQuery()close()transfer()transferQuery()channelNotify()
资金清算 平台代收、商户自收、服务费、冻结、释放、清算单、清算明细、资金流水、退款净额重算
异步任务 Webman 自定义进程、Redis Queue、通知重试、退款派发、转账派发、转账延迟查单、清算自动入账、网页流水通知
文件资产 本地存储、远程 URL 导入、阿里云 OSS、腾讯云 COS、预览、下载
运维能力 安装向导、环境检测、系统配置同步、运行状态、日志记录、命令行测试、反向代理部署

🖼️ 效果截图

以下截图用于展示 MPAY V2 的完整业务效果。

管理后台运营首页 商户后台首页
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
插件中心 插件配置
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
商户列表 商户资料
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
通道轮询 系统配置
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
运行监控 账户资金
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
支付订单 支付通道
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台
二维码收银台 文件管理
码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台 码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

🧱 技术栈

类型 技术
运行环境 PHP 8.2+
后端框架 Webman 2.x、Workerman
数据库 MySQL
缓存与队列 Redis、webman/redis-queue
命令行 webman/console
鉴权 JWT,管理后台、商户后台和开放 API 独立鉴权
存储 本地存储、阿里云 OSS、腾讯云 COS
日志 Monolog、Webman runtime logs
依赖管理 Composer
静态资源 public 目录承载首页、安装页、文档页或自行构建的前端产物

🧭 系统架构

外部业务系统 / 商城 / 发卡系统
        |
        | ePay V1/V2 / Open API
        v
MPAY Webman 后端
        |
        |-- 管理后台 API:商户、插件、通道、路由、订单、资金、系统配置
        |-- 商户后台 API:商户资料、API 凭证、订单、退款、清算、流水
        |-- 收银台 API:支付上下文、确认支付、身份授权、支付状态
        |-- 支付运行时:业务单、支付单、路由、插件调用、查单、回调、通知
        |-- Redis Queue:通知、退款、转账、清算、网页流水监听
        |
        v
第三方支付 / 官方 API / 个人收款监听 / 网页流水监听

核心支付链路:

商户系统发起支付
  -> 校验商户状态和签名
  -> 创建业务单 ma_biz_order
  -> 创建支付单 ma_pay_order
  -> 按商户分组和支付方式解析路由
  -> 轮询组选择支付通道
  -> 加载支付插件和插件配置
  -> 插件返回二维码、跳转链接、HTML、JSAPI 参数或身份授权地址
  -> 上游回调或主动查单推进支付状态
  -> 创建商户通知任务
  -> 平台代收场景生成清算单并入账

📁 目录结构

app/command/       命令行任务、迁移、测试和联调命令
app/common/        基类、常量、工具、中间件、支付插件、SDK
app/http/          admin、mer、api 控制器、中间件和参数校验
app/model/         数据模型
app/process/       Webman 自定义进程
app/queue/         Redis Queue 消费者
app/repository/    仓库层
app/route/         显式路由
app/service/       支付、商户、资金、文件、安装、系统配置等服务
config/            Webman 配置、业务配置、进程配置、队列配置
database/          迁移、种子和完整 DDL
public/            静态资源目录
runtime/           运行日志、缓存、PID、上传文件等运行时目录
support/           Webman 支撑代码
tools/             辅助工具,例如 receipt_watcher

🧰 运行环境

最低要求:

依赖 要求
PHP 8.2 或更高版本
MySQL 5.7+ / 8.x
Redis 5.x+
PHP 扩展 pdo_mysqlredispcntlfileinfo

开发环境可以直接使用 PHP CLI 启动;生产环境建议使用 Nginx 或 Apache 反向代理到 Webman HTTP 服务。 具体要求可以看webman官方教程:宝塔安装nginx代理

📝 安装说明

MPAY V2 面向实际部署提供发行版安装包。正式安装建议从 Gitee 发行版下载,不建议直接用源码仓库作为生产安装包。

发行版安装包结构:

app/              后端业务源码
config/           配置文件
database/         数据库迁移、种子和完整 DDL
public/           首页、安装页、接口文档页和静态资源
runtime/          运行时目录
support/          Webman 支撑代码
vendor/           Composer 依赖
.env.example      环境变量示例
composer.json     Composer 配置
composer.lock     Composer 锁定文件
webman            Webman 命令入口
windows.php       Windows 开发启动入口
start.php         Webman 启动入口

1. 下载发行版

进入项目发行版页面下载最新安装包:

https://gitee.com/technical-laohu/mpay_v2_webman/releases

下载后解压到站点目录,例如:

/www/wwwroot/pay.example.com

2. 准备运行环境

服务器需要准备:

依赖 说明
PHP 8.2 或更高版本
MySQL 建议 5.7+ / 8.x
Redis 用于缓存、登录态、队列和运行时任务
程序依赖 发行版已包含 vendor,通常不需要在服务器单独安装依赖
PHP 扩展 pdo_mysqlredispcntlfileinfo

Webman 是常驻内存服务,不依赖 PHP-FPM 处理请求。

3. 设置目录权限

确保运行用户可以写入以下目录:

runtime/
public/storage/

安装程序会写入 .env、安装锁、日志、缓存和上传目录。若服务器权限较严格,请先确认站点目录对 Webman 运行用户可写。

4. 启动服务

Linux / macOS:


# 调试方式运行(用于开发调试,打印数据会显示在终端,终端关闭后webman服务也随之关闭)
php webman start

# 守护进程方式运行(用于正式环境,打印数据不会显示在终端,终端关闭后webman服务会持续运行)
php webman start -d

Windows 开发环境:


# 双击 windows.bat 或者终端运行 php windows.php 启动
php windows.php

默认监听地址:

http://127.0.0.1:8787

生产环境使用Linux系统,建议使用 Supervisor、systemd、宝塔守护进程等方式守护 Webman 进程,再通过 Nginx 或 Apache 反向代理访问。

5. 打开安装程序

浏览器访问:

http://你的域名/install

或本地访问:

http://127.0.0.1:8787/install

安装程序会引导填写:

  • 站点名称和站点 URL。
  • MySQL 地址、端口、数据库名、账号和密码。
  • Redis 地址、端口、密码、缓存库和队列库。
  • 管理员账号、管理员密码和 JWT 密钥。

安装程序会自动完成:

  • 检测 PHP、目录权限、数据库和 Redis。
  • 创建数据库,前提是数据库账号具备创建权限。
  • 写入 .env 配置文件。
  • 执行数据库迁移。
  • 写入支付方式、系统配置、支付插件和管理员账号。
  • 生成平台 ePay RSA 密钥。
  • 写入安装锁。

安装完成后重启 Webman:

php webman restart

6. 安装后检查

安装完成后建议检查:

地址 说明
/ 或 /home 项目首页
/install 已安装后应提示安装状态
/docs 内置接口文档页
/adminapi/system/public-config 管理后台公开配置接口
/api/cashier/config 收银台公开配置接口

页面入口 /admin/mer/cashier 依赖对应构建产物是否存在;后端接口不受影响。

🧭 宝塔面板图文安装教程

下面以宝塔 Linux 面板安装 MPAY V2 发行版为例,演示从运行环境、站点创建、安装包部署、Webman 启动到安装向导完成的完整流程。示例域名、数据库名和账号仅用于演示,正式部署时请替换为自己的域名和安全密码。

1. 安装基础运行环境

进入宝塔面板的「软件商店」,先确认服务器已安装并启动 NginxMySQLRedis 和 PHP 8.2+。MPAY V2 使用 Webman 常驻内存运行,动态请求最终会由 Nginx 反向代理到 Webman HTTP 服务。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

2. 安装 PHP 扩展

在 PHP 设置中进入「安装扩展」,确认当前 PHP 版本已安装 fileinfo 和 redis 扩展。redis 扩展用于连接 Redis 服务,fileinfo 用于文件类型识别和上传相关处理。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

3. 创建站点和数据库

进入「网站」页面点击「添加站点」,选择「传统项目」。填写访问域名,站点根目录建议使用 /www/wwwroot/你的域名;同时创建 MySQL 数据库并记录数据库名、用户名和密码。因为 Webman 不依赖 PHP-FPM 处理动态请求,PHP 版本可以选择「纯静态」,后续通过伪静态规则反向代理到 Webman 服务。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

4. 上传并解压发行版安装包

进入刚创建的站点目录,上传从发行版页面下载的 MPAY V2 安装包,例如 mpay_v2.zip,然后解压到站点当前目录。解压后站点根目录下应能看到 appconfigdatabasepublicruntimesupportvendorwebmanstart.php 等文件和目录。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

5. 解除必要函数禁用

在站点当前目录打开宝塔终端,执行以下命令解除 Webman 运行所需的 PHP CLI 禁用函数:

cd /www/wwwroot/项目目录
php webman fix-disable-functions

# 如果解除不成功,可以使用下面脚本再试一遍
curl -Ss https://www.workerman.net/webman/fix-disable-functions | php

命令会检查当前 PHP CLI 配置,并尝试启用 execshell_execproc_openpcntl_alarmpcntl_forkpcntl_signalpcntl_signal_dispatch 等函数。执行完成后如有提示,请按宝塔或 PHP 配置要求重载对应服务。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

6. 启动 Webman 服务

继续在站点目录执行守护进程启动命令:

php webman start -d

看到 Start success 且监听地址为 http://0.0.0.0:8787 时,说明 Webman 服务已经启动。后续访问域名时,Nginx 会把动态请求转发到该端口。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

7. 设置网站运行目录

进入站点设置的「网站目录」,将「运行目录」设置为 /public 并保存。这样静态资源、首页、安装页和前端构建产物会从 public 目录对外提供。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

8. 配置伪静态反向代理

进入站点设置的「伪静态」,写入 Nginx 规则并保存。规则的核心是:静态文件优先由 Nginx 直接处理,不存在的动态请求交给 Webman;同时兼容 ePay V1 的 /submit.php/mapi.php/api.php 入口。

# ePay V1 兼容入口:/submit.php /mapi.php /api.php
location ~ ^/(submit|mapi|api).php$ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "";

    proxy_pass http://127.0.0.1:8787/$1;
}

# 静态文件优先由 Nginx 处理,不存在再交给 Webman
location / {
    try_files $uri $uri/ @webman;
}

# Webman 动态请求
location @webman {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "";

    proxy_pass http://127.0.0.1:8787;
}

# 拒绝访问其它 PHP 文件
location ~ .php$ {
    return 404;
}

# 允许访问 .well-known 目录
location ^~ /.well-known/ {
    allow all;
}

# 拒绝访问其它以 . 开头的文件或目录
location ~ /. {
    return 404;
}

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

9. 打开安装入口

浏览器访问站点域名,未安装时首页会显示系统状态为「未安装」。点击「开始安装」,或直接访问 /install 进入安装向导。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

10. 填写基础配置

安装向导会依次完成协议确认、环境检测和基础配置。基础配置中需要填写平台名称、站点 URL、MySQL 连接信息、Redis 连接信息和初始管理员信息。Redis 默认没有密码时可以留空;如果服务器设置了 Redis 密码,则按实际密码填写。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

11. 进入管理后台检查

安装完成后重启 Webman 服务:

php webman restart -d

然后访问 /admin 进入管理后台。运营首页能正常打开,并显示运行健康、交易统计、运维告警和快捷入口,说明管理端页面和后台 API 已经连通。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

12. 进入商户后台验证

访问 /mer 可进入商户后台。首次上线后建议在管理后台补齐商户资料、接口凭证、插件配置、支付通道和路由策略,再使用商户后台验证订单、退款、资金流水和通道配置是否符合预期。

码支付 V2: 码支付[mpay]是一款便捷的在线收款工具,使用webman框架开发,支持个人免签收款,三方支付聚合码收款,能通过API对接主流收款服务商平台

🚪 访问入口

场景 页面入口 API 入口
首页 //home
安装向导 /install /adminapi/install/*
内置接口文档页 /docs
管理后台 /admin,需存在 public/admin/index.html /adminapi
商户后台 /mer,需存在 public/mer/index.html /merapi
收银台 /cashier/payment,需存在 public/cashier/index.html /api/cashier/api/pay
ePay V1 /submit.php/mapi.php/api.php 同左
ePay V2 无固定页面 /api/pay/api/merchant/api/transfer
通道级通知 无页面 /api/pay/{chanId}/notify

如果对应前端构建产物不存在,页面入口会返回 Admin page not foundMerchant page not found 或 Cashier page not found。这不影响后端 API 使用。

⌨️ 常用命令

# 启动 Webman 工作进程,默认 DEBUG 模式(前台运行)
php webman start
# 启动 Webman 工作进程,以 DAEMON 模式启动(后台运行)
php webman start -d

# 停止 Webman 工作进程
php webman stop
# 平滑停止,等待当前请求处理完成后再退出
php webman stop -g

# 无停机重载代码,适用于代码更新后热加载。
php webman reload
# 平滑重载,等待当前请求处理完成后再重载
php webman reload -g

# 重启 Webman 工作进程
php webman restart
# 重启后以 DAEMON 模式运行(后台运行)
php webman restart -d
# 平滑停止后再重启
php webman restart -g

# 查看工作进程运行状态
php webman status
# 显示详情(实时状态)
php webman status -d

# Windows 开发环境启动
php windows.php

# 数据库迁移
php webman migrate
php webman migrate:status

# 系统配置默认值同步
php webman system:config-sync

# 商户通知重试
php webman payment:notify-retry

# 支付链路烟雾测试
php webman mpay:test --all

# P0 核心检查
php webman mpay:p0-check

# ePay V1 兼容接口测试
php webman epay:mapi

# ePay V2 初始化联调密钥
php webman epay:v2-bootstrap

# ePay V2 API 烟雾测试
php webman epay:v2-api

# ePay V1/V2 mock 全链路测试
php webman epay:mock-chain

🔌 开放接口速览

🔹 ePay V1

入口 方法 说明
/submit.php GET / POST 页面跳转支付
/mapi.php POST 接口支付
/api.php GET / POST 商户信息、订单查询、退款等兼容 API

V1 使用 MD5 签名,面向已有易支付生态的接入方。

🔸 ePay V2

入口 方法 说明
/api/pay/submit GET / POST 页面跳转支付
/api/pay/create POST API 创建支付订单
/api/pay/query POST 查询支付订单
/api/pay/refund POST 创建退款
/api/pay/refundquery POST 查询退款
/api/pay/close POST 关闭订单
/api/merchant/info POST 查询商户信息
/api/merchant/orders POST 查询商户订单
/api/transfer/submit POST 提交转账
/api/transfer/query POST 查询转账
/api/transfer/balance POST 查询转账余额

V2 使用 RSA 签名,适合新接入系统。

创建支付订单示例:

curl -X POST "http://127.0.0.1:8787/api/pay/create" 
  -H "Content-Type: application/json" 
  -d '{
    "pid": 1001,
    "type": "alipay",
    "out_trade_no": "T202605190001",
    "notify_url": "https://merchant.example.com/pay/notify",
    "return_url": "https://merchant.example.com/pay/return",
    "name": "测试订单",
    "money": "9.90",
    "clientip": "127.0.0.1",
    "timestamp": "1779179000",
    "sign_type": "RSA",
    "sign": "..."
  }'

返回结构会根据插件能力不同返回二维码内容、跳转链接、HTML、URL Scheme、JSAPI 参数或身份授权地址。

🧩 支付插件

支付插件位于:

app/common/payment

当前内置插件:

插件类 插件编码 说明
AlipayApiPayment alipay_api 支付宝官方 API 支付
WechatApiPayment wechat_api 微信官方 API 支付
EpayV1Payment epay_v1 彩虹易支付 V1 协议适配
EpayV2Payment epay_v2 彩虹易支付 V2 协议适配
AlipayReceiptPayment alipay_receipt 支付宝个人收款监听
WechatReceiptPayment wxpay_receipt 微信个人收款监听
ShouQianBaReceiptPayment shouqianba_receipt 收钱吧二维码牌网页流水监听
PostarReceiptPayment postar_receipt 星驿付收款单网页流水监听

插件常用方法:

方法 职责
pay() 创建支付承接信息
query() 主动查询支付状态
notify() 处理上游支付回调
refund() 发起退款
refundQuery() 查询退款状态
close() 关闭订单
transfer() 发起转账
transferQuery() 查询转账状态
channelNotify() / channelNotifyPayload() 通道级通知先定位平台支付单

pay() 返回值会由支付运行时转换为收银台和开放 API 可识别的支付呈现结构,常见类型包括:

类型 说明
qrcode / qr_code 二维码内容,适合扫码支付
url / redirect 跳转链接
html 上游返回的 HTML 表单或页面片段
scheme App URL Scheme
jsapi 公众号、小程序或 JSAPI 支付参数
identity 缺少 OpenID、buyer_id 等用户身份时返回授权承接地址

🛣️ 支付路由模型

支付选路固定围绕下面的数据关系展开:

商户
  -> 商户分组
  -> 路由绑定
  -> 轮询组
  -> 轮询组通道编排
  -> 支付通道
  -> 插件配置
  -> 支付插件

路由模式:

模式 说明
顺序轮询 按通道排序和轮询状态选择
权重随机 按权重随机选择可用通道
默认通道 优先使用标记为默认的通道

如果支付创建失败并提示“路由无命中”,通常需要检查商户状态、商户分组、路由绑定、轮询组、通道状态、插件状态和支付方式是否一致。

💰 资金与清算口径

金额在系统内部统一使用“分”作为计算和存储单位。ePay 协议面向商户时使用元字符串,例如 "9.90"

平台代收:

支付成功
  -> 创建商户通知任务
  -> 生成待清算单
  -> 清算入账后增加商户可提现余额
  -> 写入资金流水

商户自收:

支付资金直接进入商户自己的上游账户
  -> 平台只处理服务费冻结、扣除或释放
  -> 不生成平台代收清算入账

退款创建时必须锁定原支付单,并把 CREATEDPROCESSINGSUCCESS 的退款单计入占用金额,避免并发超退。清算入账前会按支付单和已成功退款重新核算净额。

🔁 异步任务与进程

进程 / 队列 说明
payment-runtime 商户通知重试、支付超时扫描、支付中订单主动查单
receipt-watcher-sync 将需要查询流水的账号和订单同步到 Redis
merchant_notify 商户通知投递
refund_dispatch 退款上游派发
transfer_dispatch 转账上游派发
transfer_query 转账延迟查单
settlement_complete 清算自动入账
receipt_flow_notify 网页流水监听通知处理

Linux 生产环境使用 php webman start 会按 Webman 配置启动相关进程。Windows 开发环境请使用 php windows.php

👀 网页流水监听

网页流水监听适用于第三方平台没有标准回调,但可以登录网页后台查询收款流水的场景。

职责边界:

  • Webman 后端负责维护账号、订单任务、插件配置和订单匹配。
  • Python receipt_watcher 负责登录第三方网页后台并抓取流水。
  • 流水归一后投递 Redis 队列,再由 Webman 调用插件完成订单定位和支付确认。

当前内置适配方向:

  • 收钱吧二维码牌收款。
  • 星驿付收款单收款。

🚀 部署建议

Nginx 反向代理伪静态配置

# ePay V1 兼容入口:/submit.php /mapi.php /api.php
location ~ ^/(submit|mapi|api).php$ {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "";

    proxy_pass http://127.0.0.1:8787/$1;
}

# 静态文件优先由 Nginx 处理,不存在再交给 Webman
location / {
    try_files $uri $uri/ @webman;
}

# Webman 动态请求
location @webman {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Connection "";

    proxy_pass http://127.0.0.1:8787;
}

# 拒绝访问其它 PHP 文件
location ~ .php$ {
    return 404;
}

# 允许访问 .well-known 目录
location ^~ /.well-known/ {
    allow all;
}

# 拒绝访问其它以 . 开头的文件或目录
location ~ /. {
    return 404;
}

/submit.php/mapi.php/api.php,这些是 ePay V1 兼容入口,不是传统 PHP-FPM 文件执行入口。

生产环境建议:

  • 使用 HTTPS。
  • 使用 Supervisor、systemd 或宝塔守护进程保持 Webman 常驻。
  • 定期备份 MySQL 和重要配置。
  • runtime/public/storage/ 需要可写。
  • 生产环境关闭调试输出,检查日志权限。
  • 支付回调地址、商户通知地址、站点 URL 必须使用公网可访问域名。

🔐 安全注意事项

  • 安装完成后立即修改默认管理员账号和密码。
  • 上线前替换所有 JWT 密钥、平台密钥、商户密钥、数据库密码和 Redis 密码。
  • 不要把 .env、证书、私钥、上游支付密钥提交到公开仓库。
  • 商户开放 API 凭证只用于接口签名,不等同于商户后台登录密码。
  • 管理后台、商户后台和开放 API 是三套独立鉴权体系。
  • 个人收款监听、网页流水监听、代收和清算业务需要自行确认合规边界。
THE END
喜欢就支持一下吧
点赞0 分享