Transaktionen verifizieren
Rufen Sie verify() bei sicherheitssensiblen Momenten auf. Das SDK erfasst Gerätesignale, führt Attestierung durch und gibt die Risikoentscheidung des Backends zurück.
Grundlegende Verwendung
PaymentScreen.tsx
import { useGuardian } from '@surtai/guardian-rn';
function PaymentScreen() {
const { verify } = useGuardian();
const handlePayment = async () => {
try {
const result = await verify('withdrawal', 'User Payment');
if (result.allowed) {
// Mit Zahlung fortfahren
} else {
// Transaktion abgelehnt - result.riskLevel prüfen
}
} catch (error) {
// SDK-Fehler behandeln (Netzwerk, nicht initialisiert usw.)
}
};
return <Button onPress={handlePayment} title="Pay" />;
}
Kundenkontext
Setzen Sie den Kundenkontext nach der Authentifizierung Ihrer App. Dies verknüpft Gerätesignale mit einer Benutzeridentität.
const { setCustomer, clearCustomer } = useGuardian();
// Nach der Anmeldung
setCustomer('user_abc123', 'John Doe', 'john@example.com');
// Beim Abmelden
clearCustomer();
Transaktionstypen
| Typ | Anwendungsfall |
|---|---|
'login' | Benutzeranmeldung |
'signUp' | Neues Konto erstellen |
'deposit' | Einzahlung |
'withdrawal' | Auszahlung |
Standortüberschreibung pro Aufruf
Überschreiben Sie den collectLocation-Standard für einen einzelnen Aufruf:
// Standort für diesen Aufruf überspringen
const result = await verify('login', 'User Login', { collectLocation: false });
// Standort für diesen Aufruf anfordern
const result = await verify('withdrawal', 'User Payment', { collectLocation: true });
// Initialisierungsstandard verwenden
const result = await verify('login', 'User Login');
Die Überschreibung gilt nur einmalig - sie betrifft nur diesen einzelnen verify()-Aufruf.
Wie die Standorterfassung entschieden wird
| Dashboard GPS | Ihr Code | Ergebnis |
|---|---|---|
| aktiviert | true (Init oder Überschreibung) | GPS erfasst |
| aktiviert | false (Init oder Überschreibung) | Kein GPS - Sie haben sich abgemeldet |
| deaktiviert | true (Init oder Überschreibung) | Kein GPS - Dashboard hat es deaktiviert |
| deaktiviert | false (Init oder Überschreibung) | Kein GPS |
info
Ihre collectLocation-Einstellung kann GPS nur ablehnen. Sie kann GPS nicht erzwingen, wenn das Dashboard es deaktiviert hat.
Verifizierungsergebnis
interface VerificationResult {
allowed: boolean; // Backend-Entscheidung - true = fortfahren
riskLevel: RiskLevel; // 'low' | 'medium' | 'high' | 'blocked' | 'unknown'
sessionId: string; // Transaktions-ID für Support-Referenz
errors?: string[]; // Backend-Fehlermeldungen, falls vorhanden
timestamp: number; // Antwortzeitstempel (ms)
metadata?: Record<string, any>; // Zusätzliche Backend-Metadaten
}
Für Details zu Risikoniveaus siehe Risikoniveaus.
Vollständiges Beispiel
App.tsx
import React, { useState } from 'react';
import { View, Button, Text, Alert } from 'react-native';
import {
GuardianProvider,
useGuardian,
type VerificationResult,
} from '@surtai/guardian-rn';
function HomeScreen() {
const { verify, setCustomer, clearCustomer, isInitialized } = useGuardian();
const [result, setResult] = useState<VerificationResult | null>(null);
const handleLogin = async () => {
setCustomer('user_123', 'Jane Doe', 'jane@example.com');
try {
const res = await verify('login', 'User Login');
setResult(res);
Alert.alert(res.allowed ? 'Approved' : 'Denied', `Risk: ${res.riskLevel}`);
} catch (e: any) {
Alert.alert('Error', e.message);
}
};
return (
<View style={{ padding: 20 }}>
<Text>SDK Ready: {isInitialized ? 'Yes' : 'No'}</Text>
<Button title="Login & Verify" onPress={handleLogin} />
<Button title="Logout" onPress={() => { clearCustomer(); setResult(null); }} />
{result && <Text>Allowed: {result.allowed ? 'Yes' : 'No'}</Text>}
</View>
);
}
export default function App() {
return (
<GuardianProvider apiKey="YOUR_API_KEY" environment="production" collectLocation={true}>
<HomeScreen />
</GuardianProvider>
);
}