API文档
本文档介绍如何调用 洛辰聚合支付系统 接口,请仔细阅读后进行开发对接。
接口说明
接口采用 HTTP 协议,支持 GET 和 POST 请求方式,参数编码格式为 UTF-8。
接口地址
BASE
https://mzf.f878.cn
支付方式
支付宝
alipay
微信支付
wxpay
QQ钱包
qqpay
USDT
usdt
Submit 支付请求
页面跳转方式,调用后直接跳转到支付页面,适合网页端对接。
GET
POST
https://mzf.f878.cn/pay.php/submit
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
pid | 必填 | int | 商户ID |
type | 必填 | string | 支付方式 |
out_trade_no | 必填 | string | 商户订单号,须保证唯一 |
notify_url | 必填 | string | 异步通知地址 |
return_url | 必填 | string | 支付后跳转地址 |
name | 必填 | string | 商品名称 |
money | 必填 | string | 金额,单位元(如 10.00) |
sign | 必填 | string | 签名字符串 |
sign_type | 必填 | string | 固定值 MD5 |
sitename | 选填 | string | 网站名称 |
MAPI 支付请求
返回 JSON 数据,包含支付链接和二维码信息,适合 API 对接或自定义支付页面。
GET
POST
https://mzf.f878.cn/mapi.php
请求参数
与 Submit 接口参数相同,详见上方表格。
返回示例
{
"code": 1,
"msg": "获取成功",
"trade_no": "YRPay1234520231229120000",
"price": "10.00",
"payurl": "https://xxx.com/pay.php/pay?trade_no=xxx",
"qrcode": "二维码内容或链接",
"urlscheme": ""
}
返回参数
| 参数 | 说明 |
|---|---|
code | 1 表示成功,-1 表示失败 |
msg | 返回信息 |
trade_no | 平台订单号 |
price | 实际支付金额 |
payurl | 支付页面链接 |
qrcode | 二维码内容,可用于生成二维码 |
异步通知
用户支付成功后,系统会向商户设置的 notify_url 发送 GET 请求。
| 参数 | 说明 |
|---|---|
pid | 商户ID |
trade_no | 平台订单号 |
out_trade_no | 商户订单号 |
type | 支付方式 |
name | 商品名称 |
money | 订单金额 |
trade_status | 交易状态,成功为 TRADE_SUCCESS |
sign | 签名 |
sign_type | 签名类型 |
注意:收到通知后请先验证签名,确认无误后返回
success(小写),否则系统会重复发送通知。同步跳转
支付完成后,用户浏览器会跳转到 return_url,参数与异步通知相同。
提示:同步跳转仅作为用户体验使用,订单状态请以异步通知为准。
查询商户信息
查询当前商户的账户信息,包括余额、状态等。
GET
POST
https://mzf.f878.cn/api.php/getuser
请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
pid | 必填 | 商户ID |
key | 必填 | 商户密钥 |
返回示例
{
"code": 1,
"msg": "获取成功",
"pid": 1001,
"username": "testuser",
"money": "100.00",
"status": 1,
"vip_time": "2025-12-31 23:59:59",
"create_time": "2024-01-01 00:00:00"
}
查询单个订单
根据订单号查询单个订单的详细信息。
GET
POST
https://mzf.f878.cn/api.php/getorder
请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
pid | 必填 | 商户ID |
key | 必填 | 商户密钥 |
out_trade_no | 二选一 | 商户订单号 |
trade_no | 二选一 | 平台订单号 |
返回示例
{
"code": 1,
"msg": "获取成功",
"trade_no": "YRPay1234520231229120000",
"out_trade_no": "202312290001",
"type": "alipay",
"name": "测试商品",
"money": "10.00",
"price": "10.00",
"status": 1,
"addtime": "2023-12-29 12:00:00",
"endtime": "2023-12-29 12:05:00"
}
status 状态说明:0 = 未支付,1 = 已支付批量查询订单
分页查询商户的订单列表,支持按状态、类型、时间筛选。
GET
POST
https://mzf.f878.cn/api.php/getorders
请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
pid | 必填 | 商户ID |
key | 必填 | 商户密钥 |
page | 选填 | 页码,默认 1 |
limit | 选填 | 每页数量,默认 20,最大 100 |
status | 选填 | 订单状态:0=未支付 1=已支付 |
type | 选填 | 支付类型:alipay/wxpay/qqpay/usdt |
start_time | 选填 | 开始时间,如 2023-12-01 00:00:00 |
end_time | 选填 | 结束时间,如 2023-12-31 23:59:59 |
返回示例
{
"code": 1,
"msg": "获取成功",
"total": 100,
"page": 1,
"limit": 20,
"list": [
{
"trade_no": "YRPay1234520231229120000",
"out_trade_no": "202312290001",
"type": "alipay",
"name": "商品名称",
"money": "10.00",
"price": "10.00",
"status": 1,
"addtime": "2023-12-29 12:00:00",
"endtime": "2023-12-29 12:05:00"
}
]
}
PC 监控心跳
用于 PC 客户端维持在线状态,确保监控软件正常运行。
GET
POST
https://mzf.f878.cn/api.php/pc_monitor
请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
act | 必填 | 固定值 YRPay_Cron |
account | 必填 | 用户账号 |
password | 必填 | 用户密码 |
wxpay_channel_id | 必填 | 通道ID |
wxpay_login_status | 必填 | 状态:1=在线,0=离线 |
返回示例
{
"code": 1,
"msg": "Success"
}
PC 监控回调
PC 客户端监控到收款后,调用此接口进行回调通知。
GET
POST
https://mzf.f878.cn/api.php/pc_monitor
请求参数
| 参数 | 必填 | 说明 |
|---|---|---|
act | 必填 | 固定值 YRPay_Notify |
account | 必填 | 用户账号 |
password | 必填 | 用户密码 |
money | 必填 | 实收金额 |
type | 选填 | 支付类型 |
返回示例
{
"code": 1,
"msg": "Success"
}
签名算法
签名用于验证请求的合法性,生成步骤如下:
- 将所有参数按参数名 ASCII 码从小到大排序(字典序)
- 将参数按
key=value格式用&连接成字符串 - 在字符串末尾直接拼接商户密钥
- 对拼接后的字符串进行 MD5 加密,得到32位小写签名
sign 和 sign_type 不参与签名,空值参数也不参与。代码示例
PHP - 发起支付
<?php
$pid = '1001'; // 商户ID
$key = 'YourSecretKey'; // 商户密钥
$apiUrl = 'https://mzf.f878.cn';
$params = [
'pid' => $pid,
'type' => 'alipay',
'out_trade_no' => date('YmdHis') . mt_rand(1000,9999),
'notify_url' => 'https://你的域名/notify.php',
'return_url' => 'https://你的域名/return.php',
'name' => '商品名称',
'money' => '10.00',
];
// 生成签名
ksort($params);
$signStr = '';
foreach ($params as $k => $v) {
if ($v !== '') $signStr .= "{$k}={$v}&";
}
$signStr = rtrim($signStr, '&') . $key;
$params['sign'] = md5($signStr);
$params['sign_type'] = 'MD5';
// 跳转支付
header('Location: ' . $apiUrl . '/pay.php/submit?' . http_build_query($params));
?>
PHP - 异步通知处理
<?php
$key = 'YourSecretKey';
$params = $_GET;
$sign = $params['sign'];
unset($params['sign'], $params['sign_type']);
ksort($params);
$signStr = '';
foreach ($params as $k => $v) {
if ($v !== '') $signStr .= "{$k}={$v}&";
}
$signStr = rtrim($signStr, '&') . $key;
if (md5($signStr) !== $sign) {
exit('签名错误');
}
if ($params['trade_status'] !== 'TRADE_SUCCESS') {
exit('交易未成功');
}
// TODO: 处理订单逻辑
echo 'success';
?>