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 秒