İçeriğe geç

Hızlı başlangıç

Bir entegrasyon üç parçadan oluşur:

  1. Sunucunuz Prove ID’ye giriş yapar ve kullanıcı için bir işlem token’ı oluşturur.
  2. Sayfanız SDK’yı bu token ile başlatır. SDK, Prove ID ile kendisi konuşur.
  3. Sunucunuz sayfanın geri gönderdiği transactionId ile doğrulama sonucunu Prove ID’den okur.

SDK, Prove ID’ye kullanıcı adına bağlanmak için bir işlem token’ı kullanır. Sunucunuz bu token’ı iki çağrıyla oluşturur:

Çağrı Amaç Geçerlilik
POST /oauth/access_token Sunucunuzu API kimlik bilgilerinizle giriş yaptırır (form-encoded, client_credentials grant). Varsayılan 30 dakika (expires_in). Önbelleğe alın ve tüm kullanıcılar için yeniden kullanın.
POST /link/create-token Tek bir doğrulama için tek bir işlem token’ı oluşturur. Yanıttaki expiresAt anına kadar ve yalnızca o akış bitene kadar: biten bir akış aynı token ile yeniden başlatılamaz.

İsteğe bağlı idTypes alanı bu işlemde kabul edilecek belgeleri sınırlar (IDCARD, OLDIDCARD, DRIVERCARD, PASSPORT, BLUECARD, FOREIGNID). customerId, işlemi Prove ID’de daha önce oluşturduğunuz bir müşteriye bağlar.

// Node.js 18+ (yerleşik fetch)
const API = process.env.PROVEID_API ?? 'https://demo.api.proveid.io';
let cached; // { token, expiresAt }
async function accessToken() {
if (cached && cached.expiresAt > Date.now() + 60_000) return cached.token;
const res = await fetch(`${API}/oauth/access_token`, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: process.env.PROVEID_CLIENT_ID,
client_secret: process.env.PROVEID_CLIENT_SECRET,
}),
});
if (!res.ok) throw new Error(`Prove ID girişi başarısız: ${res.status}`);
const data = await res.json();
cached = { token: data.access_token, expiresAt: Date.now() + data.expires_in * 1000 };
return cached.token;
}
export async function createTransactionToken() {
const res = await fetch(`${API}/link/create-token`, {
method: 'POST',
headers: {
Authorization: `Bearer ${await accessToken()}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ idTypes: ['IDCARD'] }),
});
if (!res.ok) throw new Error(`İşlem token'ı oluşturulamadı: ${res.status}`);
return res.json(); // { transactionToken, expiresAt }
}

Bunu yalnızca giriş yapmış kullanıcıların çağırabildiği kendi uç noktanız üzerinden sunun (örneğin POST /api/kyc/token) ve sayfaya yalnızca transactionToken değerini döndürün. Her doğrulama için yeni bir token oluşturun.

<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover" />
<title>Kimlik doğrulama</title>
<style>
html, body, techsign-kyc { margin: 0; height: 100%; }
</style>
</head>
<body>
<techsign-kyc
token="TRANSACTION_TOKEN"
domain="https://demo.api.proveid.io"
lang="tr"
enable-face="true"
></techsign-kyc>
<script type="module">
import '/sdk/techsign-kyc.js';
const kyc = document.querySelector('techsign-kyc');
kyc.addEventListener('complete', (e) => {
// e.detail.transactionId değerini sunucunuza iletin
console.log('tamamlandı', e.detail);
});
kyc.addEventListener('error', (e) => {
// e.detail.code, e.detail.message, e.detail.retryable
console.error('hata', e.detail);
});
</script>
</body>
</html>

Bileşen sayfaya eklendiği anda akışı başlatır. domain değerini kullandığınız ortama göre ayarlayın.

TRANSACTION_TOKEN değerini sunucu şablonunuzdan sayfaya yazın ya da önce token’ı alıp bileşeni sonra ekleyin:

const res = await fetch('/api/kyc/token', { method: 'POST' });
const { transactionToken } = await res.json();
const kyc = document.createElement('techsign-kyc');
kyc.setAttribute('token', transactionToken);
kyc.setAttribute('domain', 'https://demo.api.proveid.io');
kyc.setAttribute('lang', 'tr');
// complete / error dinleyicilerini yukarıdaki gibi ekleyin, ardından:
document.body.append(kyc);

complete event’i akışın bittiğini bildirir. Doğrulama kararını tarayıcıdaki sonuca göre vermeyin: transactionId değerini sunucunuza gönderin ve sonucu GET /id/id-info-with-tid/{transactionId} ile Prove ID’den okuyun.

Akış boyunca çalışan kontroller controlResults içinde listelenir. Her birinde entryType, entryScore ve entryInterpretation (kontrol geçtiyse true) bulunur. Aşağıdaki örnekler 1. adımdaki accessToken() fonksiyonunu kullanır ve doğrulamayı yalnızca tüm kontroller geçtiyse kabul eder. Kuralı kendi risk politikanıza göre uyarlayın.

export async function getVerification(transactionId) {
const res = await fetch(`${API}/id/id-info-with-tid/${encodeURIComponent(transactionId)}`, {
headers: { Authorization: `Bearer ${await accessToken()}` },
});
if (!res.ok) throw new Error(`Sonuç okunamadı: ${res.status}`);
const info = await res.json();
const controls = info.controlResults ?? [];
const passed = controls.length > 0 && controls.every((c) => c.entryInterpretation === true);
return { passed, info };
}

Yanıt modelinin tamamı ve diğer sonuç servisleri API Reference sekmesindedir.

type="module" kullanamayan sayfalar için:

<script src="/sdk/techsign-kyc.iife.js"></script>
<techsign-kyc token="TRANSACTION_TOKEN" lang="tr" enable-face="false"></techsign-kyc>
<script>
const kyc = document.querySelector('techsign-kyc');
kyc.addEventListener('complete', (e) => console.log(e.detail));
kyc.addEventListener('error', (e) => console.error(e.detail));
</script>
import '@techsign/kyc';
import { warmupAssets } from '@techsign/kyc';
// İsteğe bağlı: modelleri kullanıcı akışa gelmeden önce indir
void warmupAssets({ enableFace: true });

Ardından <techsign-kyc> etiketini şablonunuzda kullanın.