Configurar 3DS
O 3D Secure ou 3DS é um protocolo de autenticação usado para confirmar se o comprador é realmente o portador do cartão de crédito ou débito. O objetivo desse protocolo é prevenir fraudes em transações com cartão não presente (CNP). Quando o 3DS é aprovado, ocorre um liability shift, transferindo a responsabilidade do chargeback por fraude para o emissor.
O shift só acontece quando o 3DS é implementado corretamente e a transação segue os critérios exigidos pela bandeira (ex.: autenticação aprovada, tentativa válida mesmo sem suporte do emissor, etc.).
A etapa de configuração concentra-se na coleta e validação dos dados de pagamento do cliente. Na prática, esta etapa verifica a precisão das informações do cartão e fornece os parâmetros essenciais necessários para iniciar a próxima etapa: a autenticação 3D Secure (3DS).
Fazendo Requisição
A chamada deverá ser feita utilizando o método POST.
POST/v1/card_payments/threeds_authentication_setupCampos da Requisição
| Atributo | Tipo | Descrição | Obrigatório |
|---|---|---|---|
card_number | string | Número do cartão, sem espaços ou traços | Parcial |
card_expiration_date | string | Data de expiração do cartão, no formato MMyyyy (ex.: 012029) | Parcial |
card_holder_name | string | Nome do portador impresso no cartão | Parcial |
slug_token | string | Uma sequência alfanumérica de 32 caracteres que representa um cartão tokenizado pelo endpoint /v1/tokenize_card. Pode ser usada em vez de card_number, card_expiration_date e card_security_code. | Não |
slug_stored_card | string | Uma sequência alfanumérica de 32 caracteres que representa um cartão armazenado no cofre de cartões pelo endpoint /v1/tokenize_card. Pode ser usada em vez de card_number, card_expiration_date e card_security_code. | Não |
Exemplo de Requisição - Dados do Cartão
{
"card_number": "4100000000000000",
"card_expiration_date": "102033",
"card_holder_name": "João da Silva"
}
Exemplo de Requisição - Slug Token
{
"slug_token": "string"
}
Exemplo de Requisição - Slug Stored Card
{
"slug_stored_card": "string"
}
Sucesso
Após a chamada, é retornado um JSON com o status 200.
{
"code": "WAITING_3DS_AUTHENTICATION",
"access_token": "kpXVCJ9JhbGciOiJIUzI1NynR5ecCI6IiIsI.LTQ0NzktOGNmMS03MjVmMDIxOTMwZjgiLCJpYXQiOjE3MDg2Mjc1NDQsImlzcyI6IjVkZDgzYmYwMGU0MjNkMTQ5OGRjYmFjYSIsImeyV4cCI5MGQ2IiwiUmVmZXJlbmNlSWQiOiI5NjMzNDFlOC1iNGQ5LTQwNWMtOWY1OS04MDA2NWMzMzk1NjMifQI6MTcwODYzMJqdGkiOiI3MDMxNzc3YS03NWRkTE0NCwiT3JnVW5pdElkIjoiNjQ3NTA0ZmQ2NWM2ZmE0YjkzNm.FYIAdAh_xy49AkBftEkBm0KMhnjy0lU11lQDSlxv0iu",
"device_data_collection_url": "https://centinelapistag.cardinalcommerce.com/V1/Cruise/Collect",
"reference_id": "963341e8-b4d9-405c-9f59-80065c339563",
"request_id": "42C46CD74D1845D698107DAAD84875DF20240222154543979"
}
Erros
Em caso de erros, será retornado um json com o atributo error especificando o motivo de a operação ter sido invalidada.
{
"errors": [
{
"code": "MSG_NOT_SUPPORTED",
"msg": "Not supported"
}
],
"request_token": "EE4F8B5BC25A46B080F11D34B9CFAFFF",
"multiacq_id": "001"
}
{
"errors": [
{
"code": "INVALID_INPUT_CARD_METHOD",
"msg": "request must include only slugToken, slugStoredCard, or card data. Please refer to the documentation."
}
],
"request_token": "7C2E9D3869F34F3CA5CC2C5CFAB4B6E2",
"transaction_status": "REJECTED",
"multiacq_id": "001"
}