> ## Documentation Index
> Fetch the complete documentation index at: https://developers.uqpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> 使用 Go SDK 验证传入的 UQPAY Webhook 签名。

使用Webhook secret创建`webhook.NewVerifier`，然后把未经修改的payload和UQPAY签名headers传给`ConstructEvent`。

实现签名验证前，请先[配置通知URL](/zh/account-center/v1.6/guide/webhooks-setting)，并了解[Webhook投递与安全机制](/zh/account-center/v1.6/guide/webhooks-overview)。

```go theme={null}
import "github.com/uqpay/uqpay-sdk-go/webhook"

verifier := webhook.NewVerifier(webhookSecret)
event, err := verifier.ConstructEvent(
    rawPayload,
    request.Header.Get("x-wk-signature"),
    request.Header.Get("x-wk-timestamp"),
)
if err != nil {
    http.Error(writer, "invalid webhook", http.StatusBadRequest)
    return
}
```

验证器会计算`HMAC-SHA512(secret, rawPayload + timestamp)`、拒绝超出默认5分钟防重放窗口的时间戳，并解析通用事件envelope。

<Warning>
  请在解析JSON前验证原始请求字节。重新序列化payload会改变签名输入。
</Warning>

Webhook event type保持为字符串，因此在新增服务端事件尚未提供带类型payload helper时，客户端仍可接收这些事件。
