# 欺诈检测
## 前言
每一笔交易都需要经过风控,接入 Fraud Detection(欺诈管理)可以预防和减少欺诈率,让您的交易成功率大大提升。
## 与收银台组件一起使用
若您使用了我们的收银台组件,则不需要手动引入 SDK,组件本身已经集成了 SDK,您**无需进行多余配置**,组件内部已经帮您配置好环境。
> 收银台组件引入方式参考:[PayKKa Checkout UI Component 使用文档](/zh-hans/payments/docs/developer-resources/checkout-ui-component)。
## 接入 API 支付
若您接入 API 支付,则需手动引入 SDK。
### 引入
通过 CDN 的形式单独引入 Fraud Detection SDK。
下面是香港和欧洲商户引入 SDK 的方式:
欧洲
```html html
```
香港
```html html
```
Sandbox
```html html
```
## 使用
初始化 Fraud Detection 时,需要先设置环境。
### 环境设置
不同环境(香港/欧洲)下接入 Fraud Detection 的配置是不同的,因此您需要**配置对应环境**。
目前支持的环境如下:
| 环境 | 描述 |
| --- | --- |
| **eu** | 默认值,欧洲商户可用 |
| **hk** | 香港商户可用 |
| **us** | 美国商户可用,目前暂未开通 |
在成功引入并加载 SDK 链接后,会暴露出变量 `PayKKaFraudDetection`,您需要在调用 `PayKKaFraudDetection` 的时候传入环境。
```typescript
const paykkaFraudDetection = PayKKaFraudDetection('hk')
```
PayKKaFraudDetection 是**单例**,因此多次调用返回的是同一个实例,您无需担心会产生重复请求。
#### createFraudDetection
您需要调用 `paykkaFraudDetection.createFraudDetection()` 创建 Fraud Detection,此时内部会开始进行初始化并请求 fraudDetectionID,该方法会缓存请求到的结果,因此多次调用不会更新。
#### fraudDetectionID
您可以通过调用 `paykkaFraudDetection.fraudDetectionID` 获取到 `fraudDetectionID`。
请求 fraudDetectionID 需要一些时间,不过您**不需要等到请求完成也可以发起支付**,无论拿到的 fraudDetectionID 是否为空,直接传递即可。
#### 示例
```html html
```
```javascript javascript
// 设置 Fraud Detection 环境(假设为香港)
const paykkaFraudDetection = PayKKaFraudDetection('hk')
paykkaFraudDetection.createFraudDetection()
// 点击支付按钮
const handleClickPay = () => {
// 获取 fraudDetectionID
const fraudDetectionID = paykkaFraudDetection.fraudDetectionID
const requestParams = {
browser: {
// 传 fraudDetectionID,无论是否为空
fraud_detection_id: fraudDetectionID,
...otherBrowserInfo
},
...otherParams
}
// 发送请求
}
```
## Sandbox 环境接入
如果你想在 Sandbox 环境下使用 Fraud Detection SDK,下面是例子:
```html html
```
```javascript javascript
// 配置环境
const paykkaFraudDetection = PayKKaFraudDetection({
SR: pk_test_51QaC2P5VarcojPHdg13yagk5TqrGkIkeK8I21BgQUZe8BzyRmbtmOg3dKsXjkxt6JlsjyjJMTvBH9dFMCZWRxOkt00tWQ1eHFU
})
// 创建 Fraud Detection
paykkaFraudDetection.createFraudDetection()
// 点击支付按钮
const handleClickPay = () => {
const fraudDetectionID = paykkaFraudDetection.fraudDetectionID
const paymentParams = {
browser: {
// 传 fraudDetectionID,无论是否为空
fraud_detection_id: fraudDetectionID,
...otherBrowserInfo
},
...otherPaymentParams
}
// 发送支付请求...
}
```