class VerificationService {
async createVerification(user) {
// Create verification
const response = await fetch('https://clear-api.nfigate.com/api/v1/verifications', {
method: 'POST',
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
subjectType: 'kyc',
subjectReference: user.id,
metadata: {
userEmail: user.email,
},
}),
});
const data = await response.json();
// Store in database
await db.verifications.create({
id: data.data.id,
userId: user.id,
status: 'pending',
url: data.data.verificationUrl,
});
// Send email
await emailService.sendVerificationEmail(user.email, {
url: data.data.verificationUrl,
});
return data.data;
}
async checkStatus(verificationId) {
const response = await fetch(
`https://clear-api.nfigate.com/api/v1/verifications/${verificationId}`,
{
headers: { 'X-API-Key': API_KEY },
}
);
const data = await response.json();
// Update in database
await db.verifications.update(verificationId, {
status: data.data.status,
});
// Handle final status
if (data.data.status === 'approved') {
await this.onApproved(data.data);
} else if (data.data.status === 'rejected') {
await this.onRejected(data.data);
}
return data.data;
}
}