Fraud Intelligence Integration

Fraud Intelligence is a Saferpay module that protects merchants from fraudulent online transactions. It relies on industry-leading AI technology and allows merchants to dynamically react on suspicious behavior and even prevent transactions with malicious intent, during authentication.

This chapter will cover the technical aspects on how to integrate Fraud Intelligence in your application.

Requirements

  • A corresponding license and thus a valid identification with a username and password for the Saferpay system.

  • Availability of at least one active Saferpay terminal via which payments can be carried out, and availability of the associated Saferpay TerminalId.

  • A contract to use the Fraud Intelligence module in Saferpay. Please contact your contractual sales contact on that matter.

  • Saferpay JSON API SpecVersion 1.20+

Supported Payment Methods and Flows

Currently, the following payment methods are supported:

  • Visa/VPay

  • Mastercard/Maestro

  • American Express

  • Bancontact

  • Diners Club

  • JCB

  • PayPal

  • Unionpay

Currently, the following flows are supported:

Data points

In order for the fraud detection to work properly, the system needs to be provided with a set of data points with each transaction. Some are provided automatically by Saferpay, while others need to be submitted by the merchant's system with the initial request, when starting the transaction with either Transaction Initialize or Payment Page Initialize.

All of these datapoints are generally optional. However the detection will work better the more data are provided.

The following data points can be set via the JSON API:

Deprecated Fields

This fields are not in use anymore:

Device Fingerprinting

If Devide Fingerprinting is enabled, the following additional data points are available:

Example

Here you can see an example Payment Page Initialize request. Note that the containers and parameters are, of course, consistent throughout the whole API:

{
  "RequestHeader": {
    "SpecVersion": "<insert current spec-version here>",
    "CustomerId": "<insert your customer id here>",
    "RequestId": "798b38f3176f4eb1bc6ce36e946d10ba",
    "RetryIndicator": 0
  },
  "TerminalId": "<insert your terminal id here>",
  "Payment": {
    "Amount": {
    "Value": "55000",
    "CurrencyCode": "EUR"
  },
  "OrderId": "AB-12345.xyz",
  "Description": "Your order #AB-12345.xyz"
  },
  "Payer": {
    "IpAddress": "127.0.0.1",
    "DeliveryAddress": {
      "FirstName": "John",
      "LastName": "Doe",
      "Gender": "MALE",
      "Street": "Notreal road 42",
      "Zip": "12346",
      "City": "Sometown",
      "CountryCode": "US",
      "DateOfBirth": "2001-01-01"
    }
  },
  "ReturnUrls": {
    "Success": "https://yourshop/payment-success",
    "Fail": "https://yourshop/payment-failed",
    "Abort": "https://yourshop/payment-aborted"
  },
  "Notification": {
    "NotifyUrl": "https://yourshop/payment-notify"
  },
  "Order": {
    "Items": [
      {
        "Type": "PHYSICAL",
        "Id": "BAAA-BPTENT",
        "Name": "Awesome Tent",
        "Description": "Backpacking Tent with room for 3 people, in red.",
        "Quantity": 1,
        "UnitPrice": "25000"
      },
      {
        "Type": "GIFTCARD",
        "Id": "EVCHR-HIKE",
        "VariantId": "EVCHR-HIKE-300",
        "Name": "Hiking vacation voucher",
        "Description": "Enjoy the vacation with your friends!",
        "Quantity": 2,
        "UnitPrice": "30000",
        "IsPreOrder": false
      }
    ]
  },
  "RiskFactors": {
    "DeliveryType": "SHOP",
    "AccountCreationDate": "2019-02-21T12:04:43Z",
    "PasswordLastChangeDate": "2019-12-23T16:36:43Z"
  }
}

Device Fingerprinting

Device Fingerprinting is a process to identify and track devices across websites through a central service. The data collected is used to identify malicious devices and thusly to prevent fraud.

The Saferpay Fraud Intelligence solution does offer possibilities to benefit from such a process, however it needs additional integration steps, in order to function.

Preparation

Before you can start integrating, please contact dl-fraud-team-saferpay@worldline.com in order to get your so called instanceId, which is important for this service to function.

Integration

The integration of the Device Fingerprinting service is done on client-side via JavaScript.

It is imperative, that this script is called before the Saferpay payment is initialized.

Code Sample

<html>
  <head>
    <title>Device Fingerprint Example</title>
    <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
    <script>
      $(function(){
        // Construct dfpScriptUrl:
        var dfpBaseUrl = "https://devicefingerprint.pay.checkout.worldline-solutions.com/mdt.js?";
        var dfpScriptUrl = dfpBaseUrl + decodeURIComponent($.param({
        session_id: "[UNIQUE SESSION ID]", // This sessionId must be unique for this transaction and is later forwarded to Saferpay
        instanceId: "[INSTANCE_ID]", // The ID you got in the previous step
        pageId: "P" // Don't change this value!
      }));
 
     // Load the DFP script:
     console.log("DFP: Loading script from " + dfpScriptUrl);
     $.getScript(dfpScriptUrl)
       .done(function(){
         // Execute the DFP script:
         window.dfp.doFpt(document);
         console.log("DFP: Script successfully executed - see the browser console Network tab for details");
       })
       .fail(function(){
         // Something went wrong:
         console.log("DFP: Something went wrong");
       });
   });
   </script>
   </head>
   <body>
     <h1>Device Fingerprint Test</h1>
     Press Shift + CTR + J to open the browser console
   </body>
</html>

Explanation

The above script creates the fingerprint itself and directly submits the data towards the Fraud Intelligence service.

  • dfpBaseUrl: This URL static and provided by us. It will change shortly and we'll then inform what the new URL is.

  • session_id: A unique id generated by you which is diferent for each transaction. It is also used by Saferpay, see the next step.

  • instanceId: The instanceId which was given to you by the DFP support

  • pageId: This value always needs to be "P" which stands for "Prevention" and helps to route the data to the right location.

Saferpay Integration

Once the above script has been successfully initialized and the necessary device-fingerprint has been created, you can initialize the Saferpay Payment.

It is however important, that you share the unique session_id you previously created with Saferpay. You do so, by submitting it inside the RiskFactors.DeviceFingerprintTransactionId parameter, via either the PaymentPage Initialize, or Transaction Initialize request, depending on your integration.

Risk Score

The Fraud Intelligence module uses artificial intelligence to calculate a Risk Score from all available data. This Risk Score is an indicator how risky the transaction is: A transaction with a high Risk Score generally has a higher propability to be fraudulent than a transaction with a low risk score.

Rules

Rules are used to configure the individual risk appetite of a merchant and to make a decision based on the calculated Risk Score and other criteria. For example, a simple rule could block all transactions with a Risk Score higher than x. A rule can also combine multiple conditions such as velocity thresholds and check other data points, which allows to model complex business requirements and manually block specific fraud scenarios.

Responses

Success

In case of a success, the transaction response will also carry additional information inside the FraudPrevention.Result parameter. This can have one of two values: APPROVED and MANUAL_REVIEW.

In both cases, the transaction was indeed successful. However, the latter indicates that there may be issues with this transaction, which need to be reviewed manually.

It is then up to you, the merchant, to either accept or decline this transaction.

 "ResponseHeader": {
    "SpecVersion": "[current Spec-Version]",
    "RequestId": "[your request id]"
  },
  "Transaction": {
    "Type": "PAYMENT",
    "Status": "AUTHORIZED",
    "Id": "MUOGAWA9pKr6rAv5dUKIbAjrCGYA",
    "Date": "2015-09-18T09:19:27.078Z",
    "Amount": {
      "Value": "100",
      "CurrencyCode": "CHF"
    },
    "AcquirerName": "AcquirerName",
    "AcquirerReference": "Reference",
    "SixTransactionReference": "0:0:3:MUOGAWA9pKr6rAv5dUKIbAjrCGYA",
    "ApprovalCode": "012345"
  },
  "PaymentMeans": {
    "Brand": {
      "PaymentMethod": "VISA",
      "Name": "VISA Saferpay Test"
    }
  },
  "DisplayText": "9123 45xx xxxx 1234",
  "Card": {
    "MaskedNumber": "912345xxxxxx1234",
    "ExpYear": 2015,
    "ExpMonth": 9,
    "HolderName": "Max Mustermann",
    "CountryCode": "CH"
  },
  "Payer": {
    "IpAddress": "1.2.3.4",
    "IpLocation": "DE"
  },
  "Liability": {
    "LiabilityShift": true,
    "LiableEntity": "ThreeDs",
    "ThreeDs": {
      "Authenticated": true,
      "LiabilityShift": true,
      "Xid": "ARkvCgk5Y1t/BDFFXkUPGX9DUgs=",
      "VerificationValue": "AAABBIIFmAAAAAAAAAAAAAAAAAA="
    }
  },
  "FraudPrevention": {
    "Result": "MANUAL_REVIEW"
  }
}

Failure

In case of a decline, Saferpay will throw a appropriate error, also containing the reason.

{
    "ResponseHeader": {
        "SpecVersion": "<current spec-version>",
        "RequestId": "1"
    },
    "Risk": {
        "BlockReason": "BLACKLIST_IP",
        "IpLocation": "CH"
    },
    "Behavior": "ABORT",
    "ErrorName": "BLOCKED_BY_RISK_MANAGEMENT",
    "ErrorMessage": "Blocked by fraud detection"
}

Feedback to Fraud Intelligence Hub

These responses will in return be transferred to the Fraud Intelligence Hub for further Risk analysis and overview purposes.

Note, that this currently only happens for normal debit transactions. Other transactions, like refunds, are currently not included.

Last updated