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.
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/
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.
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.
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.
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.
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.
Ambiente | URL |
---|---|
Sandbox |
https://authsandbox.braspag.com.br/ |
Produção |
https://auth.braspag.com.br/ |
Ambiente | URL |
---|---|
Sandbox |
https://velocitysandbox.braspag.com.br/ |
Produção |
https://velocity.braspag.com.br/ |
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.
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.
A Aplicação Cliente, informa à API BraspagAuth sua credencial.
O BraspagAuth valida a credencial recebida. Se for válida, retorna o token de acesso para a Aplicação Cliente.
A Aplicação Cliente informa o token de acesso no cabeçalho das requisições HTTP feitas à API Velocity Braspag.
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
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:
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 |
{
"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 |
A Braspag, ao receber os dados do pedido, irá analisá-lo de acordo com o descrito no tópico Funcionamento.
Importante
Os campos são opcionais e as regras serão disparadas somente se o valor no campo correspondente a regra for enviado, ou seja, se existir uma regra relacionada ao campo documento do comprador e o campo Customer.Identity
não for enviado, esta regra não será disparada na análise.
Os valores dos campos devem ser enviados sempre no mesmo formato, por exemplo: CEP do endereço de cobrança ou entrega, enviar SEMPRE uma das opções entre valor com formatação (xxxxx-xxx) e sem formatação (xxxxxxxx).
{
"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 |
{
"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 |
Valor | Formato |
---|---|
CPF | 12345678911 |
CNPJ | 12345678000199 |
Valor | Descrição |
---|---|
Phone | Telefone residencial |
Workphone | Telefone comercial |
Cellphone | Celular |
Valor | Descrição |
---|---|
Accept | Aceita |
Reject | Rejeitada |