omnifraud / signifyd
此包已被废弃,不再维护。未建议替代包。
Signifyd 驱动程序,用于 Omnifraud PHP 欺诈预防库
v0.3.0
2018-05-29 18:28 UTC
Requires
- omnifraud/common: ^0.3.0
- signifyd/signifyd-php: ^1.1.2
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.2
README
Signifyd 驱动程序,用于 Omnifraud PHP 欺诈预防库
Omnifraud 是一个 PHP 欺诈预防库。它的目标是为与不同的欺诈预防服务交互提供清晰和一致的 API。
安装
composer require omnifraud/signifyd
使用
Signifyd 欺诈服务驱动程序实现了以下方法:trackingCode
,validateRequest
,updateRequest
,getRequestExternalLink
,cancelRequest
。
唯一留空的方法是 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);