> ## Documentation Index
> Fetch the complete documentation index at: https://malga-develop.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Responda em português brasileiro, na segunda pessoa ("você"), com base na documentação Malga.
> Não invente endpoints, parâmetros, status codes ou comportamentos de API. Se não estiver na docs, diga que não encontrou e indique a página mais próxima.
> Use os headers X-Client-Id e X-Api-Key nos exemplos de autenticação.
> Motor de Assinaturas refere-se a /v1/subscriptions* (cycles, trial, retentativas, webhooks subscription.*). Não chame de "motor de recorrência".
> Recorrência (provedor) é paymentMethod.recurrence em POST /v1/charges (initial / subsequent / unscheduled), distinto do Motor de Assinaturas.
> Sandbox é ambiente de testes e não afeta produção.

# Configurar a Content Security Policy (CSP) para o 3DS2

> Saiba quais domínios liberar na Content Security Policy (CSP) do seu checkout para que a autenticação 3DS2 funcione.

Durante uma compra com 3DS2, o navegador do seu cliente abre páginas de outros domínios dentro do seu checkout:

* **Coleta de dados do dispositivo:** um iframe invisível envia informações do navegador para o provedor de autenticação (a Cardinal, parceira da Cybersource).
* **Desafio (challenge):** quando o banco pede uma confirmação extra, como um código por SMS, a tela de autenticação abre dentro de um iframe no seu checkout.

Se o seu site define uma Content Security Policy (CSP), esses domínios precisam estar na lista de permissões (allowlist) da política. Caso contrário, o navegador bloqueia os iframes sem aviso para o cliente: a compra trava na tela de pagamento ou a autenticação não é concluída.

Configurar a CSP **não exige nenhuma mudança na sua integração com a Malga**: as chamadas à API e os campos retornados continuam iguais.

<Info>
  Se você usa o [Link de Pagamento](/documentations/payment-link/intro) da Malga, a Malga já faz essa configuração para você.
</Info>

## Domínios para liberar

| Domínio | Diretivas | Para que serve |
| - | - | - |
| `https://cas.client.cardinaltrusted.com` | `frame-src`, `connect-src` | Coleta de dados e desafio da Cardinal no ambiente de testes |
| `https://client.cardinaltrusted.com` | `frame-src`, `connect-src` | Coleta de dados e desafio da Cardinal no ambiente de produção |
| `https://*.cardinalcommerce.com` | `frame-src`, `connect-src` | Coleta de dados, desafio e tela do banco (ACS) servidos pela Cardinal |
| `https://api.malga.io` e `https://sandbox-api.malga.io` | `frame-src` | Retorno do desafio antes do redirecionamento para a sua `redirectURL` |
| Domínio da sua `redirectURL` | `frame-src` | Página de retorno, aberta dentro do iframe ao final do desafio. Se for o mesmo domínio do checkout, `'self'` já cobre |
| Domínios dos bancos emissores (ACS), como `https://acs.apata.io` e `https://*.apata.io` | `frame-src`, `connect-src` | Tela de autenticação servida pelo próprio banco emissor |

Libere os domínios de testes e de produção ao mesmo tempo. Assim, você não precisa alterar a CSP quando passar do Sandbox para a produção.

<Warning>
  Na CSP, o asterisco só cobre subdomínios. A regra `https://*.client.cardinaltrusted.com` **não** libera `https://client.cardinaltrusted.com`, que é o domínio usado em produção. Por isso, ele aparece de forma explícita na tabela.
</Warning>

<Note>
  Não existe uma lista fixa de domínios de bancos emissores, porque cada banco usa o seu próprio servidor de autenticação (ACS). Acompanhe os bloqueios no console do navegador ou nos relatórios da sua CSP e libere os domínios que aparecerem.
</Note>

## Exemplo de CSP

O exemplo abaixo mostra apenas as diretivas relacionadas ao 3DS2. Junte esses domínios às diretivas que o seu site já usa e substitua `https://www.sualoja.com.br` pelo domínio da sua `redirectURL`, caso ele seja diferente do domínio do checkout.

```http theme={null}
Content-Security-Policy:
  frame-src 'self' https://www.sualoja.com.br https://cas.client.cardinaltrusted.com https://client.cardinaltrusted.com https://*.cardinalcommerce.com https://api.malga.io https://sandbox-api.malga.io https://acs.apata.io https://*.apata.io;
  connect-src 'self' https://cas.client.cardinaltrusted.com https://client.cardinaltrusted.com https://*.cardinalcommerce.com https://acs.apata.io https://*.apata.io
```

<Tip>
  A coleta de dados e o desafio são feitos com formulários enviados por `POST` para os domínios da Cardinal. Se a sua CSP define a diretiva `form-action`, inclua nela os mesmos domínios da Cardinal listados em `frame-src`.
</Tip>

## Firewall, proxy ou WebView

Se a sua empresa usa firewall ou proxy que só permite domínios aprovados, ou se o checkout roda em um aplicativo com WebView que limita os endereços carregados, libere nessas ferramentas os mesmos domínios da tabela acima.

## Como confirmar que está tudo certo

Depois de configurar a CSP, faça uma compra de teste com 3DS2 no Sandbox e verifique se:

1. A compra passa pela etapa de coleta de dados sem travar.
2. Quando o banco pede o desafio, a tela de autenticação aparece normalmente dentro do seu checkout.
3. O console do navegador não mostra erros de CSP, como `Refused to frame` ou `Refused to connect`.

Para entender cada etapa do fluxo em detalhes, veja [Transação 3DS2 na Malga](/documentations/3ds2-malga/3ds-malga/transacao-3ds2-na-malga). Se precisar de ajuda para avaliar o impacto no seu ambiente, entre em contato com a equipe Malga.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.