Pular para o conteúdo
Tutorial

Valide cartões de crédito com o cheque Luhn em uma chamada de API

| 5 min read

Detecte erros de digitação e falsificações de números de cartão antes que cheguem ao seu processador de pagamentos. Um POST retorna validade Luhn, marca (Visa, Mastercard, Amex) e crédito ou débito. Nível gratuito, sem SDK.

Payment cards representing credit card validation at checkout
Photo by CardMapr.nl on Unsplash

Um número de cartão digitado incorretamente custa o dobro: o usuário vê uma recusa confusa e seu processador cobra uma taxa pela falha na autorização. Você pode pegar a maioria deles antes que eles saiam do navegador. O algoritmo de Luhn é uma soma de verificação que todo número de cartão real satisfaz, portanto, um número que falhar, é garantido que é inválido e nunca precisa chegar a Stripe ou Adyen.

Este endpoint executa a verificação de Luhn e detecta a marca do cartão em um POST. Aqui está a chamada completa.

O pedido

Envie o número como uma string. Espaços e travessões são removidos automaticamente, então 4111 1111 1111 1111 e 4111-1111-1111-1111 ambos funcionam. A resposta te diz três coisas:

  • valid: passa na soma de verificação Luhn ou não.
  • brand: Visa, Mastercard, Amex, Discover, JCB, Diners Club ou UnionPay.
  • type: crédito ou débito, a partir do número de identificação do emissor.

Valide na finalização da compra em Node.js

Chame o endpoint antes de enviar qualquer coisa ao seu processador. Uma verificação falhada de Luhn retorna um resultado claro erro que você pode mostrar ao usuário e pular a taxa de autorização que um número falso teria custado:

Bloquear entradas incorretas em um formulário React

O React Hook Form executa um validador assíncrono antes do envio, portanto, um número inválido nunca dispara o ordem. Transfira a chamada diretamente para register:

Mantenha seu escopo PCI pequeno. O design de menor risco tokeniza o cartão no navegador por meio de seu processador e valida apenas os dígitos iniciais do logotipo da marca. Execute um completo validação do lado do servidor quando você realmente precisa dela, não a cada pressionamento de tecla, e nunca registre o número completo.

O que isso faz e o que não diz a você

A validação de Luhn é um filtro, não uma garantia. Um número passageiro está bem formado; isso não prova o cartão existe ou tem fundos. Somente uma autorização através do seu processador confirma isso. Usar este endpoint para rejeitar lixo óbvio de forma barata e para impulsionar a interface do usuário da marca do cartão, então deixe seu processador lidar com a carga real.

O validador de cartão de crédito é um dos cerca de 200 terminais de uso único no botoi, junto com IBAN e IVA validação para o resto do seu fluxo de faturamento. Todos eles ficam atrás de uma chave de API com 5 necessidade/min grátis. Tente a chamada no playground interativo ou conecte o Servidor MCP para validar cartões de Claude.

FAQ

O que a verificação de Luhn realmente prova?
O algoritmo Luhn é uma soma de verificação que detecta erros de digitação e falsificações geradas aleatoriamente. Um número que falha em Luhn é garantido como inválido, então você pode rejeitá-lo antes que ele chegue ao seu processador de pagamento. Um número que passa por Luhn está bem formado, mas isso não significa que o cartão exista ou tenha fundos. Somente uma autorização através do seu processador confirma isso. Use Luhn para filtrar o lixo óbvio de maneira barata e deixe Stripe ou Adyen fazerem a carga real.
A API armazena ou registra os números dos cartões que envio?
Não. O número é validado no servidor e nunca é armazenado ou registrado. Dito isto, o padrão inteligente é nunca enviar um PAN completo pela rede. Execute a detecção de marca nos primeiros 6 a 8 dígitos do lado do cliente para a UI e reserve uma chamada de validação completa para os casos em que você realmente precisa dela no lado do servidor, fora do escopo do PCI.
Quais marcas de cartão ele detecta?
Visa, Mastercard, American Express, Discover, JCB, Diners Club e UnionPay, com base no número de identificação do emissor (os dígitos iniciais). A resposta também informa se o número se parece com um produto de crédito ou débito, o que é útil para lógica de roteamento ou sobretaxa onde essa distinção é importante.
Posso mostrar o logotipo da marca do cartão conforme o usuário digita?
Sim, e este é o uso de maior valor. Detecte a marca desde os primeiros dígitos e troque o logotipo correspondente antes que o usuário termine de digitar. Ele garante ao usuário que o formulário está funcionando e reduz "meu cartão é aceito?" tíquetes de suporte. Debounce a chamada ou execute a detecção de marca no prefixo localmente e reserve a validação completa para envio.
A execução de uma verificação Luhn é suficiente para conformidade com PCI?
Não. Uma verificação de Luhn é uma validação de entrada, não um controle de conformidade. Se seus servidores atingirem um número de cartão completo, você estará no escopo PCI, independentemente da validação. O design de escopo mais baixo é tokenizar por meio de seu processador no navegador e validar apenas o prefixo da IU. Esta API ajuda na camada de validação; isso não altera suas obrigações de escopo.

Comece a construir com botoi

150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.