# 欺诈检测 ## 前言 每一笔交易都需要经过风控,接入 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 } // 发送支付请求... } ```