Files
order_site/docs/发货平台-2/2.5-接口-订单异步通知.md
T
2026-07-07 08:51:23 +08:00

2.1 KiB
Raw Blame History

订单异步通知 创建订单时可传入 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]);