概述
CXPAY 开放 API 接口规范说明
CXPAY 完全兼容行业通用的**易支付 (EPay) 标准接口协议**。无论您的业务系统是基于 WordPress、Discuz、ThinkPHP、Next.js 还是独创微服务,均可无缝接轨发起支付、处理异步通知与查询账单。
极速响应
基于 Webman 协程架构,接口 QPS 吞吐能力达 3000+。
零手续费损耗
智能金额随机浮动去重,精确匹配挂机回调账单。
高风控防封
动态代理 IP 隔离与通道单日熔断保护机制。
身份凭证
获取商户 PID 与 签名密钥 (Key)
登录商户控制中心后,在【API 密钥与回调配置】菜单中可查阅您的专属凭证:
// 请从商户中心获取真实凭据
商户 PID (pid) : YOUR_PID
商户密钥 (key) : YOUR_SECRET_KEY
安全规范
MD5 签名生成算法与规则
- 将所有请求参数(排除
sign和sign_type,以及空值字段)按照 ASCII 码字母升序(a-z)进行排序。 - 使用
key1=value1&key2=value2...拼接成待签名字符串。 - 在拼接好的待签名字符串末尾直接追加您的 **商户密钥 (Key)**。
- 对最终计算出的字符串进行 32 位小写 MD5 运算,即得到签名
sign值。
GET / POST
/submit.php
发起支付下单 (跳转 H5/PC 收银台)
请求参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pid | String | 是 | 商户 PID (例: 1000) |
| type | String | 是 | 支付通道标识 (alipay 支付宝 / wxpay 微信 / qqpay QQ) |
| out_trade_no | String | 是 | 商户系统内部唯一订单号 (最长64位) |
| notify_url | String | 是 | 服务器异步回调通知 URL (必须以 http:// 或 https:// 开头) |
| return_url | String | 否 | 支付成功后前端同步跳转页面地址 |
| name | String | 否 | 商品名称/说明标题,最长255个字符 |
| money | Decimal | 是 | 订单金额(单位:元,最多8位整数和2位小数) |
| sign | String | 是 | 32位小写 MD5 签名结果串 |
| sign_type | String | 否 | 签名类型;传入时填写 MD5 |
异步通知
服务端异步回调通知 (Notify Protocol)
支付订单完成事务结算后,CXPAY 会以 GET 方式向商户的 notify_url 发送带签名参数的异步通知。
// 回调请求数据示例
pid=1000&trade_no=CX20260726170001&out_trade_no=OD98765432&type=alipay&name=VIP会员&money=99.00&trade_status=TRADE_SUCCESS&sign=5d41402abc4b2a76b9719d911017c592&sign_type=MD5
⚠️ 商户收到通知后的响应规范:
商户后端服务处理完订单充值发货逻辑后,**必须在 HTTP Response Body 中纯文本打印输出 `success`**(不区分大小写,且前后不要附加任何 HTML 或空格)。若未返回 `success`,系统将触发自动重试通知策略。
商户后端服务处理完订单充值发货逻辑后,**必须在 HTTP Response Body 中纯文本打印输出 `success`**(不区分大小写,且前后不要附加任何 HTML 或空格)。若未返回 `success`,系统将触发自动重试通知策略。
快速集成代码
PHP MD5 签名与下单完整代码
<?php
// 1. 初始化对接参数
$pid = "YOUR_PID";
$key = "YOUR_SECRET_KEY";
$gateWayUrl = "http://localhost:8787/submit.php";
$params = [
'pid' => $pid,
'type' => 'alipay',
'out_trade_no' => 'ORDER_' . time(),
'notify_url' => 'https://yourdomain.com/notify.php',
'return_url' => 'https://yourdomain.com/return.php',
'name' => '测试VIP高级卡',
'money' => '99.00',
];
// 2. 参数按 ASCII 字典升序排序
ksort($params);
// 3. 拼接待签名字符串
$signStr = "";
foreach ($params as $k => $v) {
if ($k !== 'sign' && $k !== 'sign_type' && $v !== '') {
$signStr .= $k . '=' . $v . '&';
}
}
$signStr = rtrim($signStr, '&') . $key;
// 4. 计算 32 位小写 MD5 签名
$params['sign'] = md5($signStr);
$params['sign_type'] = 'MD5';
// 5. 构建自动跳转 POST 表单调起收银台
echo "<form id='epayform' action='{$gateWayUrl}' method='POST'>";
foreach ($params as $k => $v) {
echo "<input type='hidden' name='{$k}' value='{$v}' />";
}
echo "</form><script>document.getElementById('epayform').submit();</script>";