# Provedor de API de NFSe

O sistema usa uma **interface** (`NfseApiProviderInterface`) para falar com a API de NFSe. Assim é possível trocar de fornecedor (Focus NFe, outro provedor) sem alterar o `NfseService` nem o restante do fluxo.

## Implementação atual

- **NfseApiClient**: implementação que usa a **Focus NFe** (env vars `FOCUS_NFE_TOKEN_PROD`, `FOCUS_NFE_SERVER`, `NFSE_TIPO_GERACAO`).

## Como trocar de fornecedor

1. Crie uma nova classe que implemente `App\Services\Financeiro\ContasReceber\Contracts\NfseApiProviderInterface`:
   - `enviar(array $payload, int $ref): array`
   - `consultar(int $ref): array`
   - `cancelar(int $ref, string $justificativa): array`
   - `getTipoGeracao(): string`

2. No **FinanceiroProvider** (`app/Providers/FinanceiroProvider.php`), altere o binding:
   ```php
   $this->app->bind(
       NfseApiProviderInterface::class,
       SuaNovaClasseProvedor::class,  // em vez de NfseApiClient::class
   );
   ```

3. Ajuste payload/endpoints na nova classe conforme a documentação do novo provedor. O `NfseService` e os controllers não precisam ser alterados.
