Protéger les transactions de paiement avec la prévention des fraudes

Cette page explique comment protéger efficacement les transactions de paiement contre les attaques telles que le carding, la fraude aux instruments de paiement volés et la fraude de paiement par piratage de compte à l'aide de la prévention des fraudes de reCAPTCHA.

La prévention des fraudes de reCAPTCHA vous aide à protéger les transactions de paiement en identifiant les attaques manuelles ciblées et les tentatives de fraude à grande échelle. Il entraîne automatiquement les modèles de comportement et de transaction pour identifier les événements susceptibles d'être frauduleux et qui peuvent entraîner une contestation ou un rejet de débit s'ils sont acceptés.

Au sein de ces modèles, la prévention des fraudes de reCAPTCHA examine les signaux de transaction pour permettre la détection des fraudes. Par exemple, une série de tentatives d'achat à prix bas peut indiquer une attaque par carding. Dans la réponse, vous recevez des scores de risque pour différents types de fraudes, que vous pouvez utiliser pour soumettre la transaction à un examen manuel ou pour bloquer directement les transactions suffisamment suspectes.

Pour configurer la prévention des fraudes de reCAPTCHA, vous devez procéder comme suit:

  1. Installez le code JavaScript reCAPTCHA sur votre interface de paiement en installant une clé reCAPTCHA basée sur des scores.

    Lorsque le code JavaScript est exécuté, reCAPTCHA génère un jeton reCAPTCHA unique pour chaque session utilisateur et collecte ses données comportementales afin d'évaluer l'utilisateur.

  2. Envoyez une demande de création d'API d'évaluation depuis votre backend avec des données de transaction sur les événements utilisateur de votre workflow de paiement.

    Dans la réponse à la requête de création d'API d'évaluation, reCAPTCHA fournit un score pour le risque de transaction et un code de motif supplémentaire (par exemple, suspected_carding), le cas échéant.

  3. Déterminez l'action suivante pour vos utilisateurs en fonction des scores.

    Vous pouvez choisir d'autoriser la transaction, de demander une validation supplémentaire, de la transférer à un examen manuel ou de la bloquer.

Avant de commencer

  1. Si vous débutez avec reCAPTCHA, procédez comme suit:

    1. Configurez reCAPTCHA sur votre projet Google Cloud.

    2. Créez une clé reCAPTCHA basée sur des scores.

  2. Activez la prévention des fraudes reCAPTCHA dans votre projet Google Cloud:

    1. Dans la console Google Cloud, accédez à la page reCAPTCHA.

      Accéder à reCAPTCHA

    2. Vérifiez que le nom de votre projet apparaît dans le sélecteur de ressources.

      Si vous ne voyez pas le nom de votre projet, cliquez sur le sélecteur de ressources, puis sélectionnez votre projet.

    3. Cliquez sur Paramètres.

    4. Dans le volet Prévention des fraudes, cliquez sur Configurer.

    5. Cliquez sur le bouton Activer, puis sur Enregistrer.

  3. Assurez-vous que votre environnement est compatible avec les jetons de plus de 8 Ko, car la prévention des fraudes reCAPTCHA peut utiliser des jetons plus volumineux.

Installer reCAPTCHA sur votre interface de paiement

Pour commencer à détecter les attaques, installez une clé reCAPTCHA basée sur des scores sur chaque page de votre parcours utilisateur de paiement. Cela inclut l'interface dans laquelle un utilisateur consulte son panier, sélectionne son mode de paiement et finalise l'achat. Une fois que l'utilisateur a fait son choix à chaque étape, appelez grecaptcha.enterprise.execute() pour générer un jeton. Pour savoir comment installer des clés basées sur des scores et appeler execute(), consultez Installer des clés basées sur des scores.

L'exemple suivant montre comment intégrer une clé basée sur des scores dans un événement de transaction par carte de crédit:

function submitForm() {
  grecaptcha.enterprise.ready(function() {
    grecaptcha.enterprise.execute(
      'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
       document.getElementById("token").value = token;
       document.getElementByID("paymentForm").submit();
    });
  });
}
<form id="paymentForm" action="?" method="POST">
  Total: $1.99
  Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
  <input type="hidden" id="token" name="recaptcha_token"/>
  <button onclick="submitForm()">Purchase</button>
</form>
<script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>

Vous pouvez tester ce code dans JSFiddle en cliquant sur l'icône <> dans l'angle supérieur droit de la fenêtre de code.

<html>
  <head>
    <title>Protected Payment</title>
    <script src="https://www.google.com/recaptcha/enterprise.js" async defer></script>
    <script>
    function submitForm() {
      grecaptcha.enterprise.ready(function() {
        grecaptcha.enterprise.execute(
          'reCAPTCHA_site_key', {action: 'purchase'}).then(function(token) {
           document.getElementById("token").value = token;
           document.getElementByID("paymentForm").submit();
        });
      });
    }
    </script>
  </head>
  <body>
    <form id="paymentForm" action="?" method="POST">
      Total: $1.99
      Credit Card Number: <input name="cc-number" id="cc-number" autocomplete="cc-number"><br/>
      <input type="hidden" id="token" name="recaptcha_token"/>
      <button onclick="submitForm()">Purchase</button>
    </form>
  </body>
</html>

Créer des évaluations avec des données de transaction

Pour activer les évaluations de fraude de paiement, créez des évaluations avec des données de transaction en utilisant les champs supplémentaires de la méthode projects.assessments.create.

L'intégration la plus simple inclut transaction_id, payment_method, card_bin et value. Pour améliorer la qualité de la détection, nous vous recommandons d'ajouter des champs facultatifs tels que email et billing_address.

{
  "event": {
    "token": "YOUR_TOKEN",
    "site_key": "KEY_ID",
    "expected_action": "YOUR_CHECKOUT_ACTION_NAME",
    "transaction_data": {
            "transaction_id": "txid-1234567890",
            "payment_method": "credit-card",
            "card_bin": "411111",
            "card_last_four": "1234",
            "currency_code": "USD",
            "value": 39.98,
            "user": {
                "email": "someEmailAddress@example.com"
            },
            "billing_address": {
                "recipient": "name1 name2",
                "address": [
                    "123 Street Name",
                    "Apt 1"
                ],
                "locality": "Sunnyvale",
                "administrative_area": "CA",
                "region_code": "USA",
                "postal_code": "123456"
            }
        }
    }
}

Pour améliorer la qualité des scores, nous vous recommandons d'envoyer des signaux supplémentaires.

Pour en savoir plus sur la création d'évaluations, consultez Créer une évaluation pour votre site Web. La prévention des fraudes reCAPTCHA peut utiliser des jetons plus importants. Par conséquent, assurez-vous que la requête est envoyée dans une requête POST plutôt que dans GET, ainsi que dans le corps, et non dans un en-tête.

Interpréter les évaluations

Après avoir commencé à envoyer les données de transaction, vous recevez les évaluations sous forme de réponse JSON avec le composant fraudPreventionAssessment dans riskAnalysis.

L'exemple suivant est un exemple de réponse:

{
  "event": {....
  ....
  }
  .....
  ....
  ....
"riskAnalysis": {
    "score": "0.5"
    "reasons": SUSPECTED_CARDING
}
"fraudPreventionAssessment": {
    "transactionRisk": 0.9,
}
}

La réponse que vous recevez inclut un score et des codes de motif, le cas échéant. Plus le score est élevé, plus la transaction est susceptible d'être frauduleuse et risquée. Plus le score est faible, plus la transaction est susceptible d'être légitime. Par exemple, un score de 0,9 indique que la transaction est plus susceptible d'être frauduleuse et risquée, tandis qu'un score de 0,1 indique que la transaction est plus susceptible d'être légitime.

Vous êtes responsable des actions que vous effectuez sur la base de l'évaluation. Pour une intégration la plus simple, vous pouvez définir des seuils sur transactionRisk afin de contribuer à votre décision. Par exemple, elles peuvent contribuer à l'envoi d'un examen manuel ou au rejet direct des transactions frauduleuses probables. Vous pouvez également utiliser le score dans vos propres workflows de lutte contre la fraude ou dans les règles de votre système existant. Étant donné que reCAPTCHA examine des signaux uniques et dispose d'une visibilité unique sur le comportement sur Internet, vous pouvez vous attendre à une valeur supplémentaire, même avec un moteur de détection de fraudes déjà mature.

Étapes suivantes