Vereisten
- Node.js 20+ geïnstalleerd
- Een TypeScript-project (of JavaScript met ESM)
- Een terminal en uw favoriete editor
Dat is alles. Geen API-sleutels, geen registratie, geen WRPAC-certificaat. DEMO-modus werkt direct.
Stap 1: installeren
npm install @openeudi/core
Of met uw voorkeurspakketbeheerder:
pnpm add @openeudi/core
yarn add @openeudi/core
Stap 2: een verifier aanmaken
import { VerificationService, DemoMode, InMemorySessionStore } from '@openeudi/core';
// Initialize in DEMO mode — no credentials needed
const service = new VerificationService({
mode: new DemoMode(),
store: new InMemorySessionStore(),
});
De optie mode bepaalt hoe de SDK zich gedraagt:
| Mode | Gedrag | Toepassing |
|---|---|---|
new DemoMode() | Rondt na 3 seconden automatisch af | Showcases, salesdemo's, landingspagina's |
new MockMode() | Simuleert wallet-reacties met configureerbare data | Integratietests, CI/CD-pipelines |
new ProductionMode(config) | Echte EUDI Wallet-verificatie | Live verificaties (vereist WRPAC, dec. 2026+) |
Stap 3: een verificatiesessie aanmaken
const session = await service.createSession({ type: 'AGE' });
// session.qrCodeUrl contains a data URL for the QR code image
// session.sessionId is the unique session identifier
// session.deepLink is for mobile-to-mobile flows
De array attributes bepaalt wat u wilt verifiëren. eIDAS Pro is ontworpen rond privacy-first booleaanse attributen — u krijgt een ja/nee-antwoord, nooit ruwe persoonsgegevens:
| Attribuut | Retourneert | Beschrijving |
|---|---|---|
age_over_18 | Booleaans | Is de gebruiker 18 jaar of ouder? |
age_over_21 | Booleaans | Is de gebruiker 21 jaar of ouder? |
age_over_16 | Booleaans | Is de gebruiker 16 jaar of ouder? |
age_over_14 | Booleaans | Is de gebruiker 14 jaar of ouder? |
Landcompliance (welke landen zijn toegestaan) wordt geconfigureerd in uw merchant-instellingen als whitelist of blacklist — de SDK controleert dit automatisch zonder persoonsgegevens van de gebruiker op te vragen.
Let op: in DEMO-modus retourneren attributen synthetische data. In PRODUCTION-modus bewijst de wallet het booleaanse resultaat cryptografisch zonder de onderliggende geboortedatum prijs te geven.
Stap 4: de QR-code tonen
De sessie bevat een QR-code die de gebruiker scant met zijn EUDI Wallet-app.
// In a web context
const img = document.createElement('img');
img.src = session.qrCodeUrl;
document.getElementById('qr-container').appendChild(img);
// In React
function VerificationQR({ session }) {
return <img src={session.qrCodeUrl} alt="Scan with your EUDI Wallet" />;
}
// In Next.js (using next/image)
import Image from 'next/image';
function VerificationQR({ session }) {
return <Image src={session.qrCodeUrl} alt="Scan with your EUDI Wallet" width={256} height={256} />;
}
Stap 5: wachten op het resultaat
// Event-based (recommended for web apps)
service.on('verified', (result) => {
console.log('Verification successful!');
console.log('Verified:', result.verified); // true
console.log('Country allowed:', result.countryAllowed); // true (based on your whitelist)
console.log('Session ID:', result.sessionId);
console.log('Timestamp:', result.verifiedAt);
});
service.on('failed', (error) => {
console.log('Verification failed:', error.reason);
// 'timeout' | 'rejected' | 'invalid_credential' | 'network_error'
});
service.on('expired', () => {
console.log('Session expired — generate a new QR code');
});
Of gebruik de promise-based API:
try {
const result = await session.waitForResult({ timeout: 120000 }); // 2 min timeout
console.log('Verified:', result.verified);
} catch (error) {
console.log('Failed or timed out:', error.reason);
}
Volledig voorbeeld: Express.js API-route
import express from 'express';
import { VerificationService, DemoMode, InMemorySessionStore } from '@openeudi/core';
const app = express();
const service = new VerificationService({
mode: new DemoMode(),
store: new InMemorySessionStore(),
});
// Create a new verification session
app.post('/api/verify', async (req, res) => {
const session = await service.createSession({ type: 'AGE' });
res.json({
sessionId: session.sessionId,
qrCodeUrl: session.qrCodeUrl,
});
});
// Check session status (or use SSE for real-time)
app.get('/api/verify/:sessionId', async (req, res) => {
const status = await service.getSessionStatus(req.params.sessionId);
res.json(status);
});
// SSE endpoint for real-time updates
app.get('/api/verify/:sessionId/events', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
service.on('verified', (result) => {
res.write(`data: ${JSON.stringify({ type: 'verified', result })}\n\n`);
res.end();
});
service.on('failed', (error) => {
res.write(`data: ${JSON.stringify({ type: 'failed', error })}\n\n`);
res.end();
});
});
app.listen(3000, () => console.log('Server running on port 3000'));
Wat gebeurt er in DEMO-modus?
Als u deze code uitvoert in DEMO-modus:
- Wordt een QR-code gegenereerd (visueel identiek aan een echte)
- Rondt de sessie na 3 seconden automatisch af
- Wordt synthetische verificatiedata geretourneerd (age_over_18: true, countryAllowed: true)
- Vuurt uw
onVerified-callback met het resultaat
Er is geen echte wallet bij betrokken. Zo kunt u de volledige verificatie-UI en backend-flow bouwen en testen voordat EUDI Wallets worden gelanceerd.
Volgende stappen
- Schakel over naar MockMode om te testen met configureerbare reacties (succes, falen, timeout)
- Voeg de WooCommerce-plugin toe aan uw WordPress-winkel voor verificatie bij het afrekenen
- Lees de API-referentie voor geavanceerde configuratie (aangepaste QR-stijlen, sessie-opties, foutafhandeling)
- Doe mee aan de GitHub-discussies om problemen te melden of functies aan te vragen
Wanneer EUDI Wallets in december 2026 worden gelanceerd, wijzigt u new DemoMode() naar new ProductionMode(config) en voegt u uw WRPAC-gegevens toe — of gebruikt u de managed service van eIDAS Pro om het certificaatbeheer volledig over te slaan.
OpenEUDI is MIT-gelicentieerd. De SDK bevindt zich momenteel in ontwikkeling — geef de GitHub-repo een ster om op de hoogte te blijven van de eerste release.
Gerelateerde artikelen
OpenEUDI geïntroduceerd: een open-source SDK voor EU-verificatie van digitale identiteit
We maken de kernbibliotheek voor het verificatieprotocol achter eIDAS Pro open source. OpenEUDI is een gratis TypeScript-SDK onder MIT-licentie voor het integreren van EUDI Wallet-verificatie in elke webapplicatie.
8 min leestijd
OpenID4VP begrijpen: het protocol achter de EU Digital Identity Wallets
Een technische verdieping in OpenID4VP — het verificatieprotocol dat EUDI Wallets gebruiken om geverifieerde attributen te delen met bedrijven. Hoe het werkt, waarom het ertoe doet, en hoe OpenEUDI het implementeert.
12 min leestijd
Dit artikel delen
Help anderen meer te weten komen over eIDAS-verificatie