聚合收款 · 商户接入文档

一、统一下单

POST https://selfpay.myclass.top/submit(Content-Type: application/x-www-form-urlencoded)

下单成功后返回收款页地址 pay_url,引导用户跳转或输出二维码即可。

请求参数

字段必填说明
appid商户APPID(后台「商户密钥」中获取)
out_trade_no商户订单号,64位内唯一
money订单金额,单位元,两位小数,如 10.00
typealipay=支付宝 / wechat=微信
title商品名称
notify_url异步回调地址,支付成功后POST通知
return_url支付成功后的同步跳转地址
param透传参数,回调时原样返回
sign签名,见下方规则

签名规则(MD5)

1. 排除 sign、sign_type 和空值参数,按参数名 ASCII 码升序排序;
2. 拼接成 k1=v1&k2=v2...
3. 末尾拼接 &key=你的商户密钥secret
4. 整体 MD5 后转小写即为 sign。

sign = md5("appid=10001&money=10.00&out_trade_no=20240101123456&type=alipay&key=sk_xxxxxx")

返回示例

{
    "code": 1,
    "msg": "下单成功",
    "data": {
        "trade_no": "20240101120000123456",   // 系统订单号
        "out_trade_no": "20240101123456",     // 商户订单号
        "money": "10.00",                     // 提交金额
        "pay_money": "10.37",                 // 实际应付金额(含识别尾数)
        "pay_url": "http://yourdomain.com/pay/20240101120000123456",  // 收款页
        "qr_img": "https://...",              // 收款码图片
        "expiretime": 1704072000              // 过期时间戳
    }
}

二、查询订单状态

GET https://selfpay.myclass.top/api/status?trade_no=系统订单号

返回 data.status:0=待支付 1=已支付 2=已过期。

三、异步回调

支付成功后系统向 notify_url 发送 POST 表单请求,参数包含: appid、out_trade_no、trade_no、money、pay_money、type、status(=1)、param、paytime、sign。 签名规则与下单一致,商户务必验签并核对金额后处理业务,处理成功请输出 success(区分大小写不限)。 未响应 success 视为失败,可在后台「订单管理」中重发回调。

四、PHP下单示例

<?php
$param = [
    'appid'        => '10001',
    'out_trade_no' => date('YmdHis') . rand(100, 999),
    'money'        => '10.00',
    'type'         => 'alipay',
    'title'        => '测试商品',
    'notify_url'   => 'https://yoursite.com/notify.php',
    'return_url'   => 'https://yoursite.com/return.php',
];
ksort($param);
$str = '';
foreach ($param as $k => $v) {
    if ($v === '' || $v === null) continue;   // 空值不参与签名
    $str .= ($str ? '&' : '') . $k . '=' . $v;
}
$param['sign'] = md5($str . '&key=sk_xxxxxx');

$ch = curl_init('https://selfpay.myclass.top/submit');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($param),
    CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
0.081030s