PHP code example of preverus / preverus-laravel

1. Go to this page and download the library: Download preverus/preverus-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

preverus / preverus-laravel example snippets


use Illuminate\Http\Request;
use Preverus\Laravel\Facades\Preverus;

public function register(Request $request)
{
    $decision = Preverus::evaluate($request, [
        'event_type' => 'signup',
        'user_id' => $request->input('user_id'),
        'metadata' => [
            'email' => $request->input('email'),
        ],
    ]);

    if ($decision->isBlock()) {
        abort(403, 'Unable to create account.');
    }

    if ($decision->isReview()) {
        return redirect()->route('verify');
    }

    // Continue registration.
}

$decision = Preverus::evaluate($request, [
    'event_type' => 'withdraw',
    'user_id' => $user->id,
    'failure_mode' => 'review',
]);

$decision->isFallback();
$decision->failureReason();
$decision->recommendedAction();

$decision = Preverus::evaluate($request, [
    'event_type' => 'withdraw',
    'user_id' => $user->id,
    'metadata' => [
        'payment_address' => $request->input('payment_address'),
    ],
    'failure_mode' => 'review',
]);

if ($decision->isBlock()) {
    abort(403);
}

if ($decision->isReview()) {
    return redirect()->route('withdraw.review');
}

Route::post('/withdraw', WithdrawController::class)
    ->middleware('preverus:withdraw,withdraw.review');

Preverus::dispatchEvent($request, [
    'event_type' => 'profile_update',
    'user_id' => $user->id,
    'metadata' => [
        'email' => $user->email,
    ],
]);

$visitor = Preverus::lookupVisitor(visitorId: 'v_abc123');
$visitor = Preverus::lookupVisitor(fingerprint: 'fp_hash');

$metadata = Preverus::lookupMetadata('email', '[email protected]');
$userRiskProfile = Preverus::lookupUserRiskProfile('acct_42');

use Illuminate\Http\Request;
use Preverus\Laravel\Facades\Preverus;

Route::post('/preverus/webhook', function (Request $request) {
    if (!Preverus::verifyWebhook($request, config('services.preverus.webhook_secret'))) {
        abort(400, 'Invalid webhook signature');
    }

    $payload = $request->json()->all();

    // Store $payload['id'] or X-Fraud-Webhook-Id for idempotency.

    return response()->noContent();
});

Route::post('/preverus/webhook', function (Request $request) {
    Preverus::handleWebhook(
        $request,
        config('services.preverus.webhook_secret'),
        [
            'decision.high_risk' => function ($event) {
                // Open a case, notify ops, or hold the account action.
            },
            '*' => function ($event) {
                // Optional catch-all handler.
            },
        ],
        function ($event) {
            return DB::table('processed_webhooks')->where('id', $event->id())->exists();
        },
    );

    return response()->noContent();
});

$decision = Preverus::evaluateOrFail($request, [
    'event_type' => 'signup',
    'user_id' => $user->id,
]);

return [
    'server_key' => env('PREVERUS_SERVER_KEY'),
    'browser_key' => env('PREVERUS_BROWSER_KEY'),
    'endpoint' => env('PREVERUS_ENDPOINT', 'https://api.preverus.com'),
    'script_url' => env('PREVERUS_SCRIPT_URL', 'https://api.preverus.com/v1/preverus.js'),
    // Optional. Defaults to open.
    'failure_mode' => env('PREVERUS_FAILURE_MODE', 'open'),
    'http' => [
        'timeout_ms' => env('PREVERUS_TIMEOUT_MS', 1500),
        'connect_timeout_ms' => env('PREVERUS_CONNECT_TIMEOUT_MS', 500),
        'retries' => env('PREVERUS_RETRIES', 2),
    ],
    'circuit_breaker' => [
        'enabled' => true,
        'failure_threshold' => 5,
        'cooldown_seconds' => 30,
    ],
    'queue' => [
        'events' => true,
        'connection' => env('PREVERUS_QUEUE_CONNECTION'),
        'queue' => env('PREVERUS_QUEUE', 'default'),
    ],
];
text
signup
login
checkout
password_reset
payout
withdraw
payment_change
account_update