跳到主要内容

Webhook

欺诈状态更新(针对转人工分析或响应为待处理的订单)以及卖家封锁,均通过 Webhook 进行通知。为此,需要通过支持团队配置一个端点地址,我们将通过该地址通知更新,同时还需配置一个用于签署请求的 signature_key

对于订单状态更新,客户也可以使用轮询技术。在这种情况下,不需要配置 webhook 端点,只需使用 Order 检索端点进行轮询即可。

注意

出于安全原因,所有 Webhook 请求仅在 HTTPS 提供的端点上执行。

签名

Python 签名计算示例

    hmac_obj = hmac.new(signature_key.encode('utf-8'), (url + method + payload).encode('utf-8'), hashlib.sha1)
return hmac_obj.hexdigest()

为确保接收到的 webhook 端点请求来自我们的服务器,类似于认证过程,在 Signature Header 中发送 HMAC 签名。

在服务器端计算出签名预期值后,需要将计算出的签名与发送的签名进行比较。如果签名匹配,则意味着请求来自我们的服务器并且是可信的。

订单更新 Webhook

Request Body
    {
"order_id": "123456",
"fraud_status": "automatically_approved",
"event_date": "2019-10-01T10:37:25-03:00"
}

更新订单分析状态的请求具有上述格式,并通知欺诈状态的变更。所用方法为 PUT,端点地址可以根据客户需要包含订单 ID。重要提示:请求体以 UTF-8 编码文本形式发送。

订单更新端点示例:

event_date 字段表示通知创建的日期和时间,如果之前的通知发送失败,该时间可能在过去。

卖家更新 Webhook

结算封锁请求示例

Request Body
    {
"document_number": "000.000.000-00",
"settlement_status": "blocked",
"event_date": "2019-10-01T10:37:25-03:00"
}

交易封锁请求示例

Request Body
    {
"document_number": "000.000.000-00",
"transactional_status": "blocked",
"event_date": "2019-10-01T10:37:25-03:00"
}

当需要封锁或解封卖家时,QI Tech 系统将发送上述格式的请求。使用的方法为 PUT,发送至可配置端点,客户可根据需要在端点地址中包含文件号码。

注意

settlement_status 或 transactional_status 字段的存在决定了卖家封锁或解封的类型。

卖家更新端点示例:

可通知的结算状态如下:

枚举值描述
blocked卖家的结算应被封锁
unblocked卖家的结算应被解除封锁

event_date 字段表示通知创建的日期和时间,如果之前的通知发送失败,该时间可能在过去。

重试

当收到 HTTP Status 200 响应时,通知被视为已送达。如果通知失败,将进行 7 次重试,时间间隔如下,直到收到 200 或重试结束:

  • 10 秒
  • 40 秒
  • 160 秒
  • 640 秒
  • 2560 秒
  • 10240 秒
  • 40960 秒