PayZuDocs

Antifraude

Análise de risco aplicada à cobrança antes da autorização.

Cobranças enviadas com o objeto fraudAnalysis passam em tempo real pelo motor antifraude da PayZu antes da autorização. Você controla por cobrança se a análise roda e o que fazer com o resultado.

A análise antifraude pode:

  • Aprovar automaticamente a transação
  • Recusar a transação por suspeita de fraude
  • Encaminhar para análise manual, de acordo com regras previamente definidas

O envio de fraudAnalysis é obrigatório em cobranças internacionais. Consulte Cobrança internacional.

Como funciona

Quando a cobrança é criada com o objeto fraudAnalysis, a operação é submetida a uma avaliação de risco com base em diversos critérios, como dados do cliente, comportamento de compra e características do pedido.

Para utilizar o antifraude, basta incluir o objeto fraudAnalysis dentro de creditCardPayment na requisição de criação da transação. Esse objeto leva o identificador do dispositivo (fingerPrintId), os dados do navegador (browser) e os campos MDD (definedFields).

{
  "creditCardPayment": {
    "fraudAnalysis": {
      "fingerPrintId": "xyz123fingerprint",
      "browser": {
        "cookiesAccepted": true,
        "email": "joao.silva@example.com",
        "hostName": "host.example.com",
        "ipAddress": "192.168.0.1",
        "type": "Chrome"
      },
      "definedFields": [
        {
          "id": 1,
          "value": "Guest"
        }
      ]
    }
  }
}

Para uma lista de valores que podem ser passados em definedFields, consulte a Tabela de MDDs.

A resposta não traz um campo próprio de antifraude. O resultado da análise chega em creditCardPayment.status, reasonCode e reasonMessage:

Resultado da análiseCampos na resposta
AprovadaA cobrança segue para autorização e status assume 1 (Authorized) ou 2 (PaymentConfirmed)
Recusada por suspeita de fraudestatus 13 (Aborted) com reasonCode 16 (AbortedByFraud)
Não concluídareasonCode 17 (CouldNotAntifraud)

Os valores completos estão em Status e motivos da transação.

Captura do fingerPrintId

O fingerPrintId é um id de sessão aleatório gerado pelo próprio cliente, que deve ser utilizado para a requisição de pagamento. Cada fingerprint é único e válido por 48 horas.

Carregar o script

Para obter um fingerprint, você precisará carregar o seguinte script em sua página HTML:

<script src="https://static.payzu.io/scripts/antifraud.min.js"></script>

Gerar o id e ativar o fingerprint

Após isso, você deverá gerar um id aleatório que será o seu fingerprint e utilizar o nosso script para ativá-lo.

Exemplo completo:

<head>
  <script src="https://static.payzu.io/scripts/antifraud.min.js"></script>
</head>
<script>
  // Id aleatório que será utilizado como fingerprint
  const uuid = self.crypto.randomUUID();

  // Ambiente de produção
  payzuAntiFraud.init({
    identifier: uuid,
  });

  ...

  // Ambiente sandbox
  payzuAntiFraud.init({
    identifier: uuid,
    sandbox: true,
  });

  ...
</script>

Parâmetros da função init:

ParâmetroValor PadrãoObrigatório?
identifier*Sim
sandboxfalseNão

Após ativá-lo, você já pode usar seu fingerprint dentro do campo fraudAnalysis para criar uma requisição de pagamento.

Enviar fraudAnalysis na cobrança

Para criar uma cobrança utilizando o antifraude, é necessário informar o campo fraudAnalysis dentro de creditCardPayment. Dentro de browser, os campos cookiesAccepted e ipAddress são obrigatórios.

{
  "customer": {
    "name": "João Silva",
    "identity": "12345678900",
    "identityType": "CPF",
    "email": "joao.silva@example.com",
    "phone": "5511912345678",
    "address": {
      "street": "Rua das Flores",
      "number": "123",
      "zipCode": "01234567",
      "city": "São Paulo",
      "state": "SP",
      "country": "Brasil",
      "district": "Centro"
    }
  },
  "creditCardPayment": {
    "fraudAnalysis": {
      "fingerPrintId": "xyz123fingerprint",
      "browser": {
        "cookiesAccepted": true,
        "email": "joao.silva@example.com",
        "hostName": "host.example.com",
        "ipAddress": "192.168.0.1",
        "type": "Chrome"
      },
      "definedFields": [
        {
          "id": 1,
          "value": "Guest"
        }
      ]
    }
  }
}

No schema, customer exige apenas name. Com fraudAnalysis na requisição, o antifraude também exige identity, identityType, email, phone e address; dentro de address, só complement é opcional. O birthdate continua opcional.

Próximos passos

Nesta página