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álise | Campos na resposta |
|---|---|
| Aprovada | A cobrança segue para autorização e status assume 1 (Authorized) ou 2 (PaymentConfirmed) |
| Recusada por suspeita de fraude | status 13 (Aborted) com reasonCode 16 (AbortedByFraud) |
| Não concluída | reasonCode 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âmetro | Valor Padrão | Obrigatório? |
|---|---|---|
identifier | * | Sim |
sandbox | false | Nã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.