订单异步通知
创建订单时可传入 notify_url。当该订单充值状态发生变化时，平台将向该地址 POST JSON 通知（队列异步发送，失败自动重试）。

#触发时机
下单成功创建订单后（首次状态，如 15 待绑定）
之后每次 recharge_status 变更（如 17 已提交、30 成功、40 失败等）
仅 开放 API 订单（platform=api）且下单时传了有效 notify_url 才会推送。

#商户接收要求
项目	说明
方法	POST
Content-Type	application/json
成功响应	HTTP 2xx（建议返回 {"code":0} 或纯文本 OK）
超时	平台默认 10 秒，超时或 5xx 将按队列重试（默认最多 5 次）
#签名
Header：

Header	说明
X-App-Key	您的 App Key
X-Timestamp	Unix 秒级时间戳
X-Sign	HMAC_SHA256(app_key + timestamp + raw_json_body, app_secret) 小写 hex
验签时使用与请求开放 API 完全相同的原始 Body 字符串，勿重新格式化 JSON。

#通知 Body 结构
json
{
  "event": "order.status_changed",
  "order": {
    "order_no": "202601011200001234",
    "platform_order_no": "YOUR-ORDER-001",
    "platform": "api",
    "product_code": "10000001",
    "product_name": "和平精英点券",
    "recharge_status": 30,
    "recharge_status_label": "充值成功",
    "status": 30,
    "status_label": "充值成功",
    "points_charged": 3800,
    "player_account": "123456789",
    "notify_url": "https://your-server.com/open-api/order-notify",
    "recharge_finish_at": "2026-01-01 12:30:00",
    "updated_at": "2026-01-01 12:30:00"
  }
}
order 字段与「查询订单」接口结构基本一致（通知中不含 h5 链接；含 product_code）。

#PHP 验签示例
php
$rawBody = file_get_contents('php://input');
$appKey = $_SERVER['HTTP_X_APP_KEY'] ?? '';
$timestamp = $_SERVER['HTTP_X_TIMESTAMP'] ?? '';
$sign = $_SERVER['HTTP_X_SIGN'] ?? '';
$appSecret = 'your_app_secret';

$expected = hash_hmac('sha256', $appKey . $timestamp . $rawBody, $appSecret);
if (!hash_equals($expected, $sign)) {
    http_response_code(401);
    exit('invalid sign');
}

$data = json_decode($rawBody, true);
// 处理 $data['order'] ...

http_response_code(200);
echo json_encode(['code' => 0]);

