> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autorizou.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# 3D Secure (3DS)

> Autentique pagamentos com cartão usando 3D Secure para reduzir fraude e chargebacks

O **3D Secure (3DS)** é um protocolo de autenticação que transfere a responsabilidade
(liability shift) de pagamentos fraudulentos do estabelecimento para o emissor do
cartão. Na Autorizou, o 3DS é controlado pelo objeto `authentication_data` enviado
ao [Criar Pedido](/api-reference/charges/orders/create-order).

## Quando usar

<CardGroup cols={2}>
  <Card title="Reduzir chargebacks" icon="shield-check">
    Pagamentos autenticados com sucesso transferem a responsabilidade de fraude
    para o emissor.
  </Card>

  <Card title="Cartões de maior risco" icon="triangle-exclamation">
    Tickets altos, primeiro pagamento de um cliente ou perfis com histórico de
    disputa.
  </Card>
</CardGroup>

## Como funciona

```mermaid theme={null}
sequenceDiagram
    participant C as Cliente (browser)
    participant L as Sua aplicação
    participant Z as Autorizou (Zeus)
    participant I as Emissor / ACS

    C->>L: Inicia checkout
    L->>Z: POST /charges/orders (authentication_data)
    Z->>I: Solicita autenticação 3DS
    alt Frictionless
        I-->>Z: Autenticado sem desafio
    else Challenge
        I-->>C: Exibe desafio (OTP / app do banco)
        C-->>I: Conclui desafio
    end
    Z-->>L: Resultado da autenticação + pagamento
```

## Enviando os dados de autenticação

O bloco `authentication_data` aceita o modo de tentativa e as informações do
navegador do cliente:

<ParamField body="authentication_data.attempt_authentication" type="string">
  Estratégia de autenticação. Valores possíveis: `always`, `never` (e variações
  conforme o enum `AttemptAuthentication`).
</ParamField>

<ParamField body="authentication_data.browser_info" type="object">
  Informações do navegador, obrigatórias quando `attempt_authentication = always`.
  Inclui `accept_header`, `color_depth`, `java_enabled`, `language`,
  `screen_height`, `screen_width`, `timezone_offset` e `user_agent`.
</ParamField>

<ParamField body="authentication_data.origin" type="string">
  Origem (URL) da requisição do checkout. Obrigatório quando `attempt_authentication = always`.
</ParamField>

<ParamField body="authentication_data.ip_address" type="string">
  IP do cliente. Obrigatório quando `attempt_authentication = always`.
</ParamField>

### Resultado externo (3DS já autenticado)

Caso você já possua o resultado de uma autenticação 3DS (fluxo externo), envie os
campos do resultado para que a Autorizou apenas autorize o pagamento:

<ParamField body="authentication_data.three_ds_version" type="string">Versão do protocolo (ex.: `2.2.0`).</ParamField>
<ParamField body="authentication_data.eci" type="string">Electronic Commerce Indicator.</ParamField>
<ParamField body="authentication_data.authentication_value" type="string">CAVV/AAV retornado pelo ACS.</ParamField>
<ParamField body="authentication_data.transaction_id" type="string">DS Transaction ID.</ParamField>

## Exemplo

```json theme={null}
{
  "payment": {
    "amount": 25000,
    "payment_method": "credit_card",
    "installments": 1,
    "credit_card": { "id": 42, "statement_descriptor": "MINHALOJA", "capture": true, "processing_model": "..." }
  },
  "authentication_data": {
    "attempt_authentication": "always",
    "origin": "https://minhaloja.com.br",
    "ip_address": "201.10.20.30",
    "browser_info": {
      "accept_header": "text/html",
      "color_depth": "24",
      "java_enabled": false,
      "language": "pt-BR",
      "screen_height": "900",
      "screen_width": "1440",
      "timezone_offset": "180",
      "user_agent": "Mozilla/5.0 ..."
    }
  }
}
```

<Note>
  Os campos de `browser_info` são coletados no navegador do cliente no momento do
  checkout. Sem eles, o desafio (challenge) não pode ser apresentado.
</Note>
