omnifraud/kount
此包已被废弃且不再维护。未建议替代包。
Kount 欺诈检测库的 PHP 驱动程序
v0.3.0
2018-05-29 18:24 UTC
Requires
- kount/kount-ris-php-sdk: ^7.0
- omnifraud/common: ^0.3.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^3.2
README
Kount 欺诈检测库的 PHP 驱动程序
Omnifraud 是一个 PHP 欺诈检测库。它旨在提供清晰和一致的 API,用于与不同的欺诈检测服务交互。
安装
composer require omnifraud/kount
使用
Kount 欺诈服务驱动程序实现了以下方法:trackingCode
、validateRequest
、updateRequest
、getRequestExternalLink
、logRefusedRequest
。
唯一留空的方法是 cancelRequest
,因为 Kount 不需要取消请求。
初始化
KountService 构造函数接受以下配置值(以下为默认值)
$service = new KountService([ 'testing' => false, // Use testing endpoint 'website' => 'DEFAULT', // Website setting, will be passed as `SITE` to Kount 'testRequestUrl' => 'https://awc.test.kount.net/workflow/detail.html?id=%s', // Url to view a TEST request 'requestUrl' => 'https://awc.kount.net/workflow/detail.html?id=%s', // Url to view a PRODUCTION request ]);
提交销售
向 Kount 提交(成功或拒绝的)销售需要会话 ID,因此您需要在结账页面上实现前端代码。
<script>
<?= $fraudService->trackingCode(ServiceInterface::PAGE_CHECKOUT, $myGeneratedCustomerId); ?>
</script>
<!-- Pass it back to the server -->
<input type="hidden" name="sessionId" value="<?= $myGeneratedCustomerId ?>">
然后您可以使用 validateRequest
方法获取响应。
$sessionID = $_POST['sessionId']; // Retrieve your frontend session ID // $sessionID = session_id(); You could also use the php session ID as long as you pass the same one to the frontend code $request = new \Omnifraud\Request\Request(); // Required info $session = $request->getSession(); $session->setId($sessionID); $session->setIp($_SERVER['REMOTE_ADDR']); $purchase = $request->getPurchase(); $purchase->setId((string)$order->id); $purchase->setTotal($order->total * 100); // Integer, remove decimal point $purchase->setCurrencyCode('CAD'); // Add some products foreach($order->items as $item) { $product = new \Omnifraud\Request\Data\Product(); $product->setCategory($item->category_name); $product->setSku($item->sku); $product->setName($item->name); $product->setQuantity($item->quantity); $product->setPrice($item->price * 100); // Integer, remove decimal point $purchase->addProduct($product); } // Additional optional info $purchase->setCreatedAt(new DateTime($order->createdAt)); $payment = $request->getPayment(); $payment->setLast4($order->card->last4); $payment->setBin($order->card->bin); $payment->setAvs($order->avsResponse); $payment->setCvv($order->cvvResponse); $account = $request->getAccount(); $account->setId((string)$order->customer->id); $account->setEmail($order->customer->email); $billing = $request->getBillingAddress(); $billing->setFullName($order->card->name); $billing->setStreetAddress($order->billing->address1); $billing->setUnit($order->billing->address2); $billing->setCity($order->billing->city); $billing->setState($order->billing->state); $billing->setPostalCode($order->billing->zip); $billing->setCountryCode($order->billing->country->iso2); $shipping = $request->getShippingAddress(); $shipping->setFullName($order->shipping->fullName); // Billing name $shipping->setStreetAddress($order->shipping->address1); $shipping->setUnit($order->shipping->address2); $shipping->setCity($order->shipping->city); $shipping->setState($order->shipping->state); $shipping->setPostalCode($order->shipping->zip); $shipping->setCountryCode($order->shipping->country->iso2); $shipping->setPhone($order->shipping->phone); // Send the request $service = new \Omnifraud\Kount\KountService($serviceConfig); if ($order->approved) { $response = $service->validateRequest($request); // Get score, SCORE IS INVERTED from the Kount logic to follow the Omnifraud convention so 100 is GOOD and 0 is BAD $score = $response->getScore(); // Request UID, save for later reference, you must also save sessionId if you want to update the case later $requestUid = $response->getRequestUid(); } else { // Log a refused request so Kount can learn about your custors attempts $service->logRefusedRequest($request); }
注意:Kount 的响应从不 异步 也从不 保证。
链接到案例
要获取查看 Kount 案例的链接,您只需要 UID。
$service = new \Omnifraud\Kount\KountService($serviceConfig); $url = $service->getRequestExternalLink($requestUid);
刷新案例
即使 Kount 立即响应,您也可以刷新请求以检查其是否已更新,您需要请求 UID 和用户 sessionId 来完成此操作。
<?php $service = new \Omnifraud\Kount\KountService($serviceConfig); $request = new \Omnifraud\Request\Request(); $request->setUid($requestUid); $request->getSession()->setId($sessionId); $response = $service->updateRequest($request);