Webhook 集成
Webhook 允许您在特定事件发生时接收实时通知。
概述
支持的 Webhook 事件:
- 异步任务完成
- 监控预警触发
- 账户余额预警
配置 Webhook
1. 在控制台添加 Webhook URL
进入 设置 > Webhook,添加您的接收地址。
2. 选择订阅事件
选择需要接收通知的事件类型。
3. 获取签名密钥
保存签名密钥,用于验证请求来源。
Webhook 请求格式
POST /your-webhook-endpoint
Content-Type: application/json
X-Signature: sha256=xxxxxx
X-Timestamp: 1704067200
{
"event": "task.completed",
"data": {
"taskId": "task_abc123",
"status": "completed",
"result": {...}
},
"timestamp": "2024-01-01T00:00:00Z"
}
签名验证
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return `sha256=${expected}` === signature;
}
// Express 示例
app.post('/webhook', (req, res) => {
const signature = req.headers['x-signature'];
const isValid = verifyWebhook(
JSON.stringify(req.body),
signature,
process.env.WEBHOOK_SECRET
);
if (!isValid) {
return res.status(401).send('Invalid signature');
}
// 处理事件
console.log('Event:', req.body.event);
res.status(200).send('OK');
});
重试机制
如果您的服务未返回 2xx 响应,我们将重试:
- 第 1 次重试:1 分钟后
- 第 2 次重试:5 分钟后
- 第 3 次重试:30 分钟后
最佳实践
- 快速返回 200 响应,异步处理事件
- 实现幂等处理,避免重复消费
- 验证签名,确保请求来源可信