VenoPaymentsDocs
llm.txt
Dashboard
Cartão

veno.js — Tokenização + 3DS

Para checkout transparente com cartão no navegador. O veno.js tokeniza o cartão, roda o 3DS no browser e devolve { token, three_ds } — padronizado, independente do adquirente. O PAN não passa pelo seu servidor.

1. Obtenha a publishable key

A pk_veno_ identifica a conta no browser.

Requisição
curl https://beta.venopayments.com/api/v1/publishable-key \
  -H "Authorization: Bearer veno_live_..."
Resposta · 200
{ "publishable_key": "pk_veno_..." }

2. Tokenize no browser

Browser · JavaScript
<script src="https://beta.venopayments.com/veno.js"></script>

const veno = Veno.create({
  apiBase: "https://beta.venopayments.com",
  publishableKey: "pk_veno_...",
});

const { token, three_ds } = await veno.authenticate({
  card: {
    number, cvv, exp_month, exp_year,
    holder_name, holder_document,
    billing_address: {
      line_1: "123, Rua Exemplo, Centro",  // numero, rua, bairro
      line_2: "Apto 45",                   // obrigatorio
      zip_code, city, state, country,
    },
  },
  customer: {
    name, email, document,
    phones: { mobile_phone: { country_code, area_code, number } },
  },
  amount,
  installments,
  containers: { method: elMethodDiv, challenge: elChallengeDiv },
});

// envie { token, three_ds } para o seu backend

3. Cobre no backend

Envie { token, three_ds } para o seu servidor e crie a cobrança em Criar cobrança usando a secret key. Ambos são necessários para capturar (3DS / liability shift).

A pk_veno_ é pública: só inicia a sessão 3DS, nunca cobra nem lê dados. line_1 do billing_address precisa de 3 partes separadas por vírgula (número, rua, bairro) e line_2 é obrigatório.

Adquirentes com 3DS por redirect

Nem toda adquirente resolve o 3DS por SDK. O campo flow da resposta de /v1/3ds/config (e de /v1/3ds/session) diz qual caminho seguir: "sdk" resolve o challenge no browser, e "redirect" não abre sessão nenhuma — nesse caso a cobrança volta com requires_action: true e three_ds.redirect_url, e você leva o portador até essa URL. Nesse fluxo o veno.authenticate() devolve three_ds: null e flow: "redirect" — mande só o token pro seu backend. O desfecho chega pelo webhook ou pela consulta da cobrança.