Webhook 管理
Webhook 是 GStable 向你的后端系统实时推送事件通知(如支付成功、结算完成)的机制。通过 Webhook API,你可以通过程序化方式管理你的接收端点。
限制说明
为了保证推送质量,每个账户最多允许创建 10 个 Webhook 端点。
Webhook 对象
核心属性
| 属性 | 类型 | 描述 |
|---|---|---|
webhookId | String | Webhook 的唯一标识符(如 wkid_DDr1EN...)。 |
webhookName | String | 用于识别该端点的名称。 |
webhookUrl | String | 接收 POST 请求的 HTTPS URL。 |
status | String | 当前状态。见下文状态定义。 |
subscribedEvents | Array | 订阅的事件类型列表(如 session.paid)。 |
key | String | 签名密钥。用于验证回调通知的合法性。 |
状态定义 (Status)
| 状态 | 标识符 | 描述 |
|---|---|---|
| 活跃 | active | 正常状态。平台会向该端点发送通知。 |
| 已禁用 | inactive | 用户手动禁用。平台停止发送通知。 |
| 已暂停 | paused | 系统自动暂停。当平台向该 URL 发送通知连续多次失败(如 500 错误或超时)后,会自动将状态置为 paused。你需要修复服务器问题后,手动将其恢复为 active。 |
创建 Webhook
POST /webhook/create
创建一个新的接收端点。创建成功后,系统会生成一个唯一的签名密钥 (key),请妥善保存。
请求参数
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
webhookName | String | ✅ | 名称(最大 100 字符)。 |
webhookUrl | String | ✅ | 回调 URL(最大 1000 字符)。必须是 HTTPS。 |
subscribedEvents | String[] | ✅ | 订阅的事件列表。 |
webhookDescription | String | ❌ | 描述信息(最大 1000 字符)。 |
请求示例
{
"webhookName": "生产环境接收端",
"webhookUrl": "https://api.yoursite.com/webhooks/gstable",
"webhookDescription": "用于接收支付完成和结算完成事件",
"subscribedEvents": [
"session.paid",
"session.completed"
]
}
响应示例
{
"code": 0,
"message": "success",
"data": {
"webhookId": "wkid_DDr1ENAGmHjPy3Oq",
"webhookName": "生产环境接收端",
"webhookDescription": "用于接收支付完成和结算完成事件",
"webhookUrl": "https://api.yoursite.com/webhooks/gstable",
"subscribedEvents": [
"session.paid",
"session.completed"
],
"key": "wkk_example_secret_key_000",
"createAt": "2026-01-03 08:36:03",
"updateAt": "2026-01-03 08:36:03",
"status": "active"
}
}
更新 Webhook
POST /webhook/update
全量更新
更新接口采用全量替换策略。调用此接口时,必须传递 Webhook 的所有字段(包括那些不想修改的字段)。
请求示例
{
"webhookId": "wkid_DDr1ENAGmHjPy3Oq",
"webhookName": "生产环境接收端 (已更新)",
"webhookUrl": "https://api.yoursite.com/webhooks/gstable_v2",
"webhookDescription": "更新了回调地址",
"subscribedEvents": [
"session.paid"
]
}
响应示例
{
"code": 0,
"message": "success",
"data": {
"success": true
}
}
获取 Webhook 列表
GET /webhook/list
由于平台限制每个账户最多创建 10 个 Webhook,此接口返回全量列表,不提供分页。
响应示例
{
"code": 0,
"message": "success",
"data": {
"webhooks": [
{
"webhookId": "wkid_DDr1ENAGmHjPy3Oq",
"webhookName": "测试webhook",
"webhookUrl": "https://webhook.example.com/gstable",
"status": "active",
"key": "wkk_example_secret_key_000",
...
}
]
}
}
获取 Webhook 详情
GET /webhook/detail/:webhookId
响应示例
{
"code": 0,
"message": "success",
"data": {
"webhookId": "wkid_DDr1ENAGmHjPy3Oq",
"webhookName": "测试Webhook-更新",
"webhookDescription": "用于接收支付完成和结算完成事件",
"webhookUrl": "https://www.google.com",
"subscribedEvents": [
"session.paid"
],
"key": "wkk_example_secret_key_000",
"createAt": "2026-01-03 08:36:03",
"updateAt": "2026-01-03 09:10:05",
"status": "active"
}
}
状态管理
你可以手动禁用或启用 Webhook。如果 Webhook 因多次投递失败进入 paused 状态,也需要通过“启用”接口将其恢复。
禁用 (Disable)
POST /webhook/disable
启用 (Enable)
POST /webhook/enable
请求示例
{
"webhookId": "wkid_DDr1ENAGmHjPy3Oq"
}
响应示例
{
"code": 0,
"message": "success",
"data": {
"success": true
}
}
密钥管理
刷新密钥 (Rotate Key)
POST /webhook/key/refresh
如果你怀疑签名密钥 (key) 已泄露,可以调用此接口生成一个新的密钥。
注意: 刷新密钥后,旧密钥将立即失效。请务必同步更新你的后端验证逻辑,否则将导致验签失败。
请求示例
{
"webhookId": "wkid_DDr1ENAGmHjPy3Oq"
}
响应示例
{
"code": 0,
"message": "success",
"data": {
"success": true
}
}
删除 Webhook
POST /webhook/remove
永久删除一个 Webhook 端点。
请求示例
{
"webhookId": "wkid_DDr1ENAGmHjPy3Oq"
}
响应示例
{
"code": 0,
"message": "success",
"data": {
"success": true
}
}