ubeeqo/laravel-sift

Laravel 5 对 Sift Science 的包装

dev-master 2017-07-14 14:28 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:13:49 UTC


README

一个用于 Laravel 5Sift Science 的包装。

安装

使用 Composer 安装此包

composer require ubeeqo/laravel-sift

接下来,将以下内容添加到 config/app.php 文件中的 providers 数组

ubeeqo\LaravelSift\SiftServiceProvider::class,

通过在 config/app.php 文件中的 aliases 数组中添加以下行来注册外观

'SiftScience' => ubeeqo\LaravelSift\Facades\SiftScience::class,

配置

您可以使用以下 artisan 命令发布配置文件

php artisan vendor:publish --provider="ubeeqo\LaravelSift\SiftServiceProvider"

默认配置文件将检查 .env 文件中的 SIFT_API_KEYSIFT_JAVASCRIPT_KEY

用法

JavaScript 片段

要将 JavaScript 片段添加到您的页面中,请立即在主 blade 模板的 opening body 标签之后包含以下行

@include('sift::snippet')

这将使用会话 ID 以及当用户认证时用户的电子邮件来跟踪用户与您的网站的互动。有关 JavaScript 片段的更多信息,请参阅 Sift Science 文档

自定义 Sift 用户 ID

默认情况下,该包使用 getAuthIdentifier() 方法来获取用户在跟踪认证事件时的标识符(通常是用户 ID)。您可以通过向用户模型添加一个返回您想要跟踪的值的 getSiftId() 方法来自定义此值。如果您不想公开用户 ID(此值在 JavaScript 片段中可见)或要使用其他值,这将很有用。请注意,使用电子邮件地址(或任何可能更改的值)可能不是好主意,因为如果值更改,您将失去在 Sift 中对用户的引用。

建议在报告您自己的事件时使用 SiftScience::getUserId($user) 来获取用户的 Sift ID,因为这 internally 使用的方法。可选的 $user 参数默认为当前认证的用户。它当前使用之前提到的 getSiftId() 方法的值,并将回退到 getAuthIdentifier()

如果您正在自定义标识符,请注意,如果您将来更改它,Sift 中将创建另一个用户,并且他们的评分可能会受到影响。同时,请确保查看 允许的字符

跟踪事件

默认情况下,该包跟踪成功和失败的登录以及注销,但您可能希望跟踪其他操作,如交易。

要跟踪事件,您需要与 SiftClient 类交互,如下所示

// Import the facade
use SiftScience;

// Returns the SiftClient class
SiftScience::client();

// Track an event
SiftScience::client()->track('$transaction', [
    '$user_id'          => SiftScience::getUserId(),
    '$amount'           => 1000000,
    '$currency_code'    => 'USD',
    '$user_email'       => $user->email,
    '$transaction_type' => '$sale',
    '$transaction_status' => '$success',
    '$session_id'       => SiftScience::getSessionId(),
]);

在上面的示例中,您会注意到 SiftScience::getSessionId()。这使用键 'sift_session_id' 从当前会话中获取标识符。您还可以传递一个会话存储作为参数,用于存在当前会话的情况(如队列)。

有关如何使用 SiftClient 类的更多信息,请参阅 sift-php 文档事件 API 参考

队列

您可能想使用队列来跟踪某些事件,以避免减慢应用程序的运行。内置的认证事件跟踪支持使用队列,但截至现在,您必须自己实现队列。欢迎提出将队列支持直接添加到本包中的优雅方案的建议。