Configurar autenticação 3DS
POST
/api/v1/bank/public/setup-authenticationEndpoint público
Este endpoint é chamado pelo A55Pay SDK a partir do navegador do pagador. Não requer Bearer token. Ele inicializa o processo de coleta de dados do dispositivo (DDC) para 3DS antes do pagamento com cartão.
Cabeçalhos da requisição
| Cabeçalho | Valor | Obrigatório |
|---|---|---|
Content-Type | application/json | Sim |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
card_bin | string | Sim | Primeiros 6-8 dígitos do número do cartão |
wallet_uuid | string (UUID) | Sim | Wallet associada à cobrança |
merchant_id | string (UUID) | Sim | Identificador do merchant |
Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
session_id | string | Identificador da sessão DDC — passe para device_info.session_id |
ddc_url | string | URL do iframe DDC do emissor |
ddc_jwt | string | Token JWT para o iframe DDC |
provider | string | Provedor 3DS que processa a autenticação |
expires_at | string | Expiração da sessão em ISO 8601 |
Códigos de status HTTP
| Status | Descrição |
|---|---|
| 200 | Configuração 3DS inicializada |
| 400 | BIN inválido ou campos obrigatórios ausentes |
| 404 | Wallet ou merchant não encontrado |
| 422 | BIN do cartão não elegível para 3DS |
| 429 | Limite de requisições excedido |
| 500 | Erro interno do servidor |
Exemplos de código
- cURL
- Python
- Node.js
curl -s -X POST https://core-manager.a55.tech/api/v1/bank/public/setup-authentication \
-H "Content-Type: application/json" \
-d '{
"card_bin": "402400",
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"merchant_id": "11111111-1111-1111-1111-111111111111"
}'
import requests
try:
response = requests.post(
"https://core-manager.a55.tech/api/v1/bank/public/setup-authentication",
json={
"card_bin": "402400",
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"merchant_id": "11111111-1111-1111-1111-111111111111",
},
headers={"Content-Type": "application/json"},
)
response.raise_for_status()
setup = response.json()
print(f"Session ID: {setup['session_id']}")
print(f"DDC URL: {setup['ddc_url']}")
except requests.exceptions.HTTPError as e:
print(f"HTTP {e.response.status_code}: {e.response.json()}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
try {
const response = await fetch(
"https://core-manager.a55.tech/api/v1/bank/public/setup-authentication",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
card_bin: "402400",
wallet_uuid: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
merchant_id: "11111111-1111-1111-1111-111111111111",
}),
}
);
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const setup = await response.json();
console.log(`Session ID: ${setup.session_id}`);
console.log(`DDC URL: ${setup.ddc_url}`);
} catch (error) {
console.error("3DS setup failed:", error.message);
}
Exemplo de resposta de erro
{
"status": "error",
"message": [
{
"code": "BIN_NOT_3DS_ELIGIBLE",
"source": "authentication",
"description": "Card BIN 999999 is not eligible for 3DS authentication"
}
]
}