NAV

Introdução

Seja bem-vindo ao SafeGuard! Nesta documentação, falamos sobre nossa análise antifraude e detalhamos as APIs que disponibilizamos para realizar a avaliação das suas vendas.

Para alcançar resultados mais efetivos, nosso serviço realiza dois tipos de análise: a dos dados da venda e a do comportamento do usuário no e-commerce.

Assim que uma pessoa acessa a sua página, já iniciamos o monitoramento de suas ações, através de nossa API em Javascript. Quando ela confirma a compra, recebemos todos os detalhes do pedido através de nossa API REST e avaliamos o risco dessa venda.

A seguir, explicamos com maior profundidade os procedimentos de configuração e integração com nossas APIs.

Em casos de dúvidas, é só entrar em contato conosco através de nosso e-mail ou através de um ticket de suporte para que possamos ajudá-lo da melhor maneira.

Monitoramento

Identificação do cliente

O primeiro passo na avaliação de um indivíduo é identificá-lo. Nós fazemos isso criando um fingerprint dos seus usuários através da inclusão de uma API Javascript na sua plataforma.

Passo 1. Na sua página, inclua o script do SafeGuard

<head>
    ...
    <!-- SafeGuard Javascript -->
    <script src='https://www.safeguard.vc/assets/safeguard_api_v3.js'></script>
    <!-- SafeGuard Javascript -->
    ...
</head>

Após incluir o script no seu e-commerce, basta iniciar a API do SafeGuard para recuperar o token de transação do seu cliente.

Esse token deve ser enviado para o seu servidor para que possa ser enviado junto com os dados da compra.

Passo 2. Inicialize a API do SafeGuard

var safeGuard = new app.SafeGuard();
safeGuard.init({
  identification: USER_IDENTIFICATION,
  identificationType: USER_IDENTIFICATION_TYPE,
  authorizationKey: YOUR_APPLICATION_PUBLIC_KEY,
  onSuccess: function(data) {
    /*
      At this point, the API was successfully started.

      So you should send the generated transaction token to your server.

      The results are available on data object, eg:
      {
        transactionToken: 'a-transaction-token',
        needsTokenPasswordToIssue: true
      }
    */
  },
  onError: function(status, message) {
    /*
      Check the status and message to understand the issue
    */
  }
});

Antifraude

Analisamos o risco de uma venda assim que o cliente confirma a compra na sua plataforma. Através de nossos algoritmos e de nossa tecnologia machine learning, avaliaremos todos os detalhes da venda (comprador, itens comprados, meio de pagamento, endereços...), juntamente com os dados do comportamento do usuário.

Para isso, recebemos os dados através de um POST na nossa API REST de análise antifraude. No envio dos dados, você precisará configurar um HEADER de autenticação e construir o corpo da análise com as informações da venda no formato esperado pela nossa API (vide explicações abaixo).

Autenticação da API

O SafeGuard espera um header HTTP chamado de Authorization que possui os seguintes dados:

# O Header segue este seguinte formato:

Authorization: "SAFEGUARD privateKey~transactionToken:userIdentification"

# No caso, por exemplo, em que:

# - privateKey: a51b4f34
# - transactionToken: 18cebab0
# - userIdentification: usuario123

# O Header deve ser enviado da seguinte maneira:

Authorization: "SAFEGUARD a51b4f34~18cebab0:usuario123"

Envio dos dados

A chamada para o SafeGuard deve ser feita atráves de um HTTP POST, com um JSON o formato pré-definido no corpo da requisição.

HTTP Request

POST https://www.safeguard.vc/api/risk/v3/risk_analysis

HTTP Body

O corpo da mensagem que deve ser enviado ao SafeGuard segue o seguinte formato:

[
  {
    "additional_parameters": [],
    "currency": "BRL",
    "destination": "GIG",
    "identifier": "LOC123",
    "issuing_company": {},
    "origin": "GRU",
    "source": "Sabre",
    "channel": "web",
    "tickets_to_issue": [],
    "travel_type": "oneway"
  }
]
Campo Descrição Obrigatório
additional_parameters Lista de objetos com os parâmetros adicionais Não
currency Moeda utilizada no pagamento Sim
destination IATA do aeroporto de destino Sim
identifier Localizador Sim
issuing_company Objeto com os dados da agência Sim
origin IATA do aeroporto de origem Sim
source Origem da venda Sim
tickets_to_issue Lista de objetos com os dados dos tickets Sim
travel_type Tipo da viagem (oneway/roundtrip) Sim
channel Canal da venda Não

Dados da Agência

{
  "address": {
    "country": "BRA",
    "postal_code": "00000000",
    "state": "SP",
    "street": "Rua do Arouche, 23",
    "city": "sao paulo"
  },
  "company_identification": "12551558000144",
  "credit_limit": 300000000,
  "external_id": "AGCNY123456",
  "name": "Agencia XY"
}
Campo Descrição Exemplo
address* Objeto com os dados de endereço {}
company_identification* CNPJ ou documento da agência 12551558000144
credit_limit Valor do limite de crédito em centavos 300000000
external_id* Identificador da agência AGCNY123456
name* Nome da agência Agencia XY

Dados de Endereço da Agência

{
  "country": "BRA",
  "postal_code": "02345009",
  "state": "SP",
  "street": "Rua do Arouche, 26",
  "city": "sao paulo"
}
Campo Descrição Exemplo
country* País em ISO 3166 "BRA"
postal_code* CEP "02345009"
state* Estado/região "SP"
street* Endereço "Rua do Arouche, 23"
city* Cidade "sao paulo"

Dados dos Tickets

{
  "air_company": "JJ",
  "class": "$",
  "first_name": "Fulano",
  "flight_groups": [],
  "last_name": "Tal",
  "passenger_type": "adult",
  "payments": [],
  "price": 15000,
  "status": "issued"
}
Campo Descrição Exemplo
air_company* Código da companhia aérea "JJ"
class* Classe do Voo "$"
first_name* Primeiro nome do passageiro "Fulano"
flight_groups* Lista de objetos com os dados dos trechos []
last_name* Último nome do passageiro "Tal"
passenger_type* Tipo de passageiro (adult/child/infant) "adult"
payments* Lista de objetos com os dados dos pagamentos []
price* Preço da passagem em centavos "15000"
status* Indicador da venda da passagem (issued/not_issued) "issued"

Dados dos Trechos

[
  {
    "air_company_operator": "JJ",
    "arrival_at": "2015-09-17T19:00:00-03:00",
    "cabin": "economic",
    "departure_at": "2015-09-17T18:00:00-03:00",
    "destination": "GIG",
    "origin": "GRU"
  }
]
Campo Descrição Exemplo
air_company_operator* Código da companhia aérea "JJ"
arrival_at* Data/Hora do chegada em ISO 8601 "2015-09-17T19:00:00-03:00"
cabin* Tipo da passagem (economic/executive/first_class) "economic"
departure_at* Data/Hora do embarque em ISO 8601 "2015-09-17T18:00:00-03:00"
destination* IATA do aeroporto de destino Sim
origin* IATA do aeroporto de origem Sim

Dados de Pagamento

[
  {
    "credit_card_info": {
      "brand": "VISA",
      "holder_name": "FULANO DA SILVA",
      "number": "5555666677778888"
    },
    "type": "credit_card"
  },
  {
    "payment_description": "Faturado",
    "type": "other"
  }
]
Campo Descrição Exemplo
type* Tipo de pagamento (credit_card, other) "other"
payment_description* Descrição do pagamento "Faturado"
credit_card_info.number Número do cartão de crédito (obrigatório quando para credit_card) "5555666677778888"
credit_card_info.holder_name Nome do titular do cartão de crédito (obrigatório quando para credit_card) "FULANO DA SILVA"
credit_card_info.brand Bandeira do cartão de crédito (obrigatório quando para credit_card) "VISA"

Retorno da API

HTTP Status 200 - OK

Em caso de 200, a análise de risco retorna um JSON estruturado da seguinte forma:

[
  {
    "identifier": "UUKYRQ",
    "level": "ACCEPT",
    "score": 2
  }
]

Quando o HTTP status do retorno da análise de risco for igual à 200, significa que tudo ocorreu como esperado e a análise foi feita com sucesso.

Nesse caso, é retornado um JSON com as seguintes informações:

HTTP Status 401 - Unauthorized

Quando o HTTP status do retorno da análise de risco for igual à 401, significa que o Header de autenticação estava inválido.

Nesse caso, o JSON da resposta será vazio.

HTTP Status 422 - Unprocessable Entity

Em caso de 422, a análise de risco retorna um JSON estruturado da seguinte forma:

{
  "currency": "missing",
  "issuing_company.credit_limit": "invalid_format"
}

Quando o HTTP status do retorno da análise de risco for igual à 422, significa que algum dado enviado para a análise não está no formato esperado pela API.

Nesse caso, o JSON da resposta contém uma lista de falhas que seguem a seguinte estrutura:

Demais HTTP Status Codes

Os demais status codes não são erros esperados pela API, e devem ser comunicados pelo nosso canal de suporte para maiores investigações e esclarecimentos.

Autenticação via Token

Capturar o código OTP do usuário

Após configurar e inicializar a API Javascript, você pode chamar a captura do código OTP em diversos momentos da sua aplicação executando o código descrito abaixo.

safeGuard.buildForm(
  function(data) {
    /*
        - here in 'data' you will receive the following:
          otp: user typed token code;
          transactionToken: token generated on the API initialization;

          - send both to your server with the user identification as well
    */
  }
);

Validação do código OTP

No seu servidor, valide a autenticidade do código digitado pelo usuário fazendo a seguinte chamada para nossa API.

Na validação, tanto o Header e Body da requisição, devem ser preenchidos com os dados recebidos no seu servidor.

Uma vez autenticado com sucesso, prossiga com a venda, caso contrário, reinicie o processo para pedir novamente que o usuário digite o token.

Informações Adicionais

  1. Um transactionToken pode ser utilizado em apenas uma autenticação de token;
  2. O transactionToken é expirado após 30 minutos do momento de sua criação e não é possível mais realizar autenticações com ele, sendo necessário recriá-lo via nossa API Javascript;

Autenticação da API

Nessa chamada, assim como na chamada de análise da venda, o SafeGuard espera um header HTTP chamado de Authorization que possui os seguintes dados:


# O Header segue este seguinte formato:

Authorization: "SAFEGUARD privateKey~transactionToken:userIdentification"

# No caso, por exemplo, em que:

# - privateKey: a51b4f34
# - transactionToken: 18cebab0
# - userIdentification: usuario123

# O Header deve ser enviado da seguinte maneira:

Authorization: "SAFEGUARD a51b4f34~18cebab0:usuario123"

Envio dos dados

A chamada para o SafeGuard deve ser feita atráves de um HTTP POST, com um JSON o formato pré-definido no corpo da requisição.

HTTP Request

POST https://www.safeguard.vc/api/risk/v3/validate_otp

HTTP Body

O corpo da mensagem que deve ser enviado ao SafeGuard segue o seguinte formato:

{
  "authentication_token_number": "123456"
}

Retorno da API

HTTP Status 200 - OK

A autenticação foi validada com sucesso pelo SafeGuard

HTTP Status 401 - Unauthorized

Significa que o Header de autenticação estava inválido.

HTTP Status 422 - Unprocessable Entity

O usuário digitou o token de maneira incorreta ou o token de transação está inválido

Demais HTTP Status Codes

Os demais status codes não são erros esperados pela API, e devem ser comunicados pelo nosso canal de suporte para maiores investigações e esclarecimentos.

Consulta de BIN

Fornecemos informações referentes ao BIN do cartão de crédito para que você realize verificações sobre a consistência dos dados apresentados no momento da venda.

No envio dos dados, você precisará configurar um HEADER de autenticação e construir o corpo da análise com o número do BIN no formato esperado pela nossa API (vide explicações abaixo).

Autenticação da API

O SafeGuard espera um header HTTP chamado de Authorization da seguinte forma:


# O Header segue este seguinte formato:

Authorization: "privateKey"

# No caso, por exemplo, em que:

# - privateKey: a51b4f34

# O Header deve ser enviado da seguinte maneira:

Authorization: "a51b4f34"

Envio dos dados

A chamada para o SafeGuard deve ser feita atráves de um HTTP POST, com um JSON o formato pré-definido no corpo da requisição.

HTTP Request

POST https://www.safeguard.vc/api/risk/v3/bin_search

HTTP Body

O corpo da mensagem que deve ser enviado ao SafeGuard segue o seguinte formato:

{
  "number": "445566"
}

Quando o HTTP status do retorno da análise de risco for igual à 200, significa que tudo ocorreu como esperado e a análise foi feita com sucesso.

Nesse caso, é retornado um JSON com as seguintes informações:

{
  "bank_name": "NU PAGAMENTOS SA",
  "brand_name": "MASTERCARD",
  "level_name": "PLATINUM",
  "type_name": "CREDIT",
  "country_code": "BR", /* ISO 3166-1 alfa-2 */
  "country_name": "BRAZIL",
  "info": "nubank.com.br"
}

HTTP Status 401 - Unauthorized

Quando o HTTP status do retorno da análise de risco for igual à 401, significa que o Header de autenticação estava inválido.

Nesse caso, o JSON da resposta será vazio.

HTTP Status 422 - Unprocessable Entity

Quando o HTTP status do retorno da análise de risco for igual à 422, significa que algum dado enviado para a análise não está no formato esperado pela API.

Demais HTTP Status Codes

Os demais status codes não são erros esperados pela API, e devem ser comunicados pelo nosso canal de suporte para maiores investigações e esclarecimentos.