Implementação do Antifraude

A implementação de um sistema antifraude tem como objetivo monitorar e analisar o comportamento do usuário durante o preenchimento de dados sensíveis no checkout (como informações do cartão de crédito) para identificar padrões de fraude. A integração deste script aumenta a segurança nas transações, minimizando o risco de fraudes.

Visão Geral

A integração do antifraude na sua aplicação consiste em adicionar um código JavaScript específico dentro da tag <head>.
O script deve ser iniciado assim que os dados do cartão de crédito ou do usuário começarem a ser capturados na página de checkout. Isso assegura o monitoramento desde o início da inserção de dados sensíveis.

Requisitos

  • Suporte a JavaScript: Seu navegador deve estar habilitado para executar JavaScript.
  • Acesso ao checkout onde os dados do usuário são capturados.

Exemplos de implementação

// File: checkout.js
import { v4 as uuidV4 } from 'uuid';

function insertAntifraudScript(attemptReferenceValue) {
  if (!attemptReferenceValue) {
    return;
  }

  const nethoneScript = document.createElement("script");
  nethoneScript.type = "text/javascript";
  nethoneScript.id = "nethone-script";
  nethoneScript.crossOrigin = "use-credentials";
  nethoneScript.src = "https://d354c9v5bptm0r.cloudfront.net/s/68741/dQItJr.js";
  nethoneScript.async = true;
  document.head.appendChild(nethoneScript);
  nethoneScript.onload = () => {
    localStorage.setItem("attempt_reference", attemptReference);
    const nethoneOptions = {
      attemptReference,
      sensitiveFields: [ // Add here the names of the sensitive fields
        'name',
        'taxId',
        'email',
        'phone',
        'cardInfoPayerName',
        'cardInfoPayerTaxId',
        'cardNumber',
        'cardCvv',
        'cardExpirationDate'
      ],
    };
    if (window.dftp) {
      window.dftp.init(nethoneOptions);
    } else {
      nethoneScript.addEventListener("load", () => {
        if (window.dftp) {
          window.dftp.init(nethoneOptions);
        }
      });
    }
  };
}

// Call the function with the attemptReference value
const attemptReference = uuidV4(); // Replace with the GUID
insertAntifraudScript(attemptReference);

// File: useAntifraud.js
import { useScript } from '@unhead/vue';

export const useAntifraud = attemptReferenceValue => {
  if (!attemptReferenceValue) {
    return;
  }

  useScript(
    {
      id: 'nethone-script',
      type: 'text/javascript',
      src: 'https://d354c9v5bptm0r.cloudfront.net/s/68741/dQItJr.js',
      crossorigin: 'use-credentials',
      async: true
    },
    {
      use() {
        localStorage.setItem('attempt_reference', attemptReferenceValue);

        const nethoneOptions = {
          attemptReference: attemptReferenceValue,
          sensitiveFields: [ // Add here the names of the sensitive fields
            'name',
            'taxId',
            'email',
            'phone',
            'cardInfoPayerName',
            'cardInfoPayerTaxId',
            'cardNumber',
            'cardCvv',
            'cardExpirationDate'
          ]
        };

        window.dftp.init(nethoneOptions);
      }
    }
  );
};

// File: checkout.vue
import { v4 as uuidV4 } from 'uuid';
import { useAntifraud } from './useAntifraud.js'

const attemptReference = uuidV4(); // Replace with the GUID
useAntifraud(attemptReference);

// File checkout.jsx
import React, { useEffect, useState } from 'react';
import { v4 as uuidv1 } from 'uuid';

function Checkout() {
  const [attemptReference, setAttemptReference] = useState(uuidv1()); // Replace the uuidv1()  with the GUID

  useEffect(() => {
    if (attemptReference) {
      const nethoneScript = document.createElement("script");
      nethoneScript.type = "text/javascript";
      nethoneScript.id = "nethone-script";
      nethoneScript.crossOrigin = "use-credentials";
      nethoneScript.src = "https://d354c9v5bptm0r.cloudfront.net/s/68741/dQItJr.js";
      nethoneScript.async = true;
      document.body.appendChild(nethoneScript);
      nethoneScript.onload = () => {
        localStorage.setItem("attempt_reference", attemptReference);
        const nethoneOptions = {
          attemptReference,
          sensitiveFields: [ // Add here the names of the sensitive fields
            'name',
            'taxId',
            'email',
            'phone',
            'cardInfoPayerName',
            'cardInfoPayerTaxId',
            'cardNumber',
            'cardCvv',
            'cardExpirationDate'
          ],
        };
        if (window.dftp) {
          window.dftp.init(nethoneOptions);
        } else {
          nethoneScript.addEventListener("load", () => {
            if (window.dftp) {
              window.dftp.init(nethoneOptions);
            }
          });
        }
      }
    }
  }, [attemptReference]);

  // Conteúdo do componente de checkout vai aqui

  return (
    <div>
      {/* Seu formulário de checkout */}
    </div>
  );
}

export default Checkout;


GUID

Substitua o attemptReference por um GUID (Globally Unique Identifier), um identificador único global gerado pela aplicação do merchant. Este GUID é gerado no servidor do cliente e deve ser informado no campo payment_method_details.credit_card.antifraud_fingerprint_id na criação do recebimento.

Exemplo de GUID: 2dd470e0-698f-4ae4-bf31-71ccd33970dd