彩虹易支付(Epay)系统完整介绍
一、基础定义
彩虹易支付(项目代号 Epay),是一套PHP+MySQL 开发的开源聚合支付网关源码,原始开发主体为郑州追梦网络科技,也是国内站长圈流传最广的自建支付系统之一。
简单理解:它不是支付机构,是一套支付中间管理程序。
业务网站统一调用彩虹易支付一套 API,系统内部转发到支付宝、微信、云闪付等各个支付渠道,统一管理订单、异步回调、商户、费率。
重要区分:
源码程序:任何人下载源码、购买授权,自备服务器、域名即可搭建属于自己的独立易支付平台;
线上运营平台:很多人搭建好 Epay 源码对外招商,对外也自称 “彩虹易支付平台”,属于第三方运营站点。
二、核心架构与工作流程
业务站点 → 彩虹易支付网关(统一 API) → 下游支付通道(微信 / 支付宝 / 第三方服务商) → 用户付款
付款完成后,支付渠道异步推送通知给彩虹易支付,再由网关回调通知你的业务网站更新订单状态。
三、主要功能清单
1. 支付通道支持(插件化扩展)
支付宝:当面付、手机网站支付、电脑支付、JSAPI
微信支付:扫码、H5 支付、公众号 JSAPI
QQ 钱包、银联、云闪付、京东支付
社区插件扩展:USDT 数字货币通道、各类第三方支付服务商接口
2. 商户管理(平台运营核心)
多商户入驻系统,商户独立后台
自定义费率、结算门槛、结算周期
商户密钥管理、API 权限开关、IP 白名单
交易流水、对账、利润统计
3. 订单与风控
完整订单生命周期管理、订单查询、退款接口
RSA 签名校验、回调防重、异步通知重试
黑名单(IP、收款账号)、金额限制、关键词拦截
后台可视化交易数据看板
4. 面向开发者能力
提供标准 REST API,附带 SDK(PHP/Java/Python 等);支持自建收银台页面、自定义支付模板。
四、两种使用模式
模式 A:自用模式(个人 / 企业仅自己收款)
自己搭建 Epay,接入自有、正规签约的微信 / 支付宝商户号,只给自己网站收款。
定位:内部支付管理工具,不对外招募商户。
模式 B:运营模式(搭建平台,开放给其他站长入驻)
搭建平台开放注册,吸纳大量二级商户接入收款,赚取手续费差价。
⚠️ 此模式是监管高风险场景,极易触碰 “二清” 红线。
五、常见宣传卖点(客观说明)
一次对接,多渠道收款:业务系统只写一套支付接口,切换通道无需改动业务代码;
部署简单:宝塔面板一键安装,门槛低,个人站长容易上手;
开源可二次开发:能自定义页面、增加插件、修改逻辑;
通道热切换:某个支付通道不稳定时后台一键切换备用通道。
六、⚠️ 极高风险提示(重点阅读)
1. 无央行支付牌照
彩虹易支付本身没有《支付业务许可证》,仅属于技术程序,不能从事资金清算业务。
✅ 理论合规边界:系统只流转订单信息,不触碰资金;资金直接由微信 / 支付宝官方一清结算至商户本人账户(服务商直连模式)。
❌ 违法高危场景:
平台代收资金,再人工 / 自动打款给下级商户 → 无证二次清算(二清),属于非法经营支付业务,涉嫌违法。
2. “免签约通道” 大多不合规
网上大量易支付平台宣传 “个人免签约收款”,底层常见方案:
个人支付宝 / 微信扫码轮询收款(挂机码支付模式);
借用他人企业商户号代收资金。
两类方式均违反微信、支付宝商户协议,极易导致:支付账号永久封禁、资金冻结。
3. 数字货币通道风险
很多二次修改版本添加 USDT 收款插件,用于游戏充值、虚拟商品、灰色业务,涉嫌帮助网络犯罪、洗钱,刑事责任风险极大。
4. 源码乱象
GitHub、论坛大量流传修改版、破解版源码,部分后门、挖矿代码,自行搭建存在资金泄露风险。
七、适用与不适用场景
✅ 相对合理场景
拥有正规企业资质,已向微信、支付宝官方签约商户号;搭建 Epay 仅内部使用、统一管理多渠道支付,不对外招商。
❌ 强烈不建议场景
想要搭建平台招揽大量陌生站长入驻、赚取手续费;
用于私服、赌博、盗版资源、非法虚拟商品收款;
想用个人微信支付宝免签约方式大批量收款。
八、和官方聚合支付产品对比
| 项目 | 彩虹易支付 (Epay) | 官方持牌聚合支付服务商 |
|---|---|---|
| 资质 | 程序源码,无支付牌照 | 持有央行支付牌照 / 正规服务商资质 |
| 资金流向 | 取决于下游通道,存在二清风险 | 资金一清结算,合规链路清晰 |
| 售后与稳定性 | 社区维护,无官方技术保障 | 官方运维、风控、客服体系 |
| 法律保障 | 无正规金融主体承担责任 | 合同、存管、合规方案完整 |
彩虹易支付(Epay)三部分完整文档
⚠️重要前置提醒:彩虹易支付只是一套PHP 支付网关程序,无央行支付牌照;搭建对外招商、搭建二清平台存在法律风险;以下内容仅作技术学习参考,请勿用于违法业务。
一、宝塔简易部署流程(通用稳定版)
1. 环境要求
系统:CentOS/Debian
Web:Nginx
PHP:7.4 / 8.0(推荐 7.4 老版本兼容性最好)
PHP 扩展必须开启:curl、openssl、pdo_mysql、mbstring、json
数据库:MySQL5.7 / 8.0
2. 操作步骤
1.服务器安装宝塔面板
# CentOS
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && bash install.sh
安装完成保存面板地址、账号密码。
宝塔安装软件
软件商店安装 Nginx、PHP7.4、MySQL5.7。
新建站点
填入已备案域名;
自动创建 MySQL 数据库,保存数据库名、账号、密码;
PHP 版本选择 7.4。
上传源码
源码压缩包上传至网站根目录并解压。
⚠️网络流传大量破解源码带有后门,资金存在被盗风险。
伪静态配置(网站设置→伪静态)
location / {
if (!-e $request_filename) {
rewrite ^/(.*).html$ /index.php?mod=$1 last;
}
rewrite ^/pay/(.*)$ /pay.php?s=$1 last;
}
location ^~ /plugins {deny all;}
location ^~ /includes {deny all;}
访问安装页面
浏览器打开 https://你的域名/install
环境检测全部通过;
填入数据库信息;
执行安装数据表。
登录后台
后台地址:域名/admin
默认账号:admin,密码:123456
登录第一时间修改密码!
必配置计划任务(否则订单无法自动回调)
后台【计划任务】复制任务链接,宝塔面板添加URL 访问任务,1 分钟执行一次。
添加支付通道
后台「通道管理」新增支付宝、微信等通道,填入官方商户密钥。
二、API 对接参数示例(标准 V1 接口)
接口地址
https://你的域名/submit.php
请求方式:POST / GET
1. 请求参数表
| 参数 | 是否必填 | 说明 | 示例 |
|---|---|---|---|
| pid | 是 | 商户 ID(后台创建商户获得) | 1001 |
| type | 否 | 支付方式 | alipay / wxpay / qqpay |
| out_trade_no | 是 | 你业务系统内部订单号(唯一) | ORDER20260728001 |
| name | 是 | 商品名称 | 网站会员充值 |
| money | 是 | 支付金额(保留 2 位小数) | 99.00 |
| notify_url | 是 | 异步回调地址(服务器接收通知) | https://xxx.com/paynotify.php |
| return_url | 是 | 用户付款完成页面跳转地址 | https://xxx.com/paysuccess.html |
| param | 否 | 自定义透传参数,回调原样返回 | userid_123456 |
| sign | 是 | MD5 签名 | 见下方签名算法 |
| sign_type | 否 | 签名方式,默认 MD5 | MD5 |
2. 签名算法(PHP 示例)
/**
* @param array $params 请求参数
* @param string $key 商户通信密钥(商户后台查看)
* @return string 大写MD5签名
*/
function getSign($params, $key){
unset($params['sign']);
ksort($params); // 参数字典升序排序
$str = http_build_query($params);
$str .= '&key='.$key;
return strtoupper(md5($str));
}
3. 完整构造请求 Demo
$params = [
'pid' => '1001',
'type' => 'alipay',
'out_trade_no' => 'ORDER20260728001',
'name' => '会员充值',
'money' => '99.00',
'notify_url' => 'https://xxx.com/notify.php',
'return_url' => 'https://xxx.com/success.php',
'param' => 'uid_888'
];
$key = '商户后台密钥';
$params['sign'] = getSign($params,$key);
// 跳转支付页面
header("Location: https://pay.xxx.com/submit.php?".http_build_query($params));
exit;
4. 异步回调通知参数(付款成功后易支付主动 POST 推送)
推送参数示例:
pid=1001&out_trade_no=ORDER20260728001&trade_no=EP2026072800001&money=99.00&status=success¶m=uid_888&sign=XXXXXXXXXXXX
status=success 代表支付成功
业务端必须重新校验 sign,防止伪造通知!
校验成功页面直接输出 success 字符串,否则易支付持续重推回调。
5. 订单查询接口
地址:https://域名/api.php?act=order
参数:pid、out_trade_no、sign
三、一清方案 VS 高危二清方案(核心区分)
先理解核心判定标准
区分唯一标尺:资金有没有经过【搭建易支付平台运营者】的个人账户 / 企业账户。
资金不经过平台运营账户 → 技术中介(理论一清链路)
资金先进平台运营账户,平台手动 / 自动提现分给下级商户 → 无证二清(违法)
方案 A:直连一清模式(仅自用场景,风险相对低)
资金流向
付款用户 → 微信 / 支付宝官方收单机构 → 你自己签约商户账户
✅ 资金全程不经过易支付服务器运营者银行卡
技术实现
你自己向微信支付 / 支付宝申请企业商户号;
在彩虹易支付后台添加通道,填入你自有商户号密钥;
仅给自己网站收款,不开放注册、不招其他商户入驻;
易支付只转发订单、处理回调、记账,不触碰资金。
优点
资金官方直接结算到你账户,不存在平台卷款风险;
边界警告
即使是一清模式:
禁止对外提供收款服务、开放商户入驻;一旦对外招商,业务性质改变。
方案 B:服务商直付通合规子商户模式(正规平台可用,门槛极高)
适合想做多商户,又规避二清的唯一技术路线
资金流:用户付款→微信 / 支付宝服务商→二级商户本人账户
平台仅做订单路由,资金直接结算到各个二级商户银行卡,平台无法截留资金。
前提条件:
你拥有微信 / 支付宝官方服务商资质;
使用【直付通 / 服务商子商户进件】通道插件;
每一个入驻商户独立进件,拥有独立子商户号。
普通个人几乎无法拿到服务商资质,网上绝大多数易支付平台都不是这种模式。
方案 C:高危二清模式(市面上 90% 搭建运营平台,违法!)
资金流向
付款用户 → 支付渠道 → 平台运营者银行卡 → 平台后台提现转账给下级商户
形成资金池,属于典型无证二次清算。
常见实现方式
平台运营者自己一套支付宝 / 微信商户号,所有下级商户收款全部汇总进运营者账户;
下级商户在平台后台看到余额,需要运营者人工或自动转账提现;
变种:个人免签约挂机码支付、轮询收款码、租借他人商户通道。
法律与风险清单
无支付牌照从事资金清算业务,涉嫌非法经营罪;
运营方:资金被监管冻结、刑事追责;
入驻商户:平台随时卷款跑路,余额无法追回;
收款账号极易被支付宝、微信永久封禁。
对比表格
| 模式 | 资金是否过平台运营账户 | 能否开放多商户入驻 | 合规程度 |
|---|---|---|---|
| 自用自有商户一清 | ❌ 不经过 | 禁止对外开放 | 仅自用相对安全 |
| 官方服务商直付通子商户 | ❌ 不经过 | 可以入驻 | 正规合规(资质门槛极高) |
| 二清资金池模式 | ✅ 全部汇总到平台账户 | 开放入驻 | 违法,极高风险 |
快速辨别一个易支付平台是不是二清
问对方:资金是直接进我自己商户,还是先到平台再提现?
看结算账户:到账收款方名称是你公司,还是平台运营方名字?
需要在平台余额提现 → 100% 二清
彩虹易支付常见报错完整排查清单
前置常识:所有调试优先关闭浏览器缓存、使用 POSTMAN / 服务端发起请求,不要直接浏览器测试回调;回调是服务器与服务器通信,和本地浏览器无关。
一、签名错误(sign 错误,最高频问题)
报错现象
页面提示「签名验证失败」、异步回调易支付返回签名错误、订单无法创建。
排查步骤
参数排序问题(最常见)
易支付签名规则:移除 sign,按键名 ASCII 升序 ksort,拼接参数 & key = 商户密钥
❌ 错误:参数顺序随意拼接
✅ 正确:必须数组 ksort 排序,不能手写拼接字符串
大小写坑
签名结果要求 大写 MD5;部分代码输出小写直接校验失败。
多余参数 / 缺失参数
不要额外传入文档不存在的参数;回调接收时不要丢弃任何原始参数再验签。
金额格式陷阱
money 必须保留小数,示例 99 和 99.00 参与签名字符串完全不一样!
统一规范:金额强制格式化 sprintf(“%.2f”,$money)
密钥复制错误
商户密钥≠后台管理员密码;
复制时带入空格、换行、不可见字符;
混淆商户 ID 对应的密钥(多个商户交叉用 key)。
URL 编码冲突
param 自定义参数包含 & = + 等特殊符号,前端 URL 二次编码导致两端参数不一致。
快速调试方案
在本地打印「待加密原始字符串」,和易支付后台日志对比字符串是否完全一致。
二、异步回调失败 notify_url 不触发 / 易支付显示回调失败
现象
支付成功,易支付订单显示【回调失败】,业务网站订单不自动更新;后台订单日志可见:通知重试多次仍失败。
分层排查
第一层:易支付侧配置
宝塔计划任务是否正常运行(URL 任务,1 分钟一次)
无计划任务:订单不会主动推送回调!
后台通道是否启用、通道状态正常;
查看订单详情:复制【回调原始日志】,看 HTTP 状态码
404:业务端 notify 地址写错
403:防火墙、防盗链、IP 黑名单拦截
500:你的 notify.php 代码 PHP 报错
200但是持续重试:你的程序没有原样输出 success
第二层:业务接收端常见问题
回调接口开启 CSRF、token 验证
易支付是服务器 POST 请求,不带会话 Cookie,会直接拦截。
域名防盗链、Nginx 防盗链、Referer 限制
需要放行易支付域名,或者直接关闭 notify 接口防盗链。
服务器防火墙 / 云厂商安全组
阿里云 / 腾讯云安全组拦截外部入站请求;宝塔防火墙封禁易支付服务器 IP。
HTTPS 证书异常
notify_url 使用 https,但证书过期、不完整、不支持 TLS;建议测试阶段可先用 http 定位。
代码输出多余字符
notify 文件顶部 / 底部存在空格、BOM 头、echo 调试信息。
✅ 规范:校验成功仅输出英文 success,无任何其他内容
php
运行
echo “success”;exit;
程序执行超时、数据库锁死
notify 内部不要写耗时任务,不要同步发送大量消息。
简易测试方式
使用在线 POST 工具,模拟易支付 POST 请求直接访问你的回调地址,观察返回内容。
三、通道报错(支付宝 / 微信通道调用失败、无法拉起收银台)
通用排查步骤
核对通道商户号、AppID、私钥、证书是否完整复制,无换行空格;
区分环境:沙箱环境 和 正式商户号不可混用;
PHP 必须开启 curl、openssl 扩展;
服务器必须能对外出站访问外网(很多内网服务器无法请求支付宝网关)。
3.1 支付宝当面付 / JSAPI 报错
私钥、支付宝公钥配对错误(极易复制颠倒)
签约产品不匹配:仅签约当面付不能使用手机网站支付
域名未添加至支付宝后台授权域名
接口版本混淆:老版 RSA 和 RSA2 不能混用(优先 RSA2)
3.2 微信支付通道报错
apiclient_cert.pem/key 证书上传错误、文件权限不足
APIv3 与 APIv2 接口密钥不通用
商户号未开通对应产品:H5 支付、JSAPI、扫码支付单独签约
JSAPI 支付:必须配置微信公众号授权域名,openid 获取失败无法下单
H5 支付:微信后台填写正确的业务域名,否则报错拦截
3.3 第三方插件通道(聚合通道、免签约、USDT 等)
插件版本和当前 Epay 程序版本不兼容
通道服务商接口地址变更、服务商关停
通道密钥失效、服务商风控封禁你的接入
⚠️免签约挂机码通道额外常见故障:挂机程序掉线、扫码失效、轮询接口超时。
四、收银台、页面访问类报错
500 错误
PHP 版本不匹配:原版推荐 PHP7.4,PHP8.1 + 容易出现兼容报错
文件权限不足:网站目录 0644/0755;
伪静态未配置或者配置错误。
404 打开支付页面
Nginx 伪静态规则未添加,复制部署流程里的伪静态代码重新填入。
无法加载 CSS/JS,页面错乱
站点未设置正确运行目录、HTTPS 混合内容(http 静态资源被浏览器拦截)
五、安全与隐性疑难问题
源码后门:网上下载修改版 epay 偶尔出现订单回调被劫持、密钥泄露
服务器时间偏差过大:服务器时间和标准时间相差超过 10 分钟,部分通道签名失效
数据库时区错误,订单创建时间异常,风控拦截订单
六、标准化调试流程(推荐按顺序执行)
开启易支付后台调试日志(如有);
先测试订单创建、签名,排除签名问题;
手动创建一笔测试订单,测试能否正常跳转收银台,定位通道问题;
完成支付,查看订单详情回调日志,获取 HTTP 状态码;
复制回调参数,本地模拟 POST 访问回调接口,确认业务代码正常接收;
关闭服务器防火墙、防盗链进行测试,排除拦截问题。
附:回调接收标准防坑模板(PHP)
