paulo-hortelan/lara-cep

Pacote Laravel para consulta de CEPs brasileiros com múltiplos provedores, cache e orquestração assíncrona opcional.
1,252 1
Install
composer require paulo-hortelan/lara-cep
Latest Version:v1.1.0
PHP:^8.1
License:MIT
Last Updated:Jul 1, 2026
Links: GitHub  ·  Packagist
Maintainer: paulo-hortelan

Lara CEP

Latest Version on Packagist Tests Code Style Total Downloads

lara-cep é um pacote Laravel para consultar CEPs brasileiros usando múltiplos provedores, com:

  • lista de provedores configurável
  • TTL de cache configurável
  • modo assíncrono configurável (consulta todos os provedores habilitados em paralelo)

O pacote foi inspirado no comportamento do CEP Promise e adaptado para fluxos de pacote Laravel.

Instalação

composer require paulo-hortelan/lara-cep

Publique a configuração:

php artisan vendor:publish --tag=lara-cep-config

Uso Básico

use PauloHortelan\LaraCep\Facades\LaraCep;

$address = LaraCep::find('01001-000');

$address->zipCode;  // 01001000
$address->state;    // SP
$address->city;     // Sao Paulo
$address->district; // Centro
$address->street;   // Praca da Se...
$address->provider; // via_cep, open_cep, brasil_api...

Você também pode chamar:

$address = app('lara-cep')->find('01001000');

Configuração

config/lara-cep.php

return [
    'async' => true,

    'cache' => [
        'enabled' => true,
        'ttl' => 3600,
        'store' => null,
        'prefix' => 'lara_cep',
    ],

    'providers' => [
        'via_cep' => [
            'enabled' => true,
            'class' => PauloHortelan\LaraCep\Providers\ViaCepProvider::class,
        ],

        'open_cep' => [
            'enabled' => true,
            'class' => PauloHortelan\LaraCep\Providers\OpenCepProvider::class,
        ],

        'brasil_api' => [
            'enabled' => true,
            'class' => PauloHortelan\LaraCep\Providers\BrasilApiProvider::class,
        ],

        'cep_aberto' => [
            'enabled' => false,
            'class' => PauloHortelan\LaraCep\Providers\CepAbertoProvider::class,
            'token' => env('LARA_CEP_PROVIDER_CEP_ABERTO_TOKEN', ''),
        ],
    ],
];

Comportamento assíncrono

  • async = true: todos os provedores habilitados são consultados em paralelo; a primeira resposta com sucesso vence.
  • async = false: os provedores são consultados na ordem configurada até um retornar sucesso.

Comportamento de cache

  • a chave de cache usa o prefixo configurado + CEP normalizado
  • o TTL é totalmente configurável (cache.ttl)
  • o cache pode ser desabilitado (cache.enabled = false)

Tratamento de Erros

use PauloHortelan\LaraCep\Exceptions\CepLookupException;
use PauloHortelan\LaraCep\Exceptions\InvalidCepException;

try {
    $address = LaraCep::find('99999999');
} catch (InvalidCepException $e) {
    // formato de CEP inválido
} catch (CepLookupException $e) {
    // todos os provedores falharam
    $details = $e->toArray();
}

Testes

composer test

Licença

MIT. Veja LICENSE.md.

Related Packages

rafaellaurindo/laravel-brasilapi

A Laravel package that provides a simple way to use the Brasil API endpoints

36,594 6
robersonfaria/validation

Pacote Laravel para validações comuns ao Brasil(pt-BR) tipo: CNPJ,CPF,CEP,CNS

7,559 9
zizaco/cep-consult

This package has the objective to consult the CEP within one or more web APIs th...

2,718 23
canducci/zipcode

ZipCode From Brazil

56,470 45
cagartner/correios-consulta

Package para pesquisa de serviços de busca por cep, calculo de frete e etc, dire...

303,343 156