Ir para conteúdo principal

Fingerprint e Google reCAPTCHA

Os sistemas Fingerprint e Google reCAPTCHA fornecem proteção antifraude na nova aplicação de checkout.

Atualizado esta semana

Os sistemas Fingerprint e Google reCAPTCHA fornecem proteção antifraude na nova aplicação de checkout. A integração destes sistemas requer passos específicos detalhados abaixo.


Pré-requisitos:

  • Certifique-se de que está a usar um token Ventrata Checkout.

    Este token é o mesmo que o seu ID Checkout. Trata-se de um token especializado concebido para ser público e pode ser utilizado com segurança no lado do cliente para fazer pedidos diretamente à api.ventrata.com. Restringe o uso de determinados endpoints.

📒 NOTA

Caso necessite de usar estes endpoints restritos, utilize tokens de ligação OCTO.


Note que todos os exemplos utilizam JavaScript e pacotes específicos para esta linguagem.

Passo 1: Fingerprint

Os passos seguintes descrevem o processo de integração:

  1. [Lado do cliente] Comando GET /ventrata/checkout/config para obter o objeto de configuração do checkout.

    Certifique-se de utilizar a função (capability) ventrata/checkout para obter uma resposta correta.

    fetch("https://api.ventrata.com/octo/ventrata/checkout/config", {
    "headers": {
    "authorization": "Bearer <YOUR_TOKEN_HERE>",
    "octo-capabilities": "ventrata/checkout",
    },
    "method": "GET",
    });

  2. [Lado do cliente] Carregue o script JS do Fingerprint globalmente em todas as páginas usando fingerprintPublicKey do objeto de configuração como chave API.

  3. [Lado do cliente] Antes de carregar a página de pagamento, use fp.get() com o cardPayments.fraudAssessment.id do objeto do pedido.

    fp.get({ linkedId: cardPayment.fraudAssessment?.id });

  4. [Fingerprint] Uma impressão digital é gerada internamente e enviada para a Ventrata através de webhook.

  5. [Lado do cliente] Consulte o endpoint GET /orders/:id até que cardPayments.fraudAssessment.fingerprintReceived esteja definido como true.

Informações adicionais

Utilizamos fingerprintjs-pro para fingerprinting. Pode consultar o seu guia de iniciação rápida para mais detalhes.

Uma forma de integrar o Fingerprint é incluir o pacote NPM de JavaScript no seu processo de build:

import * as FingerprintJS from '@fingerprintjs/fingerprintjs-pro'   
const fpPromise = FingerprintJS.load({
apiKey: "{fingerprintPublicKey}",
endpoint: "https://fp.ventrata.com",
scriptUrlPattern: "https://fp.ventrata.com/web/v<version>/<apiKey>/loader_v<loaderVersion>.js"
});

Depois, antes de carregar o ecrã de pagamento, pode utilizar a integração da seguinte forma:

fpPromise.then(fp => fp.get({ linkedId: "{cardPayments.fraudAssessment.id}" }))

📒 NOTA

Recomendamos vivamente utilizar a integração NPM em vez da integração CDN para minimizar o risco de ser bloqueado por bloqueadores de anúncios.

📒 NOTA

Lembre-se de implementar mecanismos robustos de tratamento de erros para detetar e gerir erros desconhecidos. Recomendamos seguir as melhores práticas gerais de tratamento de erros.


Passo 2: Google reCAPTCHA

Os passos seguintes descrevem o processo de integração:

  1. [Lado do cliente] Utilize GET /ventrata/checkout/config para obter o objeto de configuração do checkout.

    Certifique-se de utilizar a função (capability) ventrata/checkout para obter uma resposta correta.

    fetch("https://api.ventrata.com/octo/ventrata/checkout/config", {
    "headers": {
    "authorization": "Bearer <YOUR_TOKEN_HERE>",
    "octo-capabilities": "ventrata/checkout",
    },
    "method": "GET",
    });

  2. [Lado do cliente] Carregue o script JavaScript do reCAPTCHA globalmente em todas as páginas. Utilize a recaptchaEnterpriseSiteKey do objeto de configuração obtido no Passo 1.

    <script src="https://www.recaptcha.net/recaptcha/enterprise.js?render={recaptchaEnterpriseSiteKey}">

  3. [Lado do cliente] Execute regularmente a geração de tokens em segundo plano para acionar o processamento de aprendizagem automática do reCAPTCHA. Isto deve ser feito a intervalos de 10 segundos. Use a função grecaptcha.enterprise.execute com recaptchaEnterpriseSiteKey e action: CHECKOUT . Segue um exemplo de como esta geração poderá ficar:

    function recaptchaIntervalStart(recaptchaEnterpriseSiteKey: string) {
    const intervalInSecs = 10;
    const milliseconds = 1000;
    recaptchaIntervalID = window.setInterval(() => {
    if (window.grecaptcha?.enterprise?.ready) {
    window.grecaptcha.enterprise.ready(async () => {
    try { window.grecaptcha.enterprise.execute(recaptchaEnterpriseSiteKey, {
    action: "CHECKOUT",
    });
    } catch (e) {
    console.error("reCAPTCHA interval failure", e);
    Sentry.captureException(e);
    }
    });
    }
    }, intervalInSecs * milliseconds);
    return recaptchaIntervalID; }
    ....
    ....
    recaptchaIntervalStart(recaptchaEnterpriseSiteKey) // e.g. on `DOMContentLoaded` event

  4. [Lado do cliente] Depois de receber uma impressão digital com sucesso, atualize o pedido com um token reCAPTCHA gerado pelo window.grecaptcha.enterprise.execute. O token deve ser gerado e o pedido atualizado imediatamente antes do utilizador ser direcionado para o gateway de pagamento.

    const reCatpchaOrder = await cartService.updateOrder(
    orderForRecaptchaFlow.id, {
    currency: orderForRecaptchaFlow.pricing.currency,
    cardPayment: {
    fraudAssessment: {
    googleRecaptchaEnterprise: {
    token: recaptchaTokenFromExecuteFn,
    siteKey: recaptchaEnterpriseSiteKey,
    },
    },
    },
    },
    );



    📒 NOTA

    Repita este passo a cada 60 segundos até que o pedido seja confirmado ou até que um erro crítico impeça a inicialização do gateway de pagamento. Durante este processo, é recomendável parar a recaptchaIntervalStart do Passo 3 para evitar a invalidação do token pelo Google. Assim que o pedido for atualizado com sucesso, retome a geração de tokens em segundo plano.


  5. O pedido será confirmado automaticamente assim que o webhook de autorização for recebido da Adyen.

Isto respondeu à sua pergunta?