Интеграция подтверждения адреса Didit с FastAPI и MongoDB (RU)
Узнайте, как создать масштабируемую систему KYC, интегрировав проверку подтверждения адреса Didit с бэкендом FastAPI и базой данных MongoDB. Это руководство охватывает настройку среды, загрузку документов и обработку проверки.

Бесшовная ИнтеграцияИнтегрируйте API подтверждения адреса Didit с FastAPI и MongoDB, чтобы создать надежный и масштабируемый бэкенд KYC, оптимизирующий ваши рабочие процессы проверки.
Автоматизированная ПроверкаИспользуйте встроенные возможности Didit на основе ИИ для автоматического извлечения, валидации и проверки подлинности документов, подтверждающих адрес, сокращая ручной просмотр и повышая точность.
Настраиваемые Рабочие ПроцессыИспользуйте гибкие настройки Didit для определения пользовательских действий для различных результатов проверки, таких как несоответствие имен или проблемы с качеством документов, обеспечивая соответствие разнообразным нормативным требованиям.
Масштабируемо и ЭкономичноDidit предлагает модульный, ориентированный на разработчиков подход с бесплатным Core KYC и оплатой за успешную проверку, что делает его идеальным выбором для компаний любого размера, ищущих масштабируемую проверку личности.
Проблема проверки подтверждения адреса в KYC
Проверка подтверждения адреса (PoA) является критически важным компонентом процессов «Знай своего клиента» (KYC) в различных отраслях, от финансовых услуг до онлайн-рынков. Она необходима для подтверждения физического места жительства пользователя, помогая предотвратить мошенничество, соответствовать правилам по борьбе с отмыванием денег (AML) и установить доверие. Однако ручной просмотр счетов за коммунальные услуги, выписок из банковских счетов и государственных документов занимает много времени, подвержен человеческим ошибкам и не масштабируется. Предприятиям требуется надежное, автоматизированное и безопасное решение для обработки сложностей проверки PoA, сохраняя при этом удобство для пользователя.
Традиционные решения PoA часто включают сложные интеграции, высокие затраты на настройку и жесткие рабочие процессы. Именно здесь проявляются современные платформы идентификации на основе ИИ, такие как Didit, предлагая подход, ориентированный на разработчиков, который упрощает интеграцию и предоставляет мощные, автоматизированные возможности проверки. Объединив API подтверждения адреса Didit с масштабируемым бэкендом, таким как FastAPI, и гибкой базой данных NoSQL, такой как MongoDB, предприятия могут создавать высокоэффективные и соответствующие требованиям системы 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.
Интеграция API подтверждения адреса Didit
API подтверждения адреса Didit позволяет отправлять изображения или PDF-файлы документов для проверки, извлекая и проверяя информацию об адресе, выполняя проверки подлинности и возвращая структурированные данные. Этот процесс разработан для высокой автоматизации и точности благодаря архитектуре Didit на основе ИИ.
1. Отправка документов в Didit
Вам потребуется конечная точка в вашем приложении FastAPI для приема загружаемых документов и их пересылки в Didit. API Didit поддерживает различные типы документов (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)}")
Эта конечная точка обрабатывает загрузку файла, формирует запрос к API Didit, а затем обрабатывает ответ. Обратите внимание на использование httpx.AsyncClient для неблокирующих HTTP-запросов, что крайне важно для производительности FastAPI.
2. Понимание отчета о подтверждении адреса Didit
Didit предоставляет исчерпывающий JSON-отчет для каждой проверки PoA. Этот отчет включает:
poa.status: Общий статус проверки (Approved, Declined, In Review).poa.document_type: Автоматически обнаруженный тип документа (например, UTILITY_BILL, BANK_STATEMENT).poa.issuer,poa.issue_date,poa.expiration_date: Ключевые детали документа.poa.name_on_document,poa.poa_address,poa.poa_formatted_address,poa.poa_parsed_address: Извлеченная и структурированная информация об адресе.poa.warnings: Список любых обнаруженных предупреждений или проблем, таких какPOOR_DOCUMENT_QUALITY,NAME_MISMATCH_WITH_PROVIDEDилиSUSPECTED_DOCUMENT_MANIPULATION.
Эти подробные сведения позволяют принимать сложные решения и автоматизировать обработку крайних случаев. Настраиваемые параметры проверки Didit, такие как poa_name_mismatch_action или poa_document_issues_action, позволяют определить, как ваша система реагирует на конкретные риски, обеспечивая соответствие требованиям и сокращая ручное вмешательство.
Хранение и управление данными проверки с помощью MongoDB
MongoDB — отличный выбор для хранения результатов проверки PoA благодаря своей гибкой модели документов. Вы можете хранить весь JSON-ответ от Didit напрямую, что позволяет легко выполнять запросы и анализ без предопределенных схем. Эта гибкость жизненно важна, поскольку требования к проверке меняются или появляются новые данные.
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 предоставляет платформу идентификации на основе ИИ, ориентированную на разработчиков, которая упрощает сложные процессы проверки личности, такие как подтверждение адреса. Наш продукт Proof of Address предлагает комплексную проверку путем извлечения и верификации ключевой информации из различных документов. Он автоматически определяет типы документов, анализирует адреса в структурированные форматы и выполняет проверки подлинности для выявления потенциальных манипуляций. С Didit вы получаете следующие преимущества:
- Модульная Архитектура: Легко интегрируйте проверку PoA как отдельную услугу или объединяйте ее с другими продуктами Didit, такими как ID Verification и AML Screening & Monitoring, для создания полных рабочих процессов KYC.
- Точность на основе ИИ: Наши передовые алгоритмы ИИ и машинного обучения обеспечивают высокую точность извлечения данных и обнаружения мошенничества, минимизируя ложные срабатывания и пропуски.
- Настраиваемые Рабочие Процессы: Определяйте пользовательские правила и действия для различных сценариев риска, таких как несоответствие имен, проблемы с качеством документов или подозрения в манипуляциях, непосредственно через наши API или консоль управления без кода.
- Опыт для Разработчиков: Благодаря мгновенной "песочнице", исчерпывающей общедоступной документации и чистым API, разработчики могут быстро и эффективно интегрировать Didit.
- Экономичное Масштабирование: Didit предлагает бесплатный Core KYC и модель оплаты за успешную проверку, исключая плату за настройку и гарантируя, что вы платите только за то, что используете, что делает его идеальным для масштабируемых операций.
Используя Didit, предприятия могут автоматизировать доверие, оптимизировать соблюдение требований и обеспечить превосходный опыт адаптации пользователей без бремени сложной инфраструктуры или ручного просмотра.
Готовы начать?
Готовы увидеть Didit в действии? Получите бесплатную демонстрацию сегодня.
Начните бесплатно проверять личности с бесплатным тарифом Didit.