omnifraud/signifyd

此包已被废弃,不再维护。未建议替代包。

Signifyd 驱动程序,用于 Omnifraud PHP 欺诈预防库

v0.3.0 2018-05-29 18:28 UTC

This package is auto-updated.

Last update: 2023-08-29 18:25:27 UTC


README

Signifyd 驱动程序,用于 Omnifraud PHP 欺诈预防库

Build Status Test Coverage

Omnifraud 是一个 PHP 欺诈预防库。它的目标是为与不同的欺诈预防服务交互提供清晰和一致的 API。

安装

composer require omnifraud/signifyd

使用

Signifyd 欺诈服务驱动程序实现了以下方法:trackingCodevalidateRequestupdateRequestgetRequestExternalLinkcancelRequest

唯一留空的方法是 logRefusedRequest,因为它对于 Signifyd 来说不是必需的。

初始化

SignifydService 构造函数接受以下配置值(这些是默认值)

$service = new KountService([
    'apiKey' => null, // Signifyd API key
    'caseUrl' => 'https://app.signifyd.com/cases/%d', // Url where cases are visible
    //... 
]);

注意:任何由官方 SignifydSettings 类支持的配置都可以传递到配置中

提交销售

您可以使用 validateRequest 方法提交请求,以获取异步响应,稍后需要更新。

Signifyd 建议尽可能发送更多字段,请查看 此示例 了解所有字段。

<?php
$request = new \Omnifraud\Request\Request();

// Set request informations
$request->getPayment()->setBin('1234');
// Etc... Anything provided in the request is sent to Signifyd, except the billing address phone number


// Send the request

$service = new \Omnifraud\Signifyd\SignifydService($serviceConfig);

$response = $service->validateRequest($request);

// Should always be true for a first request
if ($response->isPending()) {
    // Queue job for later update
}

刷新案例

Signifyd 总是返回异步响应,因此您需要刷新请求以获取答案,这最好通过排队一个作业来完成。

您还可以使用此方法在稍后获取请求结果(例如,如果您已将其发送进行人工评估)。

$service = new \Omnifraud\Signifyd\SignifydService($serviceConfig);

$request = new \Omnifraud\Request\Request();
$request->setUid($requestUid);

$response = $service->updateRequest($request);

// Use for updating
$requestUid = $response->getRequestUid();

if ($response->isPending()) {
    // Retry later
    return;
}

$score = $response->getScore(); // Signifyd score divided by 10, 100 is best, 0 is worst
$guaranteed = $response->isGuaranteed(); // If covered by Signifyd guarantee

注意:updateRequest 的响应仍然可能是异步的,如果是这种情况,这意味着您稍后需要重试。

取消担保

如果您正在退款或取消订单,取消担保是一个好主意,因为 Signifyd 将退还费用。

$service = new \Omnifraud\Signifyd\SignifydService($serviceConfig);

$request = new \Omnifraud\Request\Request();
$request->setUid($requestUid);

try {
    $service->cancelRequest($request);
} catch(\Omnifraud\Request\RequestException $e) {
    // Something went wrong
}

会话 ID(或 设备指纹

您需要实现前端代码以跟踪设备预购行为。

<script>
<?= $fraudService->trackingCode(ServiceInterface::PAGE_CHECKOUT, $_COOKIE['sessionId']); ?>
</script>

然后您需要将 sessionId 添加到请求中

// Retrieve the session ID with some method, it can come from server side cookies/session also
$request->setSession($_COOKIE['sessionId']);

链接到案例

为了获取 Signifyd 上查看案例的链接,您只需要 UID。

$service = new \Omnifraud\Kount\KountService($serviceConfig);
$url = $service->getRequestExternalLink($requestUid);