Pular para o conteúdo principal

Visão Geral

Para testar integrações de cartão de crédito em ambiente sandbox, utilize os cartões de teste específicos listados abaixo. Cada cartão tem um comportamento pré-definido que simula diferentes cenários reais de processamento.
Importante: Estes cartões funcionam apenas no ambiente de sandbox. Em produção, use apenas cartões reais válidos.

Como Testar Cobranças de Cartão em Sandbox

Os cartões utilizados para teste devem ter números válidos e podem ser gerados através de qualquer gerador de cartões. O comportamento do teste segue regras específicas baseadas no último dígito do número do cartão:

Cartões de Teste Disponíveis

Último DígitoAutorizado?StatusExemplo de Cartão
0, 1 ou 4✅ SIMAprovado5186 8825 4989 5601
2❌ NÃONão autorizado5465 4157 3697 6082
3❌ NÃOCartão expirado5112 9708 0010 5403
5❌ NÃOCartão bloqueado5528 4303 3551 3025
6❌ NÃOTimeout5186 8825 4989 5601
7❌ NÃOCartão cancelado5325 8272 3667 3227
8🎲 AleatórioAprovado / Timeout5397 5499 7073 5078

Detalhes dos Cenários

Comportamento: Transação sempre aprovada
{
  "status": "APPROVED",
  "authorizationCode": "123456",
  "nsu": "000001"
}
Use para: Testar fluxo de sucesso, captura, webhooks de aprovação
Comportamento: Cartão recusado pelo banco
{
  "error": {
    "code": "CARD_DECLINED",
    "message": "Cartão recusado pelo banco emissor"
  }
}
Use para: Testar tratamento de erro, fallback para outros métodos
Comportamento: Cartão com data de validade vencida
{
  "error": {
    "code": "CARD_EXPIRED",
    "message": "Cartão expirado"
  }
}
Use para: Validar tratamento de cartões vencidos
Comportamento: Cartão bloqueado pelo banco
{
  "error": {
    "code": "CARD_BLOCKED",
    "message": "Cartão bloqueado"
  }
}
Use para: Testar cenário de cartão bloqueado
Comportamento: Timeout na comunicação com o banco
{
  "error": {
    "code": "TIMEOUT",
    "message": "Timeout na comunicação com o banco"
  }
}
Use para: Testar retry e tratamento de timeout
Comportamento: Cartão cancelado pelo banco
{
  "error": {
    "code": "CARD_CANCELLED",
    "message": "Cartão cancelado"
  }
}
Use para: Validar tratamento de cartões cancelados
Comportamento: 50% chance de aprovação, 50% de timeout
// Pode retornar aprovação OU timeout aleatoriamente
{
  "status": "APPROVED" // ou erro de timeout
}
Use para: Testes de stress e comportamento imprevisível

Regras de Validação

CVV (Código de Segurança)

Regra Importante: Em sandbox, o CVV sempre deve ser um número de 3 dígitos terminado em zero.
Exemplos válidos:
  • 220
  • 120
  • 340
  • 010
Exemplos inválidos:
  • 221 ❌ (não termina em zero)
  • 123 ❌ (não termina em zero)
  • 12 ❌ (menos de 3 dígitos)
Comportamento: Um CVV que não termine em zero resultará em falha na geração da transação.

Data de Validade

Use qualquer data futura no formato MM/YYYY:
  • 12/2025
  • 06/2026
  • 01/2024 ❌ (data passada)

Gerador de Cartões

Para gerar cartões de teste válidos com diferentes finais, use o gerador online:

Gerador de Cartões de Teste

4devs.com.br - Gerador gratuito de números de cartãoGere cartões válidos terminados no dígito desejado para testar cenários específicos

Como Usar o Gerador

  1. Acesse 4devs.com.br/gerador_de_numero_cartao_credito
  2. Escolha a bandeira (Visa, Mastercard, etc.)
  3. Gere um número válido
  4. Modifique o último dígito conforme o cenário desejado
  5. Use CVV terminado em zero (ex: 220)

Exemplos de Teste

Teste de Aprovação

{
  "purchaseValue": 100,
  "installments": 1,
  "externalId": "test-approved-001",
  "payment": {
    "chargeType": "FEE_TO_CUSTOMER",
    "capture": true,
    "card": {
      "name": "JOSE TESTADOR",
      "number": "5186882549895601", // Final 1 = Aprovado
      "expiration": "12/2025",
      "securityCode": "220" // Terminado em 0
    }
  }
}

Teste de Cenários Avançados

Retry com Timeout (Final 6)

Implementação de Retry
async function testTimeoutScenario() {
  const timeoutCard = {
    name: "TESTE TIMEOUT",
    number: "5186882549895606", // Final 6 = Timeout
    expiration: "12/2025",
    securityCode: "220"
  };

  try {
    const payment = await createPayment({
      purchaseValue: 100,
      payment: { card: timeoutCard }
    });
  } catch (error) {
    if (error.code === 'TIMEOUT') {
      console.log('Timeout detectado, implementar retry...');
      // Implementar lógica de retry
    }
  }
}

Comportamento Aleatório (Final 8)

Teste de Stress
async function testRandomBehavior() {
  const randomCard = {
    name: "TESTE ALEATORIO",
    number: "5397549970735078", // Final 8 = Aleatório
    expiration: "12/2025",
    securityCode: "180"
  };

  // Execute múltiplas vezes para testar ambos cenários
  for (let i = 0; i < 10; i++) {
    try {
      const payment = await createPayment({
        purchaseValue: 25,
        externalId: `random-test-${i}`,
        payment: { card: randomCard }
      });

      console.log(`Teste ${i}: Aprovado`);
    } catch (error) {
      console.log(`Teste ${i}: ${error.code}`);
    }
  }
}

Checklist de Testes

Cenários Obrigatórios

  • Aprovação - Teste com final 0, 1 ou 4
  • Negação - Teste com final 2
  • Cartão Expirado - Teste com final 3
  • Timeout - Teste com final 6 e retry
  • CVV Inválido - Teste com CVV não terminado em 0

Cenários Opcionais

  • Cartão Bloqueado - Final 5
  • Cartão Cancelado - Final 7
  • Comportamento Aleatório - Final 8 (múltiplas tentativas)

Validações Importantes

  • Webhooks funcionando para todos os cenários
  • Tratamento de erro adequado
  • Retry implementado para timeouts
  • Logs estruturados para debug

🧪 Pronto para testar! Use estes cartões para validar todos os cenários de sua integração antes de ir para produção.