# Fraud Detection ## Introduction Every transaction needs to go through risk control. Integrating Fraud Detection can prevent and reduce fraud rates, significantly improving your transaction success rate. ## Using with Checkout Component If you are using our checkout component, you don't need to manually import the SDK. The component itself has already integrated the SDK, and you **don't need to do any additional configuration** as the component has already configured the environment for you. > For checkout component integration, refer to: [PayKKa Checkout UI Component Documentation](/payments/docs/developer-resources/checkout-ui-component). ## Integrating with API Payment If you are integrating with API payment, you need to manually import the SDK. ### Import Import the Fraud Detection SDK separately via CDN. Here's how to import the SDK for Hong Kong and European merchants: Europe ```html html ``` Hong Kong ```html html ``` Sandbox ```html html ``` ## Usage When initializing Fraud Detection, you need to set the environment first. ### Environment Configuration The configuration for Fraud Detection integration is different for different environments (Hong Kong/Europe), so you need to **configure the corresponding environment**. Currently supported environments are: | Environment | Description | | --- | --- | | **eu** | Default value, available for European merchants | | **hk** | Available for Hong Kong merchants | | **us** | Available for US merchants, currently not open | After successfully importing and loading the SDK link, the variable `PayKKaFraudDetection` will be exposed. You need to pass the environment when calling `PayKKaFraudDetection`. ```typescript const paykkaFraudDetection = PayKKaFraudDetection('hk') ``` PayKKaFraudDetection is a **singleton**, so multiple calls return the same instance. You don't need to worry about duplicate requests. #### createFraudDetection You need to call `paykkaFraudDetection.createFraudDetection()` to create Fraud Detection. At this time, it will start initializing and requesting the fraudDetectionID. This method caches the requested result, so multiple calls won't update it. #### fraudDetectionID You can get the `fraudDetectionID` by calling `paykkaFraudDetection.fraudDetectionID`. Requesting the fraudDetectionID takes some time, but you **don't need to wait for the request to complete to initiate payment**. You can pass it directly whether the fraudDetectionID is empty or not. #### Example ```html html ``` ```javascript javascript // Set Fraud Detection environment (assuming Hong Kong) const paykkaFraudDetection = PayKKaFraudDetection('hk') paykkaFraudDetection.createFraudDetection() // Click payment button const handleClickPay = () => { // Get fraudDetectionID const fraudDetectionID = paykkaFraudDetection.fraudDetectionID const requestParams = { browser: { // Pass fraudDetectionID, whether empty or not fraud_detection_id: fraudDetectionID, ...otherBrowserInfo }, ...otherParams } // Send request } ``` ## Sandbox Environment Integration If you want to use the Fraud Detection SDK in the Sandbox environment, here's an example: ```html html ``` ```javascript javascript // Configure environment const paykkaFraudDetection = PayKKaFraudDetection({ SR: pk_test_51QaC2P5VarcojPHdg13yagk5TqrGkIkeK8I21BgQUZe8BzyRmbtmOg3dKsXjkxt6JlsjyjJMTvBH9dFMCZWRxOkt00tWQ1eHFU }) // Create Fraud Detection paykkaFraudDetection.createFraudDetection() // Click payment button const handleClickPay = () => { const fraudDetectionID = paykkaFraudDetection.fraudDetectionID const paymentParams = { browser: { // Pass fraudDetectionID, whether empty or not fraud_detection_id: fraudDetectionID, ...otherBrowserInfo }, ...otherPaymentParams } // Send payment request... } ```