本系统为测试补单沙箱:接收下单请求后,按商户配置的延迟与成功率自动回调。不涉及真实资金。
sign 本身k1=v1&k2=v2&...&key=商户私钥sign = md5(拼接串),小写 32 位示例原文: amount=1.00&body=测试&merchant_no=M001¬ify_url=https://example.com/n&out_trade_no=T1001&title=商品&key=你的私钥 sign = md5(上述原文)
POST /api/create_order.php(form 或 JSON)
| 参数 | 必填 | 说明 |
|---|---|---|
| merchant_no | 是 | 商户号 |
| title | 是 | 订单标题 |
| body | 否 | 订单信息 |
| out_trade_no | 是 | 商户单号(商户内唯一) |
| amount | 是 | 支付金额,元,最多两位小数 |
| notify_url | 是 | 异步回调地址 http/https |
| sign | 是 | MD5 签名 |
平台单号即渠道单号(28位纯数字)。成功后返回 pay_url 空白支付页;系统会按商户“自动访问延迟”访问该链接开启补单,再按补单延迟与成功率回调。
{
"code": 0,
"msg": "accepted",
"data": {
"order_no": "2026101523001457951455284631",
"out_trade_no": "T1001",
"amount": "1.00",
"status": 0,
"status_text": "waiting_open",
"pay_url": "http://你的域名/pay.php?no=2026101523001457951455284631",
"auto_open_at": "2026-11-02 12:00:05",
"auto_open_seconds": 5
}
}
平台在计划时间 POST 到 notify_url(application/x-www-form-urlencoded)
| 参数 | 说明 |
|---|---|
| merchant_no | 商户号 |
| order_no | 平台单号(即渠道单号,28位纯数字) |
| out_trade_no | 商户单号 |
| title / body / amount | 订单信息 |
| trade_status | SUCCESS 或 FAIL |
| timestamp | Unix 时间戳 |
| sign | MD5 签名 |
商户验签通过后请返回纯文本 success(不区分大小写)。否则最多再通知 3 次,仍失败则停止通知。
本地可把 notify_url 指到 /api/demo_notify.php 做联调。
function sandbox_sign(array $params, string $key): string {
unset($params['sign']);
ksort($params);
$parts = [];
foreach ($params as $k => $v) {
if ($v === '' || $v === null) continue;
$parts[] = $k . '=' . $v;
}
return md5(implode('&', $parts) . '&key=' . $key);
}