Integration · 同步 API / SDK 示例 / Webhook 回调

三种语言示例,五分钟接入

API Key 一枚即可调用决策接口;Java / Python / Go 零依赖示例开箱即用; 事件驱动场景开启 Webhook 回调,HMAC-SHA256 签名保证来源可信。

🔗

同步决策 API

POST /api/v1/decision/{modelCode},X-Api-Key 认证,毫秒级返回决策/得分/原因码/动作。

📦

零依赖 SDK 示例

Java 11+ / Python 3.8+ / Go 1.20+ 三语言示例仅用标准库,复制即用,仓库 examples/ 目录。

🔔

Webhook 回调

决策完成异步推送结果摘要,失败自动重试 3 次,控制台可查投递状态与连续失败计数。

🔐

安全治理

IP 白名单(支持 CIDR)、按 Key 速率限制、时间戳+Nonce 防重放、HMAC 回调验签。

第一步:调用决策 API

系统管理 → API Key 新建凭证(可配置限速 / IP 白名单 / 过期时间),然后一行 curl 验证连通。

bash
curl -X POST https://radar.example.com/api/v1/decision/loan_test \
  -H "X-Api-Key: radar-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"requestId":"order-10086-1","eventData":{"amount":12000,"age":30}}'

# 响应(R<T> 统一包装)
{ "success": true, "data": {
    "decision": "REVIEW",  // PASS / REVIEW / REJECT
    "score": 95.0, "reasonCode": "MK_003",
    "hitPolicies": [ ... ], "actions": [ ... ], "durationMs": 69 } }

第二步:嵌入你的项目(SDK 示例)

三个语言的完整可运行示例随仓库提供(examples/),均只依赖标准库并内置防重放头。 此处以 Python 为例:

python
import json, os, secrets, time, urllib.request

BASE_URL = os.environ["RADAR_BASE_URL"]
API_KEY  = os.environ["RADAR_API_KEY"]

def decide(model, event_data, request_id):
    payload = json.dumps({"requestId": request_id, "eventData": event_data}).encode()
    req = urllib.request.Request(f"{BASE_URL}/api/v1/decision/{model}",
        data=payload, method="POST", headers={
            "Content-Type": "application/json",
            "X-Api-Key": API_KEY,
            "X-Timestamp": str(int(time.time() * 1000)),   # 防重放
            "X-Nonce": secrets.token_hex(8),
        })
    with urllib.request.urlopen(req, timeout=5) as resp:
        return json.load(resp)["data"]

result = decide("loan_test", {"amount": 12000, "age": 30}, "order-10086-1")
print(result["decision"], result["score"], result["reasonCode"])

Java / Go 示例要点

第三步(可选):开启 Webhook 异步通知

系统管理 → Webhook 通知:配置回调地址与签名密钥,点「发送测试」验证连通。 决策完成后自动 POST 结果摘要(不含入参明细,敏感数据不出域)。

python · 接收方验签
import hmac, hashlib

# 请求头:X-Radar-Signature: sha256=<hex(HMAC-SHA256(secret, raw_body))>
expected = "sha256=" + hmac.new(
    secret.encode(), raw_body, hashlib.sha256).hexdigest()
assert hmac.compare_digest(expected, request.headers["X-Radar-Signature"])

# 建议以 requestId 幂等去重(推送在极端情况下可能重复)

推送行为

完整的操作与接入文档

《用户手册》覆盖快速上手、各模块操作、审核闭环、灰度发布与安全建议;压测数据见《性能报告》。