nfephp-org / sped-gnre
用于向SEFAZ发出GNRE(国家地方税收收入凭证)的API
Requires
- php: >=7.3.0
- ext-dom: *
- ext-gd: *
- dompdf/dompdf: 0.8.*
- laminas/laminas-barcode: ^2.3
- laminas/laminas-servicemanager: ~3.0
- nfephp-org/sped-nfe: ~5.0
- smarty/smarty: ~3.1
Requires (Dev)
- mikey179/vfsstream: ^1.6
- php-coveralls/php-coveralls: ^2.2
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.5
README
注意!!
如果发现某个州有生成GNRE的特殊规则,请通过打开一个 问题 来告知。这样我们可以保持API更新,并帮助所有使用GNRE PHP的用户。
注意2!!
如果您有certisign证书并且遇到“无效请求”错误,请查看renandelmonico在此链接中找到的解决方案,使用sped-common中的类。
certisign的证书存在一些问题,无法提取证书链,因此需要在此链接(V5层次结构)中手动下载证书链。
下载后,需要使用openssl提取,将3个证书生成的内容复制到新的.pem文件中。
openssl x509 -inform der -in ARQUIVO.cer -pubkey -noout > ARQUIVO.pem
完成上述过程后,需要使用Sped\Gnre\Webservice\Connection类中的addCurlOption方法来更改一些配置,并手动输入证书链。
$webService->addCurlOption([ CURLOPT_SSL_VERIFYHOST => 2, CURLOPT_SSL_VERIFYPEER => 1, CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1, CURLOPT_CAINFO => 'ARQUIVO.pem' ]);
支持版本
在使用API之前
-
请检查您的数字证书是否不是由certisign签发的,因为证书链中存在一个问题,导致无法发出GNRE。通过SERASA签发的证书通常用于发出(到目前为止没有报告任何错误)。
-
可以使用用于发出NF-e的相同证书。
-
需要联系每个州的SEFAZ,请求GNRE发出服务的许可。
-
请参阅http://www.gnre.pe.gov.br/gnre/portal/faq.jsp中官方FAQ的所有主题。这些主题对于刚开始使用此服务的用户非常有用。
GNRE PHP
目标
API可以与SEFAZ通信,用于发出GNRE(国家地方税收收入凭证)。GNRE API的最大灵感来自您可以通过https://github.com/nfephp找到的NFEPHP API。
依赖项
- Apache / Nginx
- PHP 5.3+
- PHP扩展
- DOMDocument
- cURL
- [GD (用于渲染条形码)] (https://php.ac.cn/manual/pt_BR/book.image.php)
路线图
目前我们正在使用trello来管理下一个版本中将要实现的功能和API的改进,该路线图可以通过https://trello.com/b/kNP1tvsi/gnre-api-github访问。
有用信息
- 在生成任何带有您的证书的GNRE之前,请确保您有此操作的 授权。GNRE的生成取决于每个州,也就是说,如果您想要为阿克雷(目的地为阿克雷)生成指南,请确保您已经在阿克雷SEFAZ申请了证书的许可,并针对每个州重复此过程。
文档
-
使用PHPDOC生成的GNRE PHP文档可在此处查看:点击这里
-
如何使用API生成GNRES的wiki在此处可用:点击此处在github上查看
-
代码示例可在以下文件夹找到:exemplos/
通过composer安装
使用composer将GNRE PHP添加到现有项目中
如果您没有composer,在继续之前请查看此链接
在composer.json文件中添加GNRE PHP依赖项
对于PHP <= 5.5
{ "nfephp-org/sped-gnre": "0.1.1" }
对于PHP = 5.6
{ "nfephp-org/sped-gnre": "0.1.4" }
对于PHP >= 7.0
{ "nfephp-org/sped-gnre": "0.1.5" }
更新composer中现有的依赖项
composer update
可能出现的错误
错误: 无法使用客户端证书(未找到密钥或密码短语错误?)
如果您在向SEFAZ的web服务发送请求后收到此消息,请检查您正在使用的密码,因为此错误发生在提供的密码与所使用的证书密码不匹配时
错误: [InvalidArgumentException] 无法找到适用于您的最小稳定性的package marabesi/gnre的任何版本。检查包拼写或最小稳定性
此问题发生是因为我们没有向composer告知我们想要使用的最小版本,要解决这个问题,只需在您的composer.json文件中添加以下行:
{ "minimum-stability": "dev" }
快速入门
克隆项目仓库
git clone https://github.com/nfephp-org/sped-gnre.git
进入示例文件夹
cd exemplos/
运行PHP内置服务器
php -S localhost:8181
在浏览器中输入以下URL
http://localhost:8181/gerar-xml.php
如果您想查看API使用的其他示例,请访问此链接 https://github.com/nfephp-org/sped-gnre/tree/master/exemplos