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

Visão geral

O Security SDK da Worldfy permite integrar tokenização de cartões, autenticação 3D Secure e análise de fraude diretamente no seu frontend.

Autenticação 3DS

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

SDK de Segurança

Tokenização

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

Como funciona

A tokenização substitui o número do cartão (PAN), data de validade e nome do portador por um token opaco que representa esses dados de forma segura. O fluxo é:

  1. O SDK coleta os dados do cartão no frontend
  2. Envia diretamente para a API da Worldfy via HTTPS
  3. A API criptografa os dados com AES-256-GCM e retorna um token
  4. Seu frontend envia apenas o token ao seu backend para criar a cobrança
Dados do cartão POST /tokenize (Basic Auth) Token + metadados TokenizeResult Token (sem dados sensíveis) Criar cobrança com token Navegador Worldfy SDK Worldfy API Seu Backend

O CVV é usado apenas para validação no momento da tokenização e nunca é armazenado. Os dados criptografados contêm apenas número, nome do portador e validade.

Uso básico

const result = await client.tokenizer.tokenize({
  card: {
    number: '4000000000002701',
    holderName: 'COMPRADOR TESTE',
    expirationMonth: '12',
    expirationYear: '2030',
    cvv: '123',
  },
});

console.log(result.token);          // "tok_abc123..."
console.log(result.brand);          // "visa"
console.log(result.lastFourDigits); // "2701"
console.log(result.firstSixDigits); // "400000"

Parâmetros do cartão

CampoTipoObrigatórioDescrição
numberstringSimNúmero do cartão (13 a 19 dígitos).
holderNamestringSimNome do portador como impresso no cartão.
expirationMonthstringSimMês de validade (01–12).
expirationYearstringSimAno de validade (4 dígitos, ex: 2030).
cvvstringSimCódigo de segurança (3 ou 4 dígitos).

Retorno (TokenizeResult)

CampoTipoDescrição
tokenstringToken opaco que representa o cartão. Use para criar cobranças.
brandstringBandeira detectada (visa, mastercard, elo, amex, hipercard, diners, jcb, discover).
lastFourDigitsstringÚltimos 4 dígitos do cartão. Seguro para exibição ao usuário.
firstSixDigitsstringPrimeiros 6 dígitos (BIN).
expirationMonthstringMês de validade.
expirationYearstringAno de validade.

Deduplicação

O SDK detecta automaticamente se o mesmo cartão já foi tokenizado anteriormente para o mesmo merchant. Se um token existente for encontrado (via fingerprint do cartão), ele é retornado diretamente — evitando a criação de tokens duplicados.

A detecção é feita por:

  • Fingerprint HMAC-SHA-256 do número completo do cartão
  • Fallback por BIN + últimos 4 dígitos + validade (para tokens legados)

Detecção de bandeira

A bandeira é detectada automaticamente pelo BIN (primeiros dígitos do cartão):

BandeiraPrefixos
Elo636368, 438935, 504175, 451416, 509048–509075, 36297 e outros
Hipercard606282, 637095, 637568, 637599, 637609, 637612
Amex34, 37
Mastercard51–55, 2221–2720
Visa4
Diners300–305, 36, 38
JCB35
Discover6011, 622126–622925, 644–649, 65

Tratamento de erros

import { ValidationError, ApiError } from '@worldfy/security-sdk';

try {
  const result = await client.tokenizer.tokenize({ card: { ... } });
} catch (error) {
  if (error instanceof ValidationError) {
    // Dados do cartão inválidos
    console.error(`Campo inválido: ${error.field}`, error.message);
  } else if (error instanceof ApiError) {
    // Erro retornado pela API
    console.error(`Erro ${error.code}: ${error.message}`);
  }
}

Os erros mais comuns são:

ErroCausa
ValidationError (field: card.number)Número com menos de 13 dígitos
ValidationError (field: card.cvv)CVV com menos de 3 dígitos
ValidationError (field: card.holderName)Nome do portador vazio
AuthenticationErrorChave pública inválida ou inativa

Usando o token na cobrança

Após tokenizar, envie o token ao seu backend e use-o no campo payment_details.token da cobrança:

const response = await fetch('https://api.worldfypayments.com/v1/charges', {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${credentials}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    amount: 15000,
    payment_method: 'credit_card',
    product_type: 'digital',
    customer: {
      name: 'Comprador Teste',
      email: 'comprador@email.com',
      tax_id: '12345678900',
      phone: '11999998888',
      type: 'individual',
    },
    items: [
      { name: 'Pedido', quantity: 1, unit_price: 15000, tangible: false },
    ],
    payment_details: {
      token: result.token,
      installments: 1,
    },
  }),
});
curl -X POST https://api.worldfypayments.com/v1/charges \
  -H "Authorization: Basic {credentials}" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 15000,
    "payment_method": "credit_card",
    "product_type": "digital",
    "customer": {
      "name": "Comprador Teste",
      "email": "comprador@email.com",
      "tax_id": "12345678900",
      "phone": "11999998888",
      "type": "individual"
    },
    "items": [
      { "name": "Pedido", "quantity": 1, "unit_price": 15000, "tangible": false }
    ],
    "payment_details": {
      "token": "tok_abc123...",
      "installments": 1
    }
  }'

Visão geral

O Security SDK da Worldfy permite integrar tokenização de cartões, autenticação 3D Secure e análise de fraude diretamente no seu frontend.

Autenticação 3DS

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

On this page

Como funcionaUso básicoParâmetros do cartãoRetorno (TokenizeResult)DeduplicaçãoDetecção de bandeiraTratamento de errosUsando o token na cobrança