返回首页


异步回调通知 (Webhook)

如果在 order_buy 下单接口中传入了 notify_url 参数,当订单的交付状态发生改变时(如发货完成或成功退款),主站服务器将主动向该地址发送异步通知。

回调采用 POST 方式,数据格式为表单(application/x-www-form-urlencoded)。

回调触发事件

  • 自动发货:订单支付成功自动发货后,立即推送。
  • 人工发货:管理员在后台点击“发货”完成人工交付后,立即推送。
  • 售后退款:管理员处理售后申请批准退款后,立即推送。

回调请求参数

参数类型说明
order_idstring主站的系统订单号
out_trade_nostring你下单时传入的商户订单号
statusstring交付状态:"2" = 已发货/已完成,"3" = 已退款
contentstring发货卡密/交付内容。退款事件时为空字符串
timestampstring回调触发的 Unix 时间戳
signstring安全签名,用于验证此通知来自主站。算法详见下方说明

安全签名校验

为了防止假冒通知,强烈建议你在接收回调时校验签名 sign

  1. 收集回调接收到的所有 POST 参数(除 sign 外)。
  2. 将参数按参数名(Key)的 ASCII 码升序排序。
  3. 将排好序的参数按照 key1=value1&key2=value2&... 的格式拼接。
  4. 在拼接好的字符串末尾追加 &key=YOUR_API_KEY
  5. 计算 MD5 哈希值并与 sign 参数进行比对,一致则说明通知真实可信。
PHP 接收回调与验签示例
<?php
// 1. 获取所有 POST 参数
$params = $_POST;
$sign = $params['sign'] ?? '';
unset($params['sign']); // 剔除 sign 参数

// 2. 升序排序
ksort($params);

// 3. 拼接参数
$signStr = '';
foreach ($params as $k => $v) {
    $signStr .= $k . '=' . $v . '&';
}

// 4. 追加你的 API Key
$myApiKey = 'YOUR_API_KEY';
$signStr .= 'key=' . $myApiKey;

// 5. 校验 MD5 值
if (md5($signStr) === $sign) {
    // 签名验证通过,处理订单状态
    $outTradeNo = $_POST['out_trade_no'];
    $status = (int)$_POST['status'];
    $content = $_POST['content']; // 卡密内容
    
    if ($status === 2) {
        // 更新本地订单为已发货,存储卡密 $content
    } elseif ($status === 3) {
        // 更新本地订单为已退款
    }
    
    // 必须响应 "ok" 告知主站成功接收,否则主站可能会重试
    echo "ok";
} else {
    // 签名错误
    header("HTTP/1.1 400 Bad Request");
    echo "sign_error";
}
应答规范:你的回调接收接口处理成功后,请务必直接输出字符 ok (不包含 HTML 标签)。如果输出其他内容,主站会记录为回调异常。