Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Geração de Nota Fiscal Eletrônica Com C#

$
0
0

Boa tarde pessoal, 

 

Estou criando um software em c# que deverá emitir nota fiscal eletrônica. Já estudei bastante sobre o tema, fiz diversos testes porém estou com o seguite problema: " Could not establish secure channel for SSL/TLS with authority 'hnfe.fazenda.mg.gov.br'  ".

 

Sei que a tendência é achar que eu ainda não estudei sobre o assunto, porque geralmente este é o primeiro erro que acontece quanto tentamos consumir o WebService por causa da falta de certificado. Infelizmente este não é o meu caso. Abaixo uma descrição dos passos que já fiz:

 

1- Consegui e instalei no meu computador um certificado digital válido, do tipo A1.

 

2- Gerei um XML válido para a NFE. Para validar o xml eu utilizei um site que avalia e te mostra campos faltantes ou com dados inválidos. O site é o do link a seguir: http://validadornfe.tecnospeed.com.br/

 

3- Adicionei um Service Reference ao meu projeto com o link de homologação para geração de NFE do estado de Minas Gerais:

    https://hnfe.fazenda.mg.gov.br/nfe2/services/RecepcaoEvento?wsdl

 

4- Criei uma assinatura digital para meu xml e validei o documento com assinatura no site          

                  https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATBHE/Assinadoc/ValidadorAssinaturas.app/valida.aspx,

   após carregar o meu xml o site me dá a seguinte mensagem: A assinatura digital do documento fornecido é válida. 

 

5- Criei um método para enviar a nfe, estou anexando abaixo o código bem comentado alguém pode me ajudar por favor a identificar onde eu estou errando? 

 private void btEnviar_Click(object sender, EventArgs e)
        {

            //declara o objesto xml
            System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();

            //Classe usada para buscar o certificado digital
            var geraxml = new Teste.cGeraXML();

            //Retorna o certificado após exibir uma tela para que o usuário selecione o mesmo
            X509Certificate2 certificado = geraxml.BuscaNome("");

            //Carrega o xml
            xmldoc.Load("c:\\xml\\myXmFile_Assinado.xml");

            //Busca o nó enviNFe 
            var obj_nodeenviNFE = xmldoc.GetElementsByTagName("enviNFe");

            //Cria o objeto do cabeçalho
            var obj_cabecalho = new ServiceHomologacao.nfeCabecMsg();

            //Atribui os valores
            obj_cabecalho.cUF = "31";
            obj_cabecalho.versaoDados = "2.00";

            //Cria o objeto do webservice de envio
            var objService = new ServiceHomologacao.RecepcaoEventoSoap12Client();


            //Atribui o certificado, não sei se este passo deve ser feito, já que 
            //o documento está assinado. Desconfio sériamente que o erro esteja aqui, 
            //porém não faço idéia de como atribuir este certificado ao objeto do service
            //reference
            objService.ClientCredentials.ClientCertificate.Certificate =certificado;

            //Envia os dados
            objService.nfeRecepcaoEvento(ref obj_cabecalho, obj_nodeenviNFE[0]);     



        }

Se alguém conhece de NFE, me ajudem por favor. Já estou meio que desesperado com isso. Obrigado!!

 

 


Viewing all articles
Browse latest Browse all 14190