Se você desenvolve em PHP e precisa descobrir como emitir NFC-e em PHP, este post tem as respostas que você procura!
Dentro do universo de SaaS e software houses, a elaboração de módulos fiscais para emissão de notas é um dos maiores desafios enfrentados pelos desenvolvedores, afinal, este é um produto conectado a um meio externo à programação e tecnologia, com diversas regras e que está sempre em atualização.
Se identifica com essa situação? A gente te entende! O mundo dos documentos digitais eletrônicos é realmente complexo, mas com este post vamos te ajudar a clarear algumas coisas, mais especificamente sobre a emissão de NFC-e com PHP.
Caso você trabalhe com essa linguagem na sua empresa e deseja configurar um software para emitir NFC-e, ou simplesmente, você queira adicionar essa habilidade no seu currículo, é só continuar a leitura!
Desafios para emitir NFC-e com PHP
O PHP é uma das linguagens mais populares quando o assunto é o desenvolvimento de aplicações Web e ERPs completos. Mesmo assim, precisamos dizer que o processo de configuração manual de um módulo de emissão de NFC-e está cheio de desafios, por diferentes motivos.
Primeiro, há a constante adição de novas normas técnicas na legislação referente à emissão de notas fiscais, o que significa, por consequência, a necessidade de manter os parâmetros do software sempre atualizados.
Segundo porque, além das atualizações gerais, cada estado e cidade possui regras específicas e, dependendo do cliente que você for atender, você precisará desenvolver uma configuração de parâmetros, logística e layout diferente e, para isso, estar por dentro dessas distinções.
E além disso, você vai precisar entender de Certificados Digitais, se preocupar com a comunicação do sistema com o web service da prefeitura, lidar com possíveis falhas, prestar um suporte específico aos seus clientes usuários do sistemas… a lista é longa!
Do que você vai precisar?
Apesar dos desafios e esforços que esse processo envolve, ele não é impossível. Mas para colocá-lo em prática você vai precisar providenciar algumas coisas.
Uma delas é um Certificado Digital A1 válido, pois, assim como no processo de emissão de NF-e, é por meio dessa tecnologia que a autenticação e assinatura do titular é feita e, também, esse modelo fica instalado no computador, podendo ser acessado via JSON.
Além disso, o CNPJ precisa ter uma autorização de uso junto à SEFAZ, para poder emitir documentos fiscais de forma eletrônica, e, em alguns estados, também é necessário cadastrar o seu software no sistema na SEFAZ para a liberação.
Outra coisa que pode ser útil é trabalhar com um framework configurado com as regras do SPED. E então, você vai precisar criar uma pasta para o projeto e iniciar a montagem do XML de emissão da NFC-e.
Emissão de NFC-e em PHP passo a passo
Partindo para o processo de emissão da NFC-e em si, o passo a passo contempla 4 etapas de forma geral: a montagem do XML, a assinatura do arquivo; o envio para a Receita; e a finalização e armazenamento do protocolo. Vamos agora entender melhor sobre cada uma delas:
1. Montagem do XML
Você vai criar um arquivo index.php dentro do seu projeto e iniciar a escrita do código. Para isso, você vai precisar configurar e preencher os campos específicos para permitir a emissão da NFC-e.
De forma geral, esses campos são bem similares aos demandados para a emissão de NF-e com PHP, com algumas adições e exceções, como o de “Data e hora de Saída ou da Entrada da Mercadoria/Produto” que não deve ser informado na NFC-e e é obrigatório na NF-e, e o de “Razão Social ou nome do destinatário”, que é de preenchimento opcional.
Para abordar todos os campos aqui precisaríamos de muitas palavras e minutos da sua atenção, mas para conferir todos eles, os materiais de consulta oficiais são o Manual do Contribuinte e o Anexo I – Leiaute e Regras de Validação da NF-e e da NFC-e, além de um suporte de um contador ou contadora também ser útil nessa etapa.
2. Assinatura do arquivo
Para a assinatura digital do arquivo, como já dissemos, é necessário utilizar um Certificado A1. Para colocar essa etapa para rodar dentro da linguagem do PHP, você vai precisar criar uma variável em JSON com os dados para os próximos passos, incluindo o acesso e validação do certificado para a assinatura do arquivo da nota.
3. Envio para a Receita
Aqui, você precisará da $configJson, $certificadoDigital e do XML assinanado. Também terá que configurar o envio para permitir somente um ou mais XML por vez e fazer a integração do sistema com os portais da SEFAZ.
Para conferir todas as especificações e critérios técnicos para essa integração, você pode consultar o Manual de Integração do Contribuinte. Além disso, depois de realizar os envios, o seu sistema precisará retornar o status da nota, o que demanda o desenvolvimento de uma variável com este fim.
4. Finalização e armazenamento do protocolo
Depois de enviar a nota e ela ser autorizada pela SEFAZ, o trabalho ainda não acabou. Você precisará configurar o armazenamento do protocolo dentro do XML na nota, usando a variável do XML assinado e do protocolo, criada para a verificação do status da nota, e criar um arquivo XML em disco para manter essa nota guardada pelos 5 anos exigidos pela Receita.
Fora esses procedimentos básicos, ainda será preciso preparar seu software para dar conta de outras variáveis desse processo, como regras para NFC-e de Contingência, cancelamento, substituição de nota e atualizações. Ufa, um desafio e tanto!
Aqui separamos um material sobre como levar a integração NFC-e no seu software com a TecnoSpeed.
Como emitir NFC-e em PHP rápido e fácil
É realmente complicado compilar em um post todas as informações, regras e detalhes que a emissão de NFC-e e outros documentos fiscais eletrônicos envolve, seja em PHP ou em qualquer outra linguagem.
No entanto, melhor do que focar no problema e nas dificuldades, é investir na solução, que, por sinal, nós temos para te oferecer! Somos a Casa do Desenvolvedor, lembra? E foi pensando nesse mega desafio que diversos desenvolvedores enfrentam que nós desenvolvemos a NFC-e TecnoSpeed.
NFC-e TecnoSpeed
A NFC-e TecnoSpeed é uma solução fiscal pronta para ser integrada aos seus sistemas, seja via Componente ou via API, que vai te fazer economizar 70% de tempo na implementação do seu módulo NFC-e!
Além disso, ao adotar esse módulo, os seus softwares vão estar sempre atualizados e você não vai precisar se preocupar com legislações, regras fiscais e todos esses detalhes que não são o seu foco de trabalho e conhecimento.
E ele também automatiza as etapas que listamos ali em cima, sendo necessário apenas inserir os dados para a emissão e depois realizar a impressão e envio da DANFE ao consumidor.
De forma visual, o funcionamento da NFC-e TecnoSpeed fica assim:
Ou seja, essa é a melhor solução para implementar a emissão de NFC-e no seu software PHP e evitar todas as burocracias, estudos, atualizações e dores de cabeça que esse processo pode envolver. Então vem ser nosso parceiro!