# Antifraude (/docs/cartao/antifraud)



<QuickLinks>
  <QuickLink href="/docs/cartao/endpoints/charges/post_charges" title="Criar cobrança" method="POST" path="/charges" />

  <QuickLink href="/docs/cartao/mdds" title="Tabela de MDDs" />

  <QuickLink href="/docs/cartao/international" title="Cobrança internacional" />

  <QuickLink href="/docs/cartao/three-d-secure" title="3-D Secure" />
</QuickLinks>

Cobranças enviadas com o objeto `fraudAnalysis` passam em tempo real pelo antifraude **Cybersource** 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

<Callout type="warn">
  O envio de `fraudAnalysis` é **obrigatório** em cobranças
  internacionais. Consulte [Cobrança
  internacional](/docs/cartao/international).
</Callout>

## Como funciona [#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`).

```json
{
  "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](/docs/cartao/mdds).

A resposta da transação pode conter os seguintes status de antifraude:

| Status        | Descrição                                 |
| ------------- | ----------------------------------------- |
| `Approved`    | Transação aprovada após análise de risco  |
| `Rejected`    | Transação recusada por suspeita de fraude |
| `UnderReview` | Transação em análise manual               |

## Captura do fingerPrintId [#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.

<Steps>
  <Step>
    ### Carregar o script [#carregar-o-script]

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

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

  <Step>
    ### Gerar o id e ativar o fingerprint [#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:

    ```html
    <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âmetro    | Valor Padrão | Obrigatório? |
    | ------------ | ------------ | ------------ |
    | `identifier` | \*           | Sim          |
    | `sandbox`    | false        | Não          |

    <Callout type="info">
      Após ativá-lo, você já pode usar seu fingerprint dentro do campo
      `fraudAnalysis` para criar uma requisição de pagamento.
    </Callout>
  </Step>

  <Step>
    ### Enviar fraudAnalysis na cobrança [#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.

    ```json
    {
      "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"
            }
          ]
        }
      }
    }
    ```

    <Callout type="warn">
      Ao realizar cobrança utilizando o antifraude, todos os campos de
      `customer`, exceto `complement` e `birthdate`, se tornam obrigatórios.
    </Callout>
  </Step>
</Steps>

## Próximos passos [#próximos-passos]

<QuickLinks>
  <QuickLink href="/docs/cartao/endpoints/charges/post_charges" title="Criar cobrança" method="POST" path="/charges" />

  <QuickLink href="/docs/cartao/mdds" title="Tabela de MDDs" />

  <QuickLink href="/docs/cartao/international" title="Cobrança internacional" />
</QuickLinks>
