跳到主要内容

接收 Webhooks

Webhooks 的签名采用对称密钥加密策略,即 QI CTVM 和集成合作伙伴共享同一密钥。 配置 Webhooks 时,我们将生成一个 Signature Key 并提供给您。QI 系统发出的每个请求都将携带一个 SIGNATURE header,该 header 是用此密钥签名的 JWT。编码使用 HS256 算法。

该 token 携带以下 claims:

Claim描述
timestamp生成签名的 UTC 日期时间,格式为 YYYY-MM-DDTHH:MM:SS。
method请求的 HTTP 方法,始终为 POST。
uri配置用于接收 webhook 的完整 URL。
payload_md5请求体的 MD5 值(十六进制)。存在请求体时始终携带。

请求体不会被直接签名。如需校验完整性,请解码 token 并将 payload_md5 与所收到请求体的 MD5 值进行比对。

以下是使用 Python 对签名进行解码的示例:

from jose import jwt

signature_key = "CHAVE UNICA CONFIGURADA"

signature_token = headers["SIGNATURE"]

decoded_token = jwt.decode(signature_token, key=signature_key, algorithms=["HS256"])
print(decoded_token)

我们建议集成合作伙伴除了验证签名外,还应验证我们的 IP 地址,因为我们所有请求都来自同一 IP,具体 IP 根据环境而定:

环境IP
生产-
沙盒-
注意!

QI CTVM 的 webhooks 不应以严格方式映射。 我们的 API 返回的 webhook 载荷中可能会包含额外字段。