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
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!!