Saltar al contenido principal
Version: Guardian v0.1.0

Verificar transacciones

Llame a verify() en momentos sensibles de seguridad. El SDK recopila señales del dispositivo, realiza la atestación y devuelve la decisión de riesgo del backend.

Uso básico

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) {
// Proceder con el pago
} else {
// Transacción denegada - verifique result.riskLevel
}
} catch (error) {
// Manejar error del SDK (red, no inicializado, etc.)
}
};

return <Button onPress={handlePayment} title="Pay" />;
}

Contexto del cliente

Establezca el contexto del cliente después de la autenticación de su aplicación. Esto vincula las señales del dispositivo a una identidad de usuario.

const { setCustomer, clearCustomer } = useGuardian();

// Después del inicio de sesión
setCustomer('user_abc123', 'John Doe', 'john@example.com');

// Al cerrar sesión
clearCustomer();

Tipos de transacción

TipoCaso de uso
'login'Inicio de sesión del usuario
'signUp'Creación de cuenta nueva
'deposit'Agregar fondos
'withdrawal'Retirar fondos

Anulación de ubicación por llamada

Anule el valor predeterminado de collectLocation para una sola llamada:

// Omitir ubicación para esta llamada
const result = await verify('login', 'User Login', { collectLocation: false });

// Solicitar ubicación para esta llamada
const result = await verify('withdrawal', 'User Payment', { collectLocation: true });

// Usar el valor predeterminado de inicialización
const result = await verify('login', 'User Login');

La anulación es de un solo uso - solo afecta esa llamada a verify().

Cómo se decide la recopilación de ubicación

GPS en panelSu códigoResultado
habilitadotrue (init o anulación)GPS recopilado
habilitadofalse (init o anulación)Sin GPS - usted optó por no participar
deshabilitadotrue (init o anulación)Sin GPS - el panel lo tiene desactivado
deshabilitadofalse (init o anulación)Sin GPS
info

Su configuración collectLocation solo puede desactivar GPS. No puede forzar GPS si el panel lo tiene deshabilitado.

Resultado de la verificación

interface VerificationResult {
allowed: boolean; // Decisión del backend - true = continuar
riskLevel: RiskLevel; // 'low' | 'medium' | 'high' | 'blocked' | 'unknown'
sessionId: string; // ID de transacción para referencia de soporte
errors?: string[]; // Mensajes de error del backend, si los hay
timestamp: number; // Marca de tiempo de la respuesta (ms)
metadata?: Record<string, any>; // Metadatos adicionales del backend
}

Para detalles sobre niveles de riesgo, consulte Niveles de riesgo.

Ejemplo completo

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>
);
}