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
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'
]);
PHP | GNRE |
---|---|
PHP 5.6 | 0.1.4 |
HHVM | 0.1.4 |
PHP 7.0 | 0.1.5 |
PHP 7.3 | 0.1.6 |
-
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.
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
- Apache / Nginx
- PHP 5.3+
- Extensões PHP
- DOMDocument
- cURL
- [GD (Utilizada para renderizar o código de barras)] (http://php.net/manual/pt_BR/book.image.php)
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
Descrição | Endereço |
---|---|
Grupo de discussão | https://groups.google.com/forum/#!forum/gnrephp |
Site oficial do governo | http://www.gnre.pe.gov.br/gnre/index.html |
Site do Projeto | http://nfephp-org.github.io/sped-gnre/ |
Wiki, onde é possível encontrar maiores informações de como utilizar a API | https://github.com/nfephp-org/sped-gnre/wiki |
Site oficial da SEFAZ de todo os estados | http://www.gnre.pe.gov.br/gnre/portal/linksUteis.jsp |
- 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 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/
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
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"
}
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