跳到主要内容
Didit 融资 750 万美元,打造身份与欺诈基础设施
Didit
返回博客
博客 · 2026年3月6日

将 Didit 地址证明与 FastAPI 和 MongoDB 集成 (ZH)

了解如何通过将 Didit 的地址证明验证与 FastAPI 后端和 MongoDB 集成,构建可扩展的 KYC 系统。本指南涵盖环境设置、文档上传处理和验证流程。.

作者:Didit更新于
integrating-didits-proof-of-address-with-fastapi-and-mongodb.png

无缝集成将 Didit 的地址证明 API 与 FastAPI 和 MongoDB 集成,创建强大且可扩展的 KYC 后端,简化您的验证工作流程。

自动化验证利用 Didit 的 AI 原生能力,自动提取、验证地址文件并进行真实性检查,减少人工审查并提高准确性。

可配置的工作流程利用 Didit 灵活的设置,为各种验证结果(例如姓名不匹配或文件质量问题)定义自定义操作,确保符合不同的法规要求。

可扩展且经济高效Didit 提供模块化、开发者优先的方法,包括免费核心 KYC 和按成功检查付费的定价模式,使其成为寻求可扩展身份验证的各种规模企业的理想选择。

KYC 中地址证明验证的挑战

地址证明 (PoA) 验证是金融服务到在线市场等各个行业“了解您的客户”(KYC) 流程的关键组成部分。它对于确认用户的实际住址至关重要,有助于防止欺诈、遵守反洗钱 (AML) 法规并建立信任。然而,手动审查水电费账单、银行对账单和政府签发的文件既耗时又容易出错,并且无法扩展。企业需要一个强大、自动化且安全的解决方案来处理 PoA 验证的复杂性,同时保持流畅的用户体验。

传统的 PoA 解决方案通常涉及复杂的集成、高昂的设置成本和僵化的工作流程。这正是 Didit 等现代 AI 原生身份平台脱颖而出之处,它提供了一种开发者优先的方法,简化了集成并提供了强大、自动化的验证功能。通过将 Didit 的地址证明 API 与 FastAPI 等可扩展后端和 MongoDB 等灵活的 NoSQL 数据库相结合,企业可以构建高效且合规的 KYC 系统。

设置您的 FastAPI 和 MongoDB 环境

首先,您需要一个 FastAPI 应用程序和一个 MongoDB 实例。选择 FastAPI 是因为它具有高性能和易用性,而 MongoDB 则提供了存储各种文档类型和验证报告的灵活性。以下是一个基本设置:

1. FastAPI 应用程序设置

首先,安装 FastAPI 和 Uvicorn:

pip install fastapi uvicorn python-multipart motor

创建一个 main.py 文件:

from fastapi import FastAPI, UploadFile, File, Form, HTTPException
from motor.motor_asyncio import AsyncIOMotorClient
from typing import Optional
import httpx
import os

app = FastAPI()

# MongoDB setup
MONGO_DETAILS = os.getenv("MONGO_DETAILS", "mongodb://localhost:27017")
client = AsyncIOMotorClient(MONGO_DETAILS)
database = client.didit_kyc

# Didit API Key
DIDIT_API_KEY = os.getenv("DIDIT_API_KEY")
if not DIDIT_API_KEY:
    raise ValueError("DIDIT_API_KEY environment variable not set")

@app.on_event("startup")
async def startup_db_client():
    app.mongodb_client = client
    app.mongodb = database

@app.on_event("shutdown")
async def shutdown_db_client():
    app.mongodb_client.close()

@app.get("/health")
async def health_check():
    return {"status": "ok", "message": "FastAPI is running"}

2. MongoDB 连接

确保 MongoDB 正在运行,无论是本地还是通过云服务。motor 库支持与 MongoDB 的异步交互,这对于高性能 FastAPI 应用程序至关重要。

集成 Didit 的地址证明 API

Didit 的地址证明 API 允许您提交文档图像或 PDF 进行验证,提取和验证地址信息,执行真实性检查,并返回结构化数据。得益于 Didit 的 AI 原生架构,此过程旨在实现高度自动化和准确。

1. 将文档发送到 Didit

您需要在 FastAPI 应用程序中创建一个端点,以接受文档上传并将其转发到 Didit。Didit 的 API 支持各种文档类型(PDF、JPEG、PNG、WebP、TIFF),并提供可配置的参数以增强验证。

@app.post("/verify-poa/")
async def verify_proof_of_address(
    document: UploadFile = File(...),
    expected_first_name: Optional[str] = Form(None),
    expected_last_name: Optional[str] = Form(None),
    expected_address: Optional[str] = Form(None),
    expected_country: Optional[str] = Form(None),
    poa_name_mismatch_action: str = Form("DECLINE"),
    poa_document_issues_action: str = Form("DECLINE"),
    poa_document_authenticity_action: str = Form("DECLINE"),
):
    if not document.content_type.startswith(('image/', 'application/pdf')):
        raise HTTPException(status_code=400, detail="Invalid document format. Only images and PDFs are allowed.")

    DIDIT_POA_ENDPOINT = "https://verification.didit.me/v3/poa/"
    headers = {"x-api-key": DIDIT_API_KEY}

    # Prepare form data for Didit API
    files = {'document': (document.filename, document.file.read(), document.content_type)}
    data = {
        "poa_name_mismatch_action": poa_name_mismatch_action,
        "poa_document_issues_action": poa_document_issues_action,
        "poa_document_authenticity_action": poa_document_authenticity_action,
    }
    if expected_first_name: data["expected_first_name"] = expected_first_name
    if expected_last_name: data["expected_last_name"] = expected_last_name
    if expected_address: data["expected_address"] = expected_address
    if expected_country: data["expected_country"] = expected_country

    async with httpx.AsyncClient() as client:
        try:
            didit_response = await client.post(DIDIT_POA_ENDPOINT, headers=headers, files=files, data=data, timeout=30.0)
            didit_response.raise_for_status()
            poa_result = didit_response.json()

            # Store the result in MongoDB
            verification_record = {
                "filename": document.filename,
                "user_id": "some_user_id", # Replace with actual user ID from your system
                "timestamp": datetime.utcnow(),
                "didit_response": poa_result,
                "status": poa_result['poa']['status']
            }
            await app.mongodb["poa_verifications"].insert_one(verification_record)

            return {"message": "POA verification initiated and result stored.", "result": poa_result}
        except httpx.HTTPStatusError as e:
            raise HTTPException(status_code=e.response.status_code, detail=f"Didit API error: {e.response.text}")
        except Exception as e:
            raise HTTPException(status_code=500, detail=f"An unexpected error occurred: {str(e)}")

此端点处理文件上传,为 Didit 的 API 构建请求,然后处理响应。请注意使用 httpx.AsyncClient 进行非阻塞 HTTP 请求,这对于 FastAPI 的性能至关重要。

2. 了解 Didit 的地址证明报告

Didit 为每个 PoA 验证提供全面的 JSON 报告。此报告包括:

  • poa.status:整体验证状态(已批准、已拒绝、正在审核)。
  • poa.document_type:自动检测的文档类型(例如,UTILITY_BILL、BANK_STATEMENT)。
  • poa.issuerpoa.issue_datepoa.expiration_date:关键文档详细信息。
  • poa.name_on_documentpoa.poa_addresspoa.poa_formatted_addresspoa.poa_parsed_address:提取和结构化的地址信息。
  • poa.warnings:检测到的任何警告或问题列表,例如 POOR_DOCUMENT_QUALITYNAME_MISMATCH_WITH_PROVIDEDSUSPECTED_DOCUMENT_MANIPULATION

这些详细的见解允许进行复杂的决策和自动化处理边缘情况。Didit 的可配置验证设置,例如 poa_name_mismatch_actionpoa_document_issues_action,允许您定义系统如何响应特定风险,确保合规性并减少人工干预。

使用 MongoDB 存储和管理验证数据

MongoDB 是存储 PoA 验证结果的绝佳选择,因为它具有灵活的文档模型。您可以直接存储 Didit 的整个 JSON 响应,从而无需预定义模式即可轻松查询和分析。这种灵活性在验证要求发生变化或出现新数据点时至关重要。

1. 存储验证记录

如 FastAPI 示例所示,didit_response 直接存储在 poa_verifications 集合中。这种方法捕获了 Didit 提供的所有丰富数据。

2. 查询验证记录

您可以轻松查询 MongoDB 集合以检索验证状态、需要审查的文档或特定的用户数据:

from datetime import datetime

@app.get("/poa-verifications/{user_id}")
async def get_poa_history(user_id: str):
    records = await app.mongodb["poa_verifications"].find({"user_id": user_id}).to_list(100)
    if not records:
        raise HTTPException(status_code=404, detail="No POA records found for this user.")
    # MongoDB _id is an ObjectId, convert to string for JSON serialization
    for record in records:
        record["_id"] = str(record["_id"])
    return records

@app.get("/poa-needs-review/")
async def get_poa_needs_review():
    records = await app.mongodb["poa_verifications"].find({"status": "In Review"}).to_list(100)
    for record in records:
        record["_id"] = str(record["_id"])
    return records

这些端点允许您获取用户的 PoA 历史记录或检索所有需要手动审查的验证,展示了 MongoDB 在管理复杂合规数据方面的强大功能。

Didit 如何提供帮助

Didit 提供了一个 AI 原生、开发者优先的身份平台,可简化地址证明等复杂的身份验证流程。我们的地址证明产品通过从各种文档中提取和验证关键信息,提供全面的验证。它自动检测文档类型,将地址解析为结构化格式,并执行真实性检查以识别潜在的操作。借助 Didit,您将受益于:

  • 模块化架构:轻松将 PoA 验证作为独立服务集成,或将其与 Didit 的其他产品(如身份验证AML 筛选与监控)结合使用,以构建完整的 KYC 工作流程。
  • AI 原生准确性:我们先进的 AI 和机器学习算法确保数据提取和欺诈检测的高准确性,最大限度地减少误报和漏报。
  • 可配置的工作流程:通过我们的 API 或无代码业务控制台,直接为不同的风险场景(例如姓名不匹配、文档质量问题或可疑操作)定义自定义规则和操作。
  • 开发者优先体验:凭借即时沙盒、全面的公共文档和简洁的 API,开发者可以快速高效地集成 Didit。
  • 经济高效的扩展:Didit 提供免费核心 KYC 和按成功检查付费模式,消除了设置费用,并确保您只需为您使用的服务付费,使其成为可扩展运营的理想选择。

通过利用 Didit,企业可以自动化信任,简化合规性,并提供卓越的用户入职体验,而无需承担复杂基础设施或人工审查的负担。

准备好开始了吗?

准备好亲身体验 Didit 的强大功能了吗?立即获取免费演示

使用Didit 的免费套餐,免费开始验证身份。

身份与欺诈基础设施。

一个 API 即可实现 KYC、KYB、交易监控和钱包筛选。5 分钟即可集成。

让 AI 总结此页面
Didit 地址证明、FastAPI 和 MongoDB 集成指南.