PHPackages                             bahiash/omie-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. bahiash/omie-sdk

ActiveLibrary

bahiash/omie-sdk
================

Laravel package for interaction with Omie ERP

1.0.4(3mo ago)04proprietaryPHPPHP ^8.1

Since Jan 19Pushed 3mo agoCompare

[ Source](https://github.com/Bahia-SH/omie-sdk)[ Packagist](https://packagist.org/packages/bahiash/omie-sdk)[ RSS](/packages/bahiash-omie-sdk/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (6)Used By (0)

Omie SDK – Visão geral
----------------------

[](#omie-sdk--visão-geral)

Este pacote fornece uma integração com a API do Omie preparada para:

- Uso **multi-cliente** (várias `app_key`/`app_secret` na mesma aplicação).
- Chamadas **sempre enfileiradas** via Jobs Laravel.
- **Rate limit** seguindo a documentação oficial (por IP, por App Key + método e concorrência).
- **Log completo em banco de dados** de todas as requisições/respostas.

### Instalação básica

[](#instalação-básica)

1. Adicione o pacote via `composer` no seu projeto Laravel.
2. Publique o arquivo de configuração:

```
php artisan vendor:publish --tag=omie-config
```

3. Garanta que você está usando um driver de cache que suporte *locks* (ex.: `redis` ou `database`).
4. Execute as migrações para criar a tabela de logs:

```
php artisan migrate
```

### Configuração

[](#configuração)

O arquivo `config/omie.php` controla:

- `base_url`: endpoint base da API Omie.
- `rate_limit`: limites por IP, por App Key + método e concorrência, conforme documentação do Omie.
- `queue`: conexão e nome da fila onde os Jobs serão executados.
- `logging`: habilitar/desabilitar logs e campos sensíveis a serem mascarados.

### Uso multi-cliente

[](#uso-multi-cliente)

Em vez de configurar uma única `app_key` global, você passa as credenciais para cada chamada/cliente. Para produtos:

```
use Bahiash\Omie\Services\ProdutosService;

public function criarProduto(ProdutosService $produtos)
{
    $appKey = 'APP_KEY_DO_CLIENTE';
    $appSecret = 'APP_SECRET_DO_CLIENTE';

    $produtos->dispatchCall(
        $appKey,
        $appSecret,
        'IncluirProduto',
        [
            // parâmetros conforme documentação da API de produtos Omie
        ],
        \App\Events\ProdutoIncluidoNaOmie::class,  // evento disparado ao concluir (opcional)
        ['product_id' => $product->id]             // parâmetros passados ao evento
    );
}
```

A chamada será:

- Enfileirada na fila configurada.
- Passará pelo `OmieRateLimiter` (IP + App Key + método + concorrência).
- Terá request/response registrados na tabela `omie_api_logs`.

### Logs em banco

[](#logs-em-banco)

A tabela `omie_api_logs` armazena:

- `app_key`, `service_path`, `method`.
- `request_body` (com campos sensíveis mascarados).
- `response_body`, `http_status`, `omie_status_code`, `omie_status_message`.
- `duration_ms`, `ip_origem`, `event_class`, `event_params`.
- Informações de erro (`error_class`, `error_message`, `error_trace`).

Quando informados `event_class` e `event_params` na chamada, ao concluir (sucesso ou erro) o pacote dispara o evento `new $eventClass($log, $eventParams)`, permitindo à aplicação processar a resposta (ex.: atualizar uma model de origem). Não há evento padrão; se `event_class` for omitido, nenhum evento é disparado.

Você pode consultar os logs normalmente via Eloquent:

```
use Bahiash\Omie\Models\OmieApiLog;

$logs = OmieApiLog::where('app_key', 'APP_KEY_DO_CLIENTE')
    ->where('method', 'IncluirProduto')
    ->latest()
    ->get();
```

### Rate limit

[](#rate-limit)

O `OmieRateLimiter` utiliza o cache para manter contadores por minuto e por método, seguindo as regras oficiais:

- Limite por IP/minuto.
- Limite por App Key + método/minuto.
- Limite de requisições simultâneas por App Key + método.

Se os limites forem excedidos, o Job aguardará a liberação dentro de um tempo máximo configurado; se o tempo se esgotar, será lançada uma `OmieRateLimitExceededException`.

### Testes

[](#testes)

Para executar a suíte de testes do pacote:

```
composer install
vendor/bin/phpunit
```

Os testes cobrem: `OmieClient`, `OmieRateLimiter`, `DispatchOmieCallJob`, `ProdutosService`, `OmieApiLogger`, modelo `OmieApiLog`, exceções e o `OmieServiceProvider`.

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance82

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

5

Last Release

97d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d52693f3ad1702bb60e9188e1074ce7dd56226786e9a7652992be177d307eb75?d=identicon)[RodolfoMelo](/maintainers/RodolfoMelo)

---

Top Contributors

[![RodolfoMelo](https://avatars.githubusercontent.com/u/3863237?v=4)](https://github.com/RodolfoMelo "RodolfoMelo (13 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/bahiash-omie-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/bahiash-omie-sdk/health.svg)](https://phpackages.com/packages/bahiash-omie-sdk)
```

###  Alternatives

[s-ichikawa/laravel-sendgrid-driver

This library adds a 'sendgrid' mail driver to Laravel.

4139.3M1](/packages/s-ichikawa-laravel-sendgrid-driver)[stechstudio/laravel-zipstream

A fast and simple streaming zip file downloader for Laravel.

4633.7M3](/packages/stechstudio-laravel-zipstream)[laravel-notification-channels/microsoft-teams

A Laravel Notification Channel for Microsoft Teams

1603.0M7](/packages/laravel-notification-channels-microsoft-teams)[spatie/laravel-export

Create a static site bundle from a Laravel app

646127.9k5](/packages/spatie-laravel-export)[erag/laravel-disposable-email

A Laravel package to detect and block disposable email addresses.

226102.4k](/packages/erag-laravel-disposable-email)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
