From a5e4ea87c6e808e6865fca09e85cec98c293f6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Eduardo?= Date: Mon, 9 Nov 2026 16:11:28 -0300 Subject: [PATCH] feat: consultarNfse e consultarSimplesNacional (0.2.0) --- README.md | 23 ++++++++++++++++++++++- src/FiscalAPI.php | 28 +++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c5842bb..e530c3d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # FiscalAPI — SDK PHP -Cliente PHP da [FiscalAPI](https://fiscalapi.com.br): Inscrição Estadual nos 27 estados, CNPJ, certidões (CND estadual, CND Federal, CNDT, CRF/FGTS), XML de NF-e por chave, SIGEF, CNIR e perfil do produtor rural. +Cliente PHP da [FiscalAPI](https://fiscalapi.com.br): Inscrição Estadual nos 27 estados, CNPJ, certidões (CND estadual, CND Federal, CNDT, CRF/FGTS), XML de NF-e por chave, NFS-e por chave, Simples Nacional, SIGEF, CNIR e perfil do produtor rural. - PHP 8.1 ou superior, só com a extensão `curl` (nenhum pacote do Composer). - Autoload PSR-4 (`FiscalApiBr\`). @@ -50,6 +50,8 @@ Todos os métodos devolvem `array` com o JSON da API. Use argumentos nomeados pa | `consultarCndt(cpf: \| cnpj:)` | `GET /api/consultar-cndt` | Certidão de débitos trabalhistas | | `consultarCrfFgts(cpf: \| cnpj:)` | `GET /api/consultar-crf-fgts` | Regularidade do FGTS | | `consultarCertidoesTodas(cpf: \| cnpj:, skipEstaduais: false)` | `GET /api/certidoes-todas` | Todas as certidões em uma chamada | +| `consultarSimplesNacional($cnpj)` | `GET /api/consultar-simples-nacional` | Situação no Simples Nacional e SIMEI | +| `consultarNfse($chave, danfse: false)` | `GET /api/consultar-nfse` | NFS-e (padrão nacional) por chave, sem certificado | | `consultarNfeXml($chave, $certificado, $senha, manifestar: true)` | `POST /api/consultar-nfe-xml` | XML completo da NF-e | | `consultarSigef(cpf: \| cnpj:)` | `GET /api/consultar-sigef` | Parcelas certificadas no SIGEF/INCRA | | `consultarSigefParcela($uuid, forceFresh: false)` | `GET /api/consultar-sigef-parcela` | Uma parcela com polígono, vértices e confrontantes | @@ -84,6 +86,25 @@ echo $empresa['result']['razao_social'], ' — ', $empresa['result']['situacao_c $api->consultarCnpj('12345678000195', forceFresh: true); ``` +### Simples Nacional + +```php +$r = $api->consultarSimplesNacional('11222333000181'); +var_dump($r['optante_simples'], $r['situacao_simei'], $r['regime_regular_ibs']); +``` + +### NFS-e por chave + +```php +$nfse = $api->consultarNfse( + '35503082211222333000181000000000012326100000045676', + danfse: true, // opcional: PDF do DANFSe em base64 +); +echo $nfse['emitente']['razao_social'], ' — ', $nfse['tributacao_municipal']['valor_servico'], PHP_EOL; +``` + +Uma consulta nova leva de 30 a 60 segundos. Só a NFS-e entregue é cobrada. + ### Certidões com PDF ```php diff --git a/src/FiscalAPI.php b/src/FiscalAPI.php index 7d78095..88f2350 100644 --- a/src/FiscalAPI.php +++ b/src/FiscalAPI.php @@ -21,7 +21,7 @@ */ final class FiscalAPI { - public const VERSION = '0.1.0'; + public const VERSION = '0.2.0'; public const DEFAULT_BASE_URL = 'https://api.fiscalapi.com.br'; /** Algumas consultas (NF-e, SIGEF) podem levar até 180 s no servidor. */ public const DEFAULT_TIMEOUT = 200; @@ -112,6 +112,15 @@ public function consultarCnpj(string $cnpj, bool $forceFresh = false): array ]); } + /** Situação no Simples Nacional e SIMEI (GET /api/consultar-simples-nacional). */ + public function consultarSimplesNacional(string $cnpj): array + { + if (trim($cnpj) === '') { + throw new \InvalidArgumentException('Informe o CNPJ.'); + } + return $this->get('/api/consultar-simples-nacional', ['cnpj' => trim($cnpj)]); + } + // ----------------------------------------------------------- Certidões /** CND estadual (ICMS) em uma UF (GET /api/consultar-cnd). */ @@ -186,6 +195,23 @@ public function consultarNfeXml(string $chave, string $certificado, string $senh ]); } + /** + * NFS-e (padrão nacional) pela chave de acesso, sem certificado + * (GET /api/consultar-nfse). Com $danfse = true, inclui o PDF do DANFSe em + * base64. Uma consulta nova pode levar de 30 a 60 segundos. + */ + public function consultarNfse(string $chave, bool $danfse = false): array + { + $digitos = preg_replace('/\D/', '', $chave) ?? ''; + if ($digitos === '') { + throw new \InvalidArgumentException('Informe a chave de acesso.'); + } + return $this->get('/api/consultar-nfse', [ + 'chave' => $digitos, + 'danfse' => $danfse ?: null, + ]); + } + // ------------------------------------------------------- Imóvel rural /** Parcelas certificadas no SIGEF/INCRA (GET /api/consultar-sigef). */