Checkify
开发人员文档

在后端验证

浏览器嵌入完成后,您的服务器必须使用站点API密钥验证结果,然后才能允许注册、结帐或任何受保护的操作。

1。创建站点API key

在您的业务仪表板中,打开 开发者 并为您正在集成的站点创建一个站点 API 密钥。仅将其存储在服务器环境变量中 - 切勿将其发送到浏览器。

2.从您的表单中读取参考

嵌入 SDK 将 request_id 写入您的隐藏字段(旧版集成可能仍会提交轮询令牌 - 两者都有效)。

// Example POST body from your frontend form
{
  "email": "user@example.com",
  "checkify_token": "56a57761-ff5b-42f0-9c97-6c13e223e017"
}

3。调用verify

POST https://checkify.me/v1/qr/results/verify
Authorization: Bearer YOUR_SITE_API_KEY
Content-Type: application/json

{
  "request_id": "56a57761-ff5b-42f0-9c97-6c13e223e017",
  "required_claims": ["human_verified"],
  "consume": true
}

也可以发送 token 代替 request_id.

FastAPI示例

from checkify_server import Checkify

checkify = Checkify(api_key=os.environ["CHECKIFY_SITE_API_KEY"])

@app.post("/signup")
async def signup(email: str, checkify_token: str):
    result = checkify.verify_human(request_id=checkify_token)
    if not result.get("success") or not result.get("approved"):
        raise HTTPException(status_code=403, detail="Human verification required")
    # continue signup...

表达示例

import { Checkify } from "@checkify/server";

const checkify = new Checkify({ apiKey: process.env.CHECKIFY_SITE_API_KEY });

app.post("/signup", async (req, res) => {
  const result = await checkify.verifyHuman({
    requestId: req.body.checkify_token,
  });

  if (!result.success || !result.approved) {
    return res.status(403).json({ error: "Human verification required" });
  }

  // continue signup...
});

响应处理

字段含义
successtrue 验证完成且要求匹配时
statuscompletedpending
approved_claims声明Checkify已批准,例如 human_verified: true
signed_result用于审计跟踪的可选签名负载

安全提醒

将隐藏字段视为不可信参考,而不是证据。在授予访问权限之前,请务必使用服务器上的站点 API 密钥进行验证。使用 consume: true 进行注册或密码重置等一次性操作。