Guia para emitir NFCe com CSharp (ou C#) no seu software

Como emitir NFCe com a linguagem CSharp (ou C#)? Leia o nosso artigo e entenda o passo a passo!


O sistema fiscal brasileiro traz uma série de complexidades que desafiam o desenvolvimento de módulos nos sistemas financeiros.

São vários tributos e regras específicas que exigem conhecimentos adequados em suas configurações, tal como emitir NFCe com CSharp (ou C#).

Há uma série de etapas que o seu software precisa ser capaz de realizar, desde a emissão até a consulta da nota fiscal.

Elas exigem o conhecimento adequado para criar módulos capazes de realizar as ações com eficiência.

Os tributos das notas incluem benefícios fiscais, isenções e reduções de cálculos, regimes especiais, decretos, portarias e regulamentos.

Se não bastassem tantos aspectos, eles ainda são considerados em todos os níveis governamentais, que são representados pela União, pelos Estados e pelos mais de 5,5 mil municípios.

Há divergências também em relação aos tipos de serviços prestados, como os profissionais empregados de maneira formal e as pessoas jurídicas que não estão atreladas diretamente.

Muitas empresas lidam com valores colossais na tributação e precisam estar atentas em relação à sonegação, evitando problemas de compliance.

Todas essas questões contribuem para a dificuldade em emitir NFCe em CSharp. Mas como é possível preparar a API de notas fiscais nos sistemas da sua software house?

conheça a solução NFCee e da tecnospeed e automatize o seu sistema.

Entenda a linguagem C#

Para emitir NFCe em CSharp, você precisa entender como funciona a linguagem C#. Esse tipo de programação é orientada para objetos, tendo como base a linguagem C++ e elementos de Java e Pascal.

A ideia emsua criação era desprender a plataforma .NET de outras linguagens existentes que limitavam o seu desenvolvimento.

Assim, foi desenvolvida especificamente para essa plataforma, mas permite suporte a outras linguagens, como VB.NET, C++ e J+.

Isso porque há bibliotecas que permitem que as aplicações rodem em um ambiente CLR (Common Language Runtime). Uma vantagem do C# é que é uma forma de programação próxima do Java, mas com algumas diferenças mais nítidas.

Ao emitir NFCe com CSharp (ou C#), o módulo facilita implementar propriedades e sobrecarga de operadores e um módulo para manipular ponteiros e aritmética sem checagem, funções inexistes em Java. Além disso, o C# utiliza XML em vez de Javadoc.

Aprenda a emitir NFCe em CSharp

Existem 4 passos gerais para criar um módulo capaz de emitir NFCe com CSharp (ou C#). Veja a seguir um resumo dessas etapas!

1. Criação do XML

Para começar, você precisa saber gerar um arquivo XML corretamente. Para isso, é necessário aprender como pegar as informações necessárias.

Há um formato padrão de XML da Sefaz, mas não se preocupe.Essa é uma tarefa sem grandes segredos, já que o próprio site da NF-e disponibiliza um manual para seguir as orientações. Vale ressaltar que a estrutura do documento é bastante parecida para NF-e e NFC-e.

A Receita Federal também libera acesso aos schemas XML necessários para validar o arquivo pela linguagem C#.

2. Assinatura com certificado digital

O envio das notas à Sefaz requer a assinatura do XML. Para fazer isso, o sistema em C# precisa ser capaz de acessar os certificados digitais instalados no computador.

A manipulação pode ser feita por diferentes classes, que irão receber o arquivo e fazer a assinatura em si.

O certificado digital precisa ter o mesmo CNPJ do emissor. É possível fazer a assinatura pelo aplicativo AssinadorRS oficial da Fazenda ou por métodos como AssinarNota usado pelo componente da TecnoSpeed.

Esse método retorna o mesmo XML como parâmetro, com tags de assinatura no conteúdo. 

Na linguagem C#, usamos:

  • retorno = spdNFCe.AssinarNota(“Conteúdo do XML a ser Assinado”).

3. Implementação do cliente

Para o processamento das solicitações, é necessário ter um cliente com acesso a webservices SOAP. As instruções de implementação estão no manual da NF-e.

O processamento pode ser de forma síncrona, se o atendimento da solicitação ocorrer na mesma conexão, ou assíncrona, se for necessário mais de uma conexão para o resultado.

4. Retorno dos webservices

O último passo é tratar o retorno dos webservices. Se houver resposta positiva para a NFCe, basta atualizar o banco com as informações solicitadas, como o número de protocolo. Então, gere a impressão segundo o padrão.

Cuidados para emitir NFCe com CSharp (ou C#)

Para que esses passos sejam concluídos com êxito, há alguns cuidados a serem tomados. Você precisa conferir se está com todos os elementos necessários para o processo. A checagem inclui:

Como emitir NFCe em CSharp (C#) em poucos minutos

Quer tornar o seu sistema mais preparado para emitir NFCe com CSharp (ou C#) de forma rápida e prática? A API pronta da TecnoSpeed permite realizar essa ação em poucos minutos.

Uma vez que você se certifique de cumprir os requisitos listados nos cuidados, pode ir até a pasta de instalação do componente da NFCe. Copie tudo que estiver em “Arquivo” e troque o conteúdo da pasta de demonstração em “Bin\debug\” por eles.

Então, abra o  NFCeServidoresHom.ini e verifique a quantidade de blocos de servidores. Se houver três, é porque já há WebService para testes. Se não houver autorização para usar o ambiente de homologação da UF ou haver apenas dois blocos, você deve incluir ou substituir o terceiro bloco, de acordo com as URLs da UF em questão.

Após essa etapa, procure as seguintes linhas  no projeto da demonstração em C#:

  • NFCeDataSet.SetCampo(“dhEmi_B09=” + String.Format(“{0:yyyy-MM-ddTHH:mm:ss}”, DateTime.Now) + “-03:00”);                                        ‘Verifique se o fuso corresponde ao de sua UF.
  • NFCeDataSet.SetCampo(“cMunFG_B12=4115200”);       ‘Informe o código de seu municipio.
  • NFCeDataSet.SetCampo(“cMun_C10=4115200”);         ‘Informe o código de seu municipio.
  • NFCeDataSet.SetCampo(“xMun_C11=MARINGA”);         ‘Informe o nome de seu municipio.

Ao localizá-las, você deve adicionar as informações solicitadas. Quando se tratar do ambiente de testes de uma UF específica, também será necessário fazer alterações nas seguintes linhas:

  • NFCeDataSet.SetCampo(“cUF_B02=13”);                         ‘Informe o código de sua UF.
  • NFCeDataSet.SetCampo(“IE_C17=9044016688”);                  ‘Informe a IE do emitente.
  • NFCeDataSet.SetCampo(“CRT_C21=3”);                          ‘Informe 1 para simples nacional, 2 para simples nacional com excedente e 3 para normal.   

Salve e compile o projeto. Após a execução selecione o certificado ComboBox e clique em “Configurar Ini” para que o nome do certificado apareça na propriedade “NomeCertificado”.

Um arquivo irá se abrir. Nele, preencha os dados de CNPJ e UF e configura se Ambiente=2 e VersaoManual=5.0. Em caso positivo, você pode salvar e fechar. Na demonstração, clique em “Load Config” e as alterações serão carregadas no componente.

Por fim, clique em “2. Gerar Via DataSet” para converter os dados em XML, em “3. Assinar XML” E EM 4.2 Enviar Sincrono”. Recebendo a autorização da NFCe como retorno, a DANFCE estará pronta para ser visualizada, exportada e impressa.

Essas etapas são bastante simples e levam, em média, 10 minutos. Além disso, contar com uma API terceirizada tem a vantagem de focar os esforços da equipe em pontos mais estratégicos da sua ferramenta.

Se você quer que seu sistema possa emitir NFCe em CSharp (C#) de forma econômica e eficiente, conheça a nossa API de NFCe!

Formado em Comunicação em Multimeios. Analista de Marketing da TecnoSpeed, focado em produção de conteúdos para mídias digitais.

Artigos relacionados