3D Secure 2.0 (Novo)
Disponível apenas para a adquirente Rede Rest.
Transações autenticadas 3D Secure ou 3DS 2.0, são transações que necessitam de uma autenticação adicional para garantir maior segurança ao portador do cartão nas compras online.
A autenticação 3DS é efetuada através da validação de dados que apenas o portador do cartão e o banco possuem, como por exemplo, senha do cartão, data de nascimento, código de segurança e o token do banco.
- Obrigatório para operações com cartão de Débito
- Opcional para operações com cartão de Crédito
Alguns cartões de débito não suportam a autenticação 3DS 2.0. Para poder decidir por transação qual cartão de débito pode ou não entrar em um fluxo 3DS, entre em contato com o suporte.
REQUISIÇÃO
POST
/v1/transactions
Além das propriedades da autorização, é necessário enviar as seguintes propriedades:
PROPRIEDADE | TIPO | TAMANHO | OBRIGATÓRIO | DESCRIÇÃO |
---|---|---|---|---|
userAgent | Texto | Até 500 | Sim | Obrigatório para transações com 3DS. Identificador do browser utilizado pelo comprador no momento da compra. |
card.authenticate | Número | 1 | Não | Para débito sempre será: 1 Para crédito o default é: 3 Opções disponíveis: 1. Autorizar só transações autenticadas 2. Autorizar transações autenticadas ou não autenticadas 3. Autorizar sem autenticação |
device | ||||
device.colorDepth | Número | 2 | Sim | Campo que representa a estimativa da paleta de cores usada para a exibição de imagens, em bits por pixel. |
device.deviceType3ds | Texto | 20 | Sim | Campo que indica o tipo de dispositivo. Exemplo: BROWSER. |
device.javaEnabled | Booleano | - | Sim | Campo booleano que representa a capacidade do navegador para executar Java. O valor é aquele retornado pela propriedade navigator.javaEnabled, true ou false. |
device.language | Texto | 10 | Sim | Idioma do navegador no formato IETF BCP47, contendo entre 1 e 8 caracteres. |
device.screenHeight | Número | 6 | Sim | A altura total da tela do cliente em pixels. O valor é aquele retornado pela propriedade screen.height. |
device.screenWidth | Número | 6 | Sim | A largura total da tela do cliente em pixels. O valor é aquele retornado pela propriedade screen.width. |
device.timeZoneOffset | Número | 2 | Sim | Número de horas entre a hora local do usuário e o UTC (Horário Coordenado Universal). |
{
"referenceId": "19893211234",
"amount": "1000",
"description": "Mouse sem fio",
"userAgent": "Mozilla/5.0 ...",
"customer": {
"name": "Comprador Teste",
"document": "12345678909"
},
"payment": {
"card": {
"type": 1,
"capture": false,
"installments": 1,
"interestType": 3,
"authenticate": 3,
"softDescriptor": "Pagamento GATE2all",
"saveCard": false,
"recurrent": false,
"provider": "Cielo",
"providerVersion": "3.0",
"cardInfo": {
"number": "4539708473330561",
"expirationMonth": "04",
"expirationYear": "2026",
"cvv": "234",
"brand": "VISA",
"holderName": "HOLDER NAME"
}
}
},
"device": {
"colorDepth": 1,
"deviceType3ds": "BROWSER",
"javaEnabled": false,
"language": "pt-BR",
"screenHeight": 500,
"screenWidth": 500,
"timeZoneOffset": 3
}
}
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
URL obj = new URL("https://api.gate2all.com.br/v1/transactions");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("content-type", "application/json");
con.setRequestProperty("authenticationApi", "demo");
con.setRequestProperty("authenticationKey", "demo");
String body = "{"
+ "\"referenceId\": \"123456\","
+ "\"amount\": \"1000\","
+ "\"description\": \"Venda Teste\","
+ "\"userAgent\": \"Mozilla/5.0 ...\","
+ "\"postBackUrl\": \"http://url-notificacao\","
+ "\"customer\": {"
+ " \"name\": \"COMPRADOR TESTE\","
+ " \"document\": \"23650403811\""
+ "},"
+ " \"payment\": {"
+ " \"card\": {"
+ " \"type\": 1,"
+ " \"capture\": false,"
+ " \"installments\": 1,"
+ " \"interestType\": 3,"
+ " \"authenticate\": 3,"
+ " \"saveCard\": false,"
+ " \"recurrent\": false,"
+ " \"softDescriptor\": \"Gate2All\","
+ " \"cardInfo\": {"
+ " \"number\": \"4539708473330561\","
+ " \"expirationMonth\": \"04\","
+ " \"expirationYear\": \"2026\","
+ " \"cvv\": \"234\","
+ " \"brand\": \"VISA\","
+ " \"holderName\": \"COMPRADOR TESTE\""
+ " }"
+ " }"
+ " }"
+ "}";
con.setDoOutput(true);
DataOutputStream dos = new DataOutputStream(con.getOutputStream());
dos.writeBytes(body);
dos.flush();
dos.close();
Scanner scanner = new Scanner(new BufferedReader(new InputStreamReader(con.getInputStream())));
String response = scanner.nextLine();
scanner.close();
System.out.println(response);
RESPOSTA
Além das propriedades da transação, será retornado a propriedade redirectUrl, para a qual deve ser redirecionado o cliente.
PROPRIEDADE | TIPO | TAMANHO | DESCRIÇÃO |
---|---|---|---|
redirectUrl | Texto | Até 500 | Url de autenticação retornada pelo sistema 3DS 2.0. |
A transação ficará com status TRANSACAO INICIADA até que receba o retorno da autenticação do 3DS 2.0.
{
"transactionId": "92d50ba4-5d93-4ee5-90e8-9884b250310a",
"referenceId": "1463697571584",
"description": "TV LG 42",
"amount": "1000",
"status": 5,
"userAgent": "Mozilla/5.0 ...",
"dtTransaction": "2020-12-05T12:04:20",
"payment": {
"card": {
"type": 1,
"softDescriptor": "Gate2All",
"interestType": 3,
"installments": 1,
"capture": false,
"authenticate": 3,
"saveCard": false,
"recurrent": false,
"provider": "CIELO",
"providerVersion": "3.0",
"authenticationECI": 7,
"codAuthorization": "123456",
"providerReference": "1006993069000834928A",
"providerCode": "00",
"providerMessage": "Transacao autorizada com sucesso",
"cardInfo": {
"number": "453970******0561",
"expirationMonth": "04",
"expirationYear": "2026",
"cvv": "***",
"brand": "VISA",
"holderName": "HOLDER NAME"
}
}
},
"customer": {
"name": "HOLDER NAME",
"document": "12345678909"
}
"redirectUrl": "https://api.userede.com.br/Redirect/auth?token=qNRl..."
}
Transação autorizada e não capturada
Falha
Updated about 1 year ago