友好的br / nfse-ssa
萨尔瓦多-BA的电子服务发票(NFS-e)发行
Requires
- robrichards/xmlseclibs: ^3.0
This package is not auto-updated.
Last update: 2024-09-28 18:31:57 UTC
README
介绍
NfseSsa是一个Laravel包,提供在萨尔瓦多-BA发行电子服务发票(NFS-e)的接口。
安装Laravel 5.x
通过composer安装此包
composer require potelo/nfse-ssa
如果您不使用自动发现,请将ServiceProvider添加到config/app.php
Potelo\NfseSsa\NfseSsaServiceProvider::class,
生成证书文件
您应该已经收到一个扩展名为 您应该保存生成的两个文件,priv.pem和public.pem。 使用publish命令将包的配置文件复制到您的本地环境 将在config文件夹中创建一个nfse-ssa.php文件,您必须编辑它并放置生成的两个文件的路径。 在您的env中添加变量 只有在将生产时才将此变量更改为false。 在开发时,使用测试环境Web面板释放登记和发票发行是至关重要的: https://notahml.salvador.ba.gov.br/ 使用此面板跟踪发票是否正确生成。在此面板上的登记需要批准,通过电话联系市政府可以激活登记。 常见问题解答:https://nfse.sefaz.salvador.ba.gov.br/OnLine/Institucional/FaqTecnologia.aspx 要生成发票,我们需要向市政府的API发送一个RPS,它会自动从它生成一个发票。我们在Controller的方法中通过依赖注入实例化NfseSsa对象,并通过enviarLoteRps方法发送RPS 如果生成成功,则result->getData()方法将获得协议号,它将在其他查询中使用。 成功返回示例 错误返回示例 注意:包中每批仅发送1个RPS。 通过consultarSituacaoLoteRps方法查询 成功返回示例 通过consultarNfseRps方法查询从RPS生成的发票openssl pkcs12 -in Certificado.pfx -out priv.pem -nodes
openssl pkcs12 -in Certificado.pfx -clcerts -nokeys -out public.pem
配置
php artisan vendor:publish --provider="Potelo\NfseSsa\NfseSsaServiceProvider"
'homologacao' => env('NFSESSA_HOMOLOGACAO', true),
'certificado_privado_path' => storage_path('app/priv.pem'),
'certificado_publico_path' => storage_path('app/public.pem'),
NFSESSA_HOMOLOGACAO=true
服务收据(RPS)的发行
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use Congenialbr\NfseSsa\NfseSsa;
class Controller extends BaseController{
public function enviarRPS(NfseSsa $nfsa)
{
// ou $nfsa = app(NfseSsa::class);
$result = $nfsa->enviarLoteRps([
'numero_lote' => 1,
'id' => '001',
'cnpj' => '50453974000107',
'inscricao_municipal' => '51515151515',
'rps' => [
'id' => 'rpsId001',
'identificacao' => [
'numero' => 1,
'serie' => 'A',
'tipo' => 1 // 1 - RPS, 2 – Nota Fiscal Conjugada (Mista), 3 – Cupom
],
'data_emissao' => '2018-08-01T16:45:14',
'natureza_operacao' => 1,
/* Código de natureza da operação
1 – Tributação no município
2 - Tributação fora do município
3 - Isenção
4 - Imune
5 –Exigibilidade suspensa por decisão judicial
6 – Exigibilidade */
'regime_especial_tributacao' => 1,
/* Código de identificação do regime especial de
tributação
1 – Microempresa municipal
2 - Estimativa
3 – Sociedade de profissionais
4 – Cooperativa
5 - Microempresário Individual (MEI)
6 - Microempresário e Empresa de Pequeno Porte
(ME EPP) */
'optante_simples_nacional' => 1, // 1 - Sim, 2 - Não
'incentivador_cultural' => 2, // 1 - Sim, 2 - Não
'status' => 1, // 1 - Normal, 2 - Cancelado
'servico' => [
'valores' => [
'valor_servicos' => 340.26,
'valor_deducoes' => 0,
'valor_pis' => 0,
'valor_cofins' => 0,
'valor_ir' => 0,
'valor_csll' => 0,
'iss_retido' => 1, // 1 - Sim, 2 - Não
'valor_iss' => 6.81,
'valor_iss_retido' => 6.81,
'outras_retencoes' => 0,
'base_calculo' => 340.26,
'aliquota' => 0.02,
'valor_liquido_nfse' => 3345.45,
'desconto_incondicionado' => 0,
'desconto_condicionado' => 0,
],
'item_lista_servico' => 1001,
'codigo_cnae' => 6622300,
'discriminacao' => 'vendas de seguro',
'codigo_municipio' => 2927408,
'codigo_tributacao_municipio' => '0103001'
],
'prestador' => [
'cnpj' => '50453974000107',
'inscricao_municipal' => '51515151515',
],
'tomador' => [
'identificacao_tomador' => [
'cpf_cnpj' => [
'cnpj' => '48109110000899',
// 'cpf' => null // OU CPF
],
'inscricao_municipal' => '51559500163',
],
'razao_social' => 'RAZAO SOCIAL DO CLIENTE S/A',
'endereco' => [
'endereco' => 'R MANOEL DIAS DA SILVA',
'numero' => '1515',
'bairro' => 'PITUBA',
'codigo_municipio' => 2927408,
'uf' => 'BA',
'cep' => '41000000',
],
'contato' => [
'telefone' => '71999999999',
'email' => 'email@gmail.com'
]
]
]
]);
// Sucesso
if ($result->getStatus()) {
return $result->getData();
}
return $result->getErrors();
}
}
{
NumeroLote: "1",
DataRecebimento: "01/08/2018 17:38:35",
Protocolo: "41512"
}
[
{
codigo: "E10",
mensagem: "RPS já informado. ",
correcao: "Para essa Inscrição Municipal/CNPJ já existe um RPS informado com o mesmo número, série e tipo."
}
]
查询
查询发送的RPS批次的状况
public function consultarSituacaoLoteRps(NfseSsa $nfsa)
{
$result = $nfsa->consultarSituacaoLoteRps([
'prestador' => [
'cnpj' => '50453974000107',
'inscricao_municipal' => '51515151515'
],
'protocolo' => '41111'
]);
// Sucesso
if ($result->getStatus()) {
return $result->getData();
}
return $result->getErrors();
}
{
NumeroLote: "1",
Situacao: "4" // 1 – Não Recebido, 2 – Não Processado, 3 – Processado com Erro, 4 – Processado com Sucesso
}
通过RPS查询发票
public function consultarNfseRps(NfseSsa $nfsa)
{
$result = $nfsa->consultarNfseRps([
'prestador' => [
'cnpj' => '50453974000107',
'inscricao_municipal' => '51515151515'
],
'identificacao_rps' => [
'numero' => 1,
'serie' => 'A',
'tipo' => 1
]
]);
// Sucesso
if ($result->getStatus()) {
return $result->getData();
}
return $result->getErrors();
}
查询发票
public function consultarNfse(NfseSsa $nfsa)
{
$result = $nfsa->consultarNfse([
'prestador' => [
'cnpj' => '50453974000107',
'inscricao_municipal' => '51515151515'
],
'numero_nfse' => 1, // opcional
'periodo_emissao' => [
'data_inicial' => '2018-01-01',
'data_final' => '2018-08-01',
]
]);
// Sucesso
if ($result->getStatus()) {
return $result->getData();
}
return $result->getErrors();
}