Worldfy PaymentsWorldfy Payments
SuporteDashboard
GuiaAPI Reference
SuporteDashboard

Começando

IntroduçãoAutenticaçãoErrosPaginação e Filtros
Cobranças
Visão GeralMétodos de PagamentoCaptura e Estorno
Financeiro
RecebíveisAntecipaçõesCarteiras e ExtratosSaques
Configuração
Chaves de APIRecebedores
SDK de Segurança
Visão geralTokenizaçãoAutenticação 3DSAnálise de fraudeFluxo simplificadoFluxo completoErrosProdução e segurança
Webhooks
Visão GeralConfiguraçãoRetentativas
Eventos
Eventos de CobrançasEventos de Saques

Tokenização

Substitua dados sensíveis do cartão por um token seguro antes de enviar ao seu backend.

Análise de fraude

Colete o fingerprint do dispositivo via ThreatMetrix para alimentar a análise antifraude CyberSource.

SDK de Segurança

Autenticação 3DS

Autentique o portador do cartão junto ao emissor usando o protocolo 3D Secure 2.0 (EMV 3DS).

O que é 3D Secure

O 3D Secure (3DS) é um protocolo de autenticação que verifica a identidade do portador do cartão junto ao banco emissor durante uma transação online. Ele oferece:

  • Liability shift — a responsabilidade por chargebacks é transferida para o emissor quando a autenticação é bem-sucedida
  • Redução de fraudes — adiciona uma camada de verificação biométrica, SMS ou app bancário
  • Conformidade regulatória — atende requisitos de Strong Customer Authentication (SCA)

O SDK integra o 3DS 2.0 via BP.Mpi (Braspag MPI), que suporta fluxos frictionless (sem interação do usuário) e challenge (com interação).

Fluxo de autenticação

alt [Frictionless (sem interação)] [Challenge (com interação)] authenticate(dados) Coleta info do navegador + IP POST /3ds/sessions Solicita token de autenticação access_token + script_url Sessão criada (status: pending) Carrega script BP.Mpi Envia dados do cartão (client-side) Solicita autenticação Autenticado onSuccess(CAVV, ECI, XID) Exige challenge Exibe modal do emissor Usuário completa verificação Resultado onSuccess/onFailure POST /3ds/sessions/{id}/fingerprinting Resultado final ThreeDSResult Navegador Worldfy SDK Worldfy API Braspag MPI Banco Emissor

Status possíveis

StatusDescriçãoLiability shift
authenticatedPortador autenticado com sucesso. CAVV e ECI disponíveis.Sim
unenrolledCartão ou emissor não participam do programa 3DS.Não
failedAutenticação falhou (portador não conseguiu se autenticar).Não
errorErro técnico durante o processo.Não
cancelledTimeout ou cancelamento pelo usuário.Não

Uso básico

const result = await client.threeds.authenticate({
  amount: 15000, // R$ 150,00 em centavos
  currency: 'BRL',
  installments: 1,
  card: {
    number: '4000000000002701',
    expirationMonth: '12',
    expirationYear: '2030',
  },
  customer: {
    name: 'Comprador Teste',
    email: 'teste@email.com',
    phone: '5511999999999',
  },
});

if (result.status === 'authenticated') {
  console.log('CAVV:', result.cavv);
  console.log('ECI:', result.eci);
  // Prossiga com a cobrança usando o CAVV
}

Parâmetros da autenticação

CampoTipoObrigatórioDescrição
amountnumberSimValor em centavos.
currencystringSimCódigo da moeda (BRL, USD, EUR).
installmentsnumberNãoQuantidade de parcelas (padrão: 1).
card.numberstringSimNúmero do cartão.
card.holderNamestringNãoNome do portador.
card.expirationMonthstringSimMês de validade.
card.expirationYearstringSimAno de validade.
customer.namestringSimNome do comprador.
customer.emailstringSimEmail do comprador.
customer.phonestringSimTelefone com DDI+DDD (ex: 5511999999999).
addressobjectNãoEndereço de cobrança (recomendado — melhora a taxa de aprovação).

Endereço (opcional, recomendado)

CampoTipoObrigatórioDescrição
address.streetstringSimLogradouro.
address.numberstringSimNúmero.
address.complementstringNãoComplemento.
address.zipCodestringSimCEP.
address.neighborhoodstringSimBairro.
address.citystringSimCidade.
address.statestringSimEstado (UF, 2 caracteres).
address.countrystringSimPaís (código ISO, ex: BR).

Opções adicionais

const result = await client.threeds.authenticate(dados, {
  timeout: 120000, // Timeout em ms (padrão: 120s)
});

Retorno (ThreeDSResult)

CampoTipoDescrição
statusstringStatus da autenticação (ver tabela acima).
cavvstringCryptogram de autenticação. Presente quando status === 'authenticated'.
ecistringElectronic Commerce Indicator. Indica o nível de autenticação.
xidstringIdentificador da transação 3DS.
versionstringVersão do protocolo 3DS utilizado.
referenceIdstringIdentificador de referência da sessão.

Fluxo frictionless vs. challenge

O emissor decide se o fluxo será frictionless (sem interação) ou challenge (com interação). Essa decisão é baseada em:

  • Perfil de risco da transação
  • Histórico do portador do cartão
  • Valor da transação
  • Dados do dispositivo e navegador

No fluxo frictionless, a autenticação acontece em segundo plano e o resultado é retornado diretamente. No fluxo challenge, o SDK exibe automaticamente um modal com o iframe do banco emissor para que o usuário complete a verificação (SMS, biometria, app bancário etc.).

Enviar o endereço de cobrança (address) e dados completos do comprador aumenta significativamente a chance de um fluxo frictionless.

Informações coletadas automaticamente

O SDK coleta e envia automaticamente dados do navegador necessários para a avaliação de risco do emissor:

  • User Agent, idioma e fuso horário
  • Resolução de tela e profundidade de cor
  • Suporte a Java e JavaScript
  • Endereço IP público (via api.ipify.org)

Nenhuma ação adicional é necessária — essas informações são coletadas transparentemente pelo método authenticate().

Cartões de teste

CartãoComportamento
4000000000002701Autenticação bem-sucedida (frictionless)
4000000000002503Exige challenge
4000000000002370Autenticação falha

Esses cartões são para testes apenas. Em produção, o comportamento depende do emissor real do cartão.

Tratamento de erros

import { ThreeDSError, TimeoutError } from '@worldfy/security-sdk';

try {
  const result = await client.threeds.authenticate(dados);

  switch (result.status) {
    case 'authenticated':
      // Prossiga com a cobrança
      break;
    case 'unenrolled':
      // Cartão não suporta 3DS — decida se aceita sem autenticação
      break;
    case 'failed':
      // Autenticação negada pelo emissor
      break;
    case 'cancelled':
      // Usuário cancelou ou timeout
      break;
    case 'error':
      // Erro técnico — tente novamente
      break;
  }
} catch (error) {
  if (error instanceof TimeoutError) {
    // Timeout na comunicação com a API
  } else if (error instanceof ThreeDSError) {
    // Erro no fluxo 3DS
    console.error(`Status: ${error.status}`, error.message);
  }
}

Moedas suportadas

MoedaCódigoCódigo numérico ISO 4217
Real BrasileiroBRL986
Dólar AmericanoUSD840
EuroEUR978
Peso ArgentinoARS032
Libra EsterlinaGBP826

Tokenização

Substitua dados sensíveis do cartão por um token seguro antes de enviar ao seu backend.

Análise de fraude

Colete o fingerprint do dispositivo via ThreatMetrix para alimentar a análise antifraude CyberSource.

On this page

O que é 3D SecureFluxo de autenticaçãoStatus possíveisUso básicoParâmetros da autenticaçãoEndereço (opcional, recomendado)Opções adicionaisRetorno (ThreeDSResult)Fluxo frictionless vs. challengeInformações coletadas automaticamenteCartões de testeTratamento de errosMoedas suportadas