Manual de Integração - Velocity

Redirecionando para https://docs.cielo.com.br/risco/docs/velocity ...

As documentações do Velocity estão em um novo portal

Novo portal de desenvolvedores e-commerce Braspag e Cielo

Acesse o novo portal de desenvolvedores E-commerce docs.cielo.com.br.

Atenção: O conteúdo desta página está sendo descontinuado e não receberá atualizações a partir de 14/08/2024. Visite a nova documentação em docs.cielo.br.


Visão Geral

Para estabelecimentos comerciais que atuam no mercado de comércio eletrônico e eventualmente recebem transações fraudulentas, o Velocity é um produto que identificará os comportamentos suspeitos de fraude. O Velocity é um aliado na avaliação de comportamentos suspeitos de compra, pois os cálculos serão baseados em variáveis.

A API é baseada em arquitetura REST, que trocam dados em formato JSON seguindo fluxos de autorização definidos pelo protocolo OAuth 2, onde todos os padrões são amplamente utilizados pelo mercado e suportado pelas comunidades técnicas.

Para saber mais sobre OAuth 2, consulte https://oauth.net/2/

Objetivo

Velocity

Documentação

O objetivo desta documentação é orientar sobre como integrar com a API Velocity Braspag, descrevendo as operações disponíveis com exemplos de requisições e respostas.

Para executar uma operação, combine o endpoint base do ambiente com o endpoint da operação desejada e envie utilizando o VERBO HTTP conforme descrito na operação.

Funcionamento

Análise de regras

O Velocity realiza análises em cima de regras habilitadas para os tipos de variáveis abaixo:

Variáveis
Número do cartão de crédito
12 primeiros dígitos do cartão de crédito
Nome do portador do cartão de crédito
Documento do comprador
E-mail do comprador
Endereço de IP do comprador
CEP do endereço de entrega
CEP do endereço de cobrança
Número do pedido

Confira mais informações sobre Como gerenciar as regras do Velocity Check

A análise ocorre em cima de cada variável (V), contando quantas vezes (H) a mesma passou na Braspag para a sua loja dentro de um determinado período (P).

Com estes 3 elementos, teríamos a seguinte regra, Máximo de 5 Hits de Número do Cartão em 12 Hora(s), onde:

Com isso, o Velocity ao receber a 6ª transação com o mesmo número de cartão (V) das outras 5 anteriores, a regra acima ao ser executada e detectar que a quantidade (H) excedeu as 5 permitidas no período (P) entre a data da primeira transação e a data da 6ª recebida, esta terá o status de rejeitada, o número do cartão poderá ir quarentena e a resposta terá o conteúdo de que a transação foi rejeitada devido a regra.

Quarentena

Ao cadastrar uma regra é possível especificar quanto tempo o valor de uma determinada variável irá ser levado em consideração nas próximas análises, ou seja, se o cliente quiser identificar a quantidade de vezes que o mesmo número de cartão se repetiu para um período de 12 horas dentro de um intervalo de 2 dias, não será necessário o Velocity realizar esta contagem retroativa agrupando por período. Neste cenário por exemplo, a aplicação teria que realizar a contagem para os seguintes intervalos:

Com a quarentena configurada, a aplicação não irá realizar essa contagem retroativa por período, pois na análise é verificado se existe o valor da variável número de cartão em quarentena. Por exemplo: para a regra mostrada acima (Máximo de 5 Hits de Número do Cartão em 12 Hora(s)), o tempo de expiração se definido em 2 dias, a regra será analisada apenas para o período configurado, ou seja, 12 horas para trás e irá verificar durante 2 dias para trás se número do cartão se encontra em quarentena.

Uma transação analisada, não rejeitada pela regra, mas rejeitada pela quarentena, terá o retorno informando que foi rejeitada pela quarentena.

Lista Negativa

Uma transação a ser analisada, e o número do cartão enviado para análise estiver na lista negativa, a transação será rejeitada, independente de existir regra cadastrada para este tipo de variável ou não e as demais regras para outros tipos de variáveis serão ignoradas.

Uma transação analisada e rejeitada pela lista negativa terá o retorno informando que foi rejeitada pela lista negativa.

Lista Positiva

Uma transação a ser analisada, e o número do cartão enviado para análise estiver na lista positiva, a transação será aceita, independente de existir regra cadastrada para este tipo de variável ou não e as demais regras para outros tipos de variáveis serão ignoradas.

Uma transação analisada e aceita pela lista positiva terá o retorno informando que foi aceita pela lista positiva.

Hosts

API BraspagAuth

Ambiente URL
Sandbox https://authsandbox.braspag.com.br/
Produção https://auth.braspag.com.br/

API Velocity Braspag

Ambiente URL
Sandbox https://velocitysandbox.braspag.com.br/
Produção https://velocity.braspag.com.br/

Autenticação

Tokens de Acesso

A API Velocity Braspag utiliza o protocolo padrão de mercado OAuth 2.0 para autorização de acesso a seus recursos específicos por ambientes, que são: Sandbox e Produção.

Esta sessão descreve o fluxo necessário para que aplicações cliente obtenham tokens de acesso válidos para uso na API.

Obtenção do token de acesso

O token de acesso é obtido através do fluxo oauth client_credentials. O diagrama abaixo, ilustra, em ordem cronológica, a comunicação que se dá entre a Aplicação Cliente, a API BraspagAuth e a API Velocity Braspag.

  1. A Aplicação Cliente, informa à API BraspagAuth sua credencial.

  2. O BraspagAuth valida a credencial recebida. Se for válida, retorna o token de acesso para a Aplicação Cliente.

  3. A Aplicação Cliente informa o token de acesso no cabeçalho das requisições HTTP feitas à API Velocity Braspag.

  4. Se o token de acesso for válido, a requisição é processada e os dados são retornados para a Aplicação Cliente.

Solicite uma credencial abrindo um ticket através da nossa ferramenta de suporte, enviando o(s) IP(s) de saída dos seus servidores de homologação e produção.
Suporte Braspag

Como obter o token

Uma vez em posse da credencial, será necessário “codificá-la” em Base64, utilizando a convenção client_id:client_secret, e enviar o resultado no cabeçalho através do campo Authorization.

Exemplo:

Request

Parâmetros no cabeçalho (Header)

Key Value
Content-Type application/x-www-form-urlencoded
Authorization Basic YnJhc3BhZ3Rlc3RlczoxcTJ3M2U0cg==

Parâmetros no corpo (Body)

Key Value
scope VelocityApp
grant_type client_credentials

Response

{
  "access_token": "faSYkjfiod8ddJxFTU3vti_ ... _xD0i0jqcw",
  "token_type": "bearer",
  "expires_in": 599
}

Parâmetros no corpo (Body)

Parâmetro Descrição
access_token O token de acesso solicitado. O aplicativo pode usar esse token para se autenticar no recurso protegido, no caso a API Velocity Braspag
token_type Indica o valor do tipo de token
expires_in Expiração do o token de acesso, em segundos
O token quando expirar, é necessário obter um novo

Analisando uma transação

A Braspag, ao receber os dados do pedido, irá analisá-lo de acordo com o descrito no tópico Funcionamento.

Importante

Requisição

{
  "Transaction": {
    "OrderId": "123456789AB",
    "Date": "2018-02-02 13:51:56.854",
    "Amount": 96385
  },
  "Card": {
    "Holder": "Joao C Silva",
    "Number": "4444555566667777",
    "Expiration": "12/2023",
    "Brand": "visa"
  },
  "Customer": {
    "Name": "Joao Couves da Silva",
    "Identity": "12345678910",
    "IpAddress": "127.0.0.1",
    "BirthDate": "1983-10-01",
    "Email": "joaocouvessilva@email.com",
    "Phones": [ 
    {
      "Type": "Phone",
      "DDI": "55",
      "DDD": "21",
      "Number": "21114700",
      "Extension": "4720"
    },
    {
      "Type": "Workphone",
      "DDI": "55",
      "DDD": "21",
      "Number": "25899600",
      "Extension": "9612" 
    },
    {
      "Type": "Cellphone",
      "DDI": "55",
      "DDD": "21",
      "Number": "987654321"
    }
    ],
    "Billing": {
      "Street": "Rua do Escorrega",
      "Number": "171",
      "Complement": "Casa 71",
      "Neighborhood": "Piratininga",
      "City": "Niterói",
      "State": "RJ",
      "ZipCode": "24355-350",
      "Country": "BR"
    },
    "Shipping": {
      "Street": "Rua do Equilibra",
      "Number": "171",
      "Complement": "Casa 2",
      "Neighborhood": "Centro",
      "City": "Rio de Janeiro",
      "State": "RJ",
      "ZipCode": "24355-351",
      "Country": "BR"
    }
  }
}

Parâmetros no cabeçalho (Header)

Key Value
Content-Type application/json
Authorization Bearer {access_token}
MerchantId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
RequestId nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn

Parâmetros no corpo (Body)

Parâmetro Descrição Tipo Obrigatório Tamanho
Transaction.OrderId Número do pedido da loja string sim 100
Transaction.Date Data do pedido
Ex.: 2018-02-02 13:51:56.854
Obs.: Caso não seja informada, uma data será gerada pela Braspag
datetime não -
Transaction.Amount Valor total do pedido em centavos
Ex: 123456 = r$ 1.234,56
long sim 100
Card.Holder Nome do cartão de crédito string sim 100
Card.Number Número do cartão de crédito string sim 19
Card.Expiration Data de expiração do cartão de crédito
Ex.: 01/2023
string sim 7
Card.Brand Bandeira do cartão de crédito string sim 100
Customer.Name Nome do comprador string sim 100
Customer.Identity Número do documento de identificação do comprador
Tabela 1 - Customer.Identity
string sim 100
Customer.IpAddress Endereço de IP do comprador. Suporte a IPv4 e IPv6 string sim 45
Customer.BirthDate Data de nascimento do comprador
Ex.: 1983-10-01
string não 10
Customer.Email E-mail do comprador string sim 100
Customer.Phones[n].Type Tipo do telefone do comprador
Tabela 2 - Customer.Phones{n}.Type
enum não -
Customer.Phones[n].DDI Código DDI do país. Mais informações em Códigos DDI string não 10
Customer.Phones[n].DDD Código DDD do estado. Mais informações em Códigos DDD int não -
Customer.Phones[n].Number Número do telefone string não 19
Customer.Phones[n].Extension Número do ramal int não -
Customer.Billing.Street Logradouro do endereço de cobrança string não 100
Customer.Billing.Number Número do endereço de cobrança string não 15
Customer.Billing.Complement Complemento do endereço de cobrança string não 30
Customer.Billing.Neighborhood Bairro do endereço de cobrança string não 100
Customer.Billing.City Cidade do endereço de cobrança string não 100
Customer.Billing.State Estado do endereço de cobrança string não 2
Customer.Billing.ZipCode Código postal do endereço de cobrança string não 9
Customer.Billing.Country País do endereço de cobrança. Mais informações em ISO 2-Digit Alpha Country Code string não 2
Customer.Shipping.Street Logradouro do endereço de entrega string não 100
Customer.Shipping.Number Número do endereço de entrega string não 15
Customer.Shipping.Complement Complemento do endereço de entrega string não 30
Customer.Shipping.Neighborhood Bairro do endereço de entrega string não 100
Customer.Shipping.City Cidade do endereço de entrega string não 100
Customer.Shipping.State Estado do endereço de entrega string não 2
Customer.Shipping.ZipCode Código postal do endereço de entrega string não 9
Customer.Shipping.Country País do endereço de entrega. Mais informações em ISO 2-Digit Alpha Country Code string não 2

Resposta

{
    "AnalysisResult": {
        "Score": 100,
        "Status": "Reject",
        "AcceptByWhiteList": false,
        "RejectByBlackList": false
    },
    "Links": [
        {
            "Method": "GET",
            "Rel": "self",
            "Href": "https://velocitysandbox.braspag.com.br/Analysis/v2/80832037-97b4-4952-8ae7-c37be13cce7a"
        }
    ],
    "Transaction": {
        "Id": "b88a8b60-9e7d-4064-8413-059e0a896aef",
        "Date": "2018-02-02T13:51:56.854"
    }
}

Parâmetros no cabeçalho (Header)

Key Value
Content-Type application/json
Status 201 Created

Parâmetros no corpo (Body)

Parâmetro Descrição Tipo
AnalysisResult.Score Score calculado para o pedido
Na atual versão será retornado 0 (zero) para status igual a Accept e 100 (cem) para status igual a Reject
int
AnalysisResult.Status Status da transação no Velocity Braspag
Tabela 3 - AnalysisResult.Status
int
AnalysisResult.RejectReasons[n].RuleId Id da regra disparada a qual a transação foi rejeitada int
AnalysisResult.AcceptByWhiteList Indica se a transação foi automaticamente aceita por algum valor de alguma lista positiva referente a alguma variável bool
AnalysisResult.RejectByBlackList Indica se a transação foi automaticamente rejeitada por algum valor de alguma lista negativa referente a alguma variável bool
Transaction.Id Id da transação no Velocity Braspag guid
Transaction.Date Data do pedido
Ex.: 2018-02-02 13:51:56.854
datetime

Tabelas

Tabela 1 - Customer.Identity

Valor Formato
CPF 12345678911
CNPJ 12345678000199

Tabela 2 - Customer.Phones[n].Type

Valor Descrição
Phone Telefone residencial
Workphone Telefone comercial
Cellphone Celular

Tabela 3 - AnalysisResult.Status

Valor Descrição
Accept Aceita
Reject Rejeitada