Como validar CPF via API usando Ruby on Rails

Bernardo RochaBernardo Rocha
Publicado em 11 de março de 20254 min de leitura

Introdução

A validação de CPF é um processo essencial para aplicações que lidam com cadastros de usuários, concessão de crédito, prevenção a fraudes e compliance regulatório. Com o Ruby on Rails, é possível integrar facilmente uma API de consulta de CPF para garantir que os dados sejam verificados em tempo real, reduzindo riscos e proporcionando maior confiabilidade no sistema.

Neste guia, vamos demonstrar passo a passo como validar um CPF utilizando a API da CPFHub.io em uma aplicação Ruby on Rails, cobrindo desde a configuração inicial até a implementação de testes e boas práticas de segurança.

Pré-requisitos

Antes de iniciar, certifique-se de que tem o seguinte configurado:

  • Ruby on Rails instalado (versão 6 ou superior recomendada).

  • Conta na CPFHub.io para obter uma chave de API.

  • Biblioteca HTTP (
    faraday
    ) para fazer requisições à API.
  • Ferramentas de teste como Postman ou
    cURL
    para validar as requisições.

Passo 1: Adicionar a biblioteca HTTP

Para realizar requisições à API, utilizaremos a gem Faraday, que permite interagir com serviços externos de maneira eficiente. Para adicioná-la ao seu projeto, execute:

bundle add faraday
Ou inclua no seu
Gemfile
e execute
bundle install
:
gem 'faraday'

Passo 2: Criar um serviço para validar CPF

No Rails, uma boa prática é criar um service object para lidar com chamadas externas à API, isolando a lógica de integração e facilitando a manutenção do código.

Crie o arquivo
app/services/cpf_validator.rb
:
require 'faraday'
require 'json'

class CpfValidator
  BASE_URL = 'https://api.cpfhub.io/api/cpf'
  API_KEY = ENV['CPFHUB_API_KEY']

  def self.validate(cpf, birth_date)
    response = Faraday.post(BASE_URL, {
      cpf: cpf,
      birthDate: birth_date
    }.to_json, {
      'Content-Type' => 'application/json',
      'x-api-key' => API_KEY
    })

    JSON.parse(response.body)
  rescue Faraday::Error => e
    { error: "Erro ao conectar com a API: #{e.message}" }
  rescue JSON::ParserError
    { error: "Erro ao processar resposta da API." }
  end
end

Boas práticas

  • Uso de variáveis de ambiente: A chave de API é armazenada no
    ENV['CPFHUB_API_KEY']
    para evitar exposição no código.
  • Tratamento de erros: Captura falhas de conexão (
    Faraday::Error
    ) e erros na conversão JSON (
    JSON::ParserError
    ).

Passo 3: Criar um controlador para validar CPF

Agora, vamos criar um controlador para receber um CPF e uma data de nascimento, chamar o serviço e retornar a resposta JSON.

Crie o arquivo
app/controllers/cpf_controller.rb
:
class CpfController < ApplicationController
  def validate
    cpf = params[:cpf]
    birth_date = params[:birth_date]
    result = CpfValidator.validate(cpf, birth_date)
    render json: result
  end
end

Melhoria na segurança

  • Sanitização de entrada: Antes de enviar os dados para a API, recomenda-se remover caracteres especiais do CPF e validar o formato da data.

Passo 4: Configurar a rota

Adicione a seguinte linha ao seu arquivo
config/routes.rb
:
Rails.application.routes.draw do
  post '/validate_cpf', to: 'cpf#validate'
end
Isso permitirá que sua aplicação aceite requisições para validar CPFs no endpoint
/validate_cpf
.

Passo 5: Testar a API

Agora que tudo está configurado, podemos testar nossa API utilizando cURL, Postman ou ferramentas de testes automatizados.

Teste com cURL

curl -X POST "http://localhost:3000/validate_cpf" \
  -H "Content-Type: application/json" \
  -d '{"cpf": "123.456.789-00", "birth_date": "15/06/1990"}'

Teste com Postman

  1. Abra o Postman e crie uma nova requisição POST.

  2. Insira a URL:
    http://localhost:3000/validate_cpf
  3. No Body, selecione JSON e adicione:

    {
      "cpf": "123.456.789-00",
      "birth_date": "15/06/1990"
    }
  4. Clique em Send e verifique a resposta.

Se tudo estiver correto, você receberá um JSON semelhante a este:

{
  "success": true,
  "data": {
    "name": "João da Silva",
    "status": "Regular",
    "situation": "Ativo",
    "birthDate": "15/06/1990",
    "cpfNumber": "12345678900",
    "registrationDate": "anterior a 10/11/1990",
    "verificationDigit": "03",
    "receipt": {
      "emissionTime": "10:15:30",
      "emissionDate": "13/03/2025",
      "controlCode": "XXXX.XXXX.XXXX.XXXX"
    },
    "validationUrl": "https://servicos.receita.fazenda.gov.br/Servicos/CPF/ca/ResultadoAut.asp?cp=12345678900&cc=XXXXXX&de=13032025&he=101530&dv=03&em=01",
    "validationHtmlUrl": "https://api.cpfhub.io/api/view-proof/12345678900/XXXXXXXXXXXXX"
  }
}

Conclusão

Integrar a API da CPFHub.io com Ruby on Rails é um processo simples e eficiente para validar CPFs em tempo real. Seguindo os passos acima, sua aplicação poderá garantir que os dados dos usuários sejam verificados corretamente, proporcionando maior segurança, conformidade com a LGPD e evitando fraudes.

Se você deseja uma solução robusta e confiável para validação de CPF, experimente a API da CPFHub.io e consulte a documentação completa para mais detalhes.