nfephp-org/sped-gnre

API para a emissão de guias GNRE para a SEFAZ

0.3.0 2023-04-30 10:25 UTC

This package is auto-updated.

Last update: 2024-12-09 21:41:01 UTC


README

Build status (PHP Composer) Coverage Status Total Downloads Latest Stable Version Latest Unstable Version License

Atenção!!

Caso encontre algum estado que possua uma regra especial para gerar uma GNRE por favor informar abrindo uma issue. Dessa forma podemos manter a API atualizada e ajudar a todos que utlizam a GNRE PHP

Atenção 2!!

Se você possui um certificado da certisign e está com o erro "Bad request" veja a solução encontrada pelo renandelmonico utilizando as classes da sped-common nesse link

Os certificados da certisign possuem algum problema em que não é possível extrair a cadeia de certificação, portanto é necessário fazer o download da cadeia manualmente nesse link (Hierarquia V5).

Após o download é necessário extrair usando o openssl, copiar o conteúdo gerado pelos 3 certificados e colar em um novo arquivo .pem.

openssl x509 -inform der -in ARQUIVO.cer -pubkey -noout > ARQUIVO.pem

Depois de realizar o processo acima, é necessário utilizar o método addCurlOption da classe Sped\Gnre\Webservice\Connection para alterar algumas configurações e informar manualmente a cadeia de certificação.

$webService->addCurlOption([
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => 1,
    CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1,
    CURLOPT_CAINFO => 'ARQUIVO.pem'
]);

Versões suportadas

Antes de usar a API

  • Verifique se seu certificado digital não foi expedido através da certisign, pois existe um problema na cadeia do certificado que impossibilita a emissão de guias GNRE. Certificados expedidos através do SERASA funcionam normalmente para a emissão (até agora nenhum erro foi relatado).

  • É permitido utilizar o mesmo certificado utilizado para emitir NF-e.

  • É necessário entrar em contato com a SEFAZ de cada estado pedindo liberação do serviço de emissão de GNRE.

  • Leita todos os tópicos no FAQ oficial em http://www.gnre.pe.gov.br/gnre/portal/faq.jsp. Os tópicos abordados são muito úteis para quem está começando nesse serviço.

GNRE PHP

Objetivo

API possibilita a comunicação com a SEFAZ para a emissão da nota GNRE (Guia Nacional de Recolhimento de Tributos Estaduais). A API GNRE tem como maior inspiração a API NFEPHP que você pode encontrar através do link https://github.com/nfephp

Dependências

Road-map

Atualmente estamos utilizando o trello para gerenciar o que será implementado nas próximas versões e melhorias na API, esse road map poe ser acessado em https://trello.com/b/kNP1tvsi/gnre-api-github

Informações úteis

  1. Antes de gerar qualquer guia GNRE com o seu certificado, tenha CERTEZA que você possui autorização para isso. A geração de GNRE depende de cada estado, ou seja, se você deseja gerar a guia para o Acre (com destino ao Acre) tenha certeza que já pediu a liberação do certificado no SEFAZ Acre e repita esse processo para cada estado.

Documentação

  • Documentação da GNRE PHP gerada com o PHPDOC pode ser visualizada aqui

  • Nosso wiki de como utilizar a API e gerar as GNRES está disponível aqui no github

  • Exemplos com código fonte são encontrados na pasta exemplos/

Instalação via composer

Adicionando a GNRE PHP em um projeto existente com o composer

Caso você não possua o composer veja esse link antes de prosseguir

Adicione a dependência da GNRE PHP no arquivo composer.json :

Para PHP <= 5.5

{
    "nfephp-org/sped-gnre": "0.1.1"
}

Para PHP = 5.6

{
    "nfephp-org/sped-gnre": "0.1.4"
}

Para PHP >= 7.0

{
    "nfephp-org/sped-gnre": "0.1.5"
}

Atualize suas depedências existentes no composer :

composer update

Possíveis erros

Erro : unable to use client certificate (no key found or wrong pass phrase?)

Se você está obtendo essa mensagem após enviar a requisição para o web service da SEFAZ verifique a senha que você está utilizando, pois esse erro ocorre quando a senha informada não bate com a senha do certificado utilizado

Erro: [InvalidArgumentException] Could not find package marabesi/gnre at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability

Esse problema ocorre pois não estamos informando ao composer qual a versão mínima que queremos utilizar, para resolver esse problema basta adicionar a seguinte linha no seu arquivo composer.json

{
    "minimum-stability": "dev"
}

Quick start

Clone o repositório do projeto

git clone https://github.com/nfephp-org/sped-gnre.git

Vá para a pasta de exemplos

cd exemplos/

Rode o servidor built-in do PHP

php -S localhost:8181

Abra o seu navegador e digite a seguinte URL

http://localhost:8181/gerar-xml.php

Caso queira ver outros exemplos utilizados pela API acesse esse link https://github.com/nfephp-org/sped-gnre/tree/master/exemplos