Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
estou usando o VB.net para desenvolver uma dll COM que resolve a questão da Nota Fiscal Eletrônica,
mas ta difícil. Cheguei no certificado A3 e empaquei, não consigo seguir adiante. Já fiz TUDO referente
ao envio e assinatura com certificado A1, mas e o A3 alguém pode me ajudar?
Procurei muito na net mas não acho nada a respeito, no máximo, consigo links que apontam para um blog
nf-eletronica.com/blog, onde os caras disponibilizam um acódigo C# que não faz nada além do meu (segundo
a minha revisão)
existe algum link onde fala sobre isso que alguém saiba, como assinar o codigo?
meu código é o seguinte:
'
' É necessário referencia aos namespaces System.Security e System.Web.Services
'
Imports System.Xml
Imports System.Security.Cryptography.Xml
Imports System.Security.Cryptography.X509Certificates
Namespace MyNFe
<ComClass(Init.ClassId, Init.InterfaceId, Init.EventsId)> _
Public Class Init
#Region "COM GUIDs"
Public Const ClassId As String = "5c506b5b-5b3d-4bd2-bc64-2502c4716324"
Public Const InterfaceId As String = "a242b6b8-f82a-4972-84fc-741f44edb85b"
Public Const EventsId As String = "2dfb5b2e-e831-4faa-b226-8d9a76eedae8"
#End Region
Private vWebServiceXMLResponse As String
Private vWebServiceTpAmbResponse As String
Private vWebServiceVerAplicResponse As String
Private vWebServiceCStatResponse As String
Private vWebServiceXMotivoResponse As String
Private vWebServiceCUFResponse As String
Private vWebServiceNRecResponse As String
Private vWebServiceDhRecbtoResponse As String
Private vWebServiceTMedResponse As String
Private vWebServiceXObsResponse As String
Private vDocumentType As String
Private vOutRefURI As String
Private vRefURI As String
Private vCabecMsg As String
Private vSubjectCertificate As String
'
' Grava o XML de resposta do webservice da Sefaz
'
Private WriteOnly Property WebServiceXMLResponse() As String
Set(ByVal value As String)
If (String.IsNullOrEmpty(value) = False) Then
Me.vWebServiceXMLResponse = value
End If
Dim documentoXML As New XmlDocument
Dim tpAmbList, verAplicList, cStatList, xMotivoList, cUFList, nRecList, dhRecbtoList, tMedList, xObsList As XmlNodeList
documentoXML.LoadXml(value)
cUFList = documentoXML.GetElementsByTagName("cUF")
nRecList = documentoXML.GetElementsByTagName("nRec")
tMedList = documentoXML.GetElementsByTagName("tMed")
xObsList = documentoXML.GetElementsByTagName("xObs")
tpAmbList = documentoXML.GetElementsByTagName("tpAmb")
cStatList = documentoXML.GetElementsByTagName("cStat")
xMotivoList = documentoXML.GetElementsByTagName("xMotivo")
verAplicList = documentoXML.GetElementsByTagName("verAplic")
dhRecbtoList = documentoXML.GetElementsByTagName("dhRecbto")
If (tpAmbList.Count <> 0) Then
Me.vWebServiceTpAmbResponse = tpAmbList(0).InnerText
Else
Me.vWebServiceTpAmbResponse = ""
End If
If (verAplicList.Count <> 0) Then
Me.vWebServiceVerAplicResponse = verAplicList(0).InnerText
Else
Me.vWebServiceVerAplicResponse = ""
End If
If (cStatList.Count <> 0) Then
Me.vWebServiceCStatResponse = cStatList(0).InnerText
Else
Me.vWebServiceCStatResponse = ""
End If
If (xMotivoList.Count <> 0) Then
Me.vWebServiceXMotivoResponse = xMotivoList(0).InnerText
Else
Me.vWebServiceXMotivoResponse = ""
End If
If (cUFList.Count <> 0) Then
Me.vWebServiceCUFResponse = cUFList(0).InnerText
Else
Me.vWebServiceCUFResponse = ""
End If
If (nRecList.Count <> 0) Then
Me.vWebServiceNRecResponse = nRecList(0).InnerText
Else
Me.vWebServiceNRecResponse = ""
End If
If (dhRecbtoList.Count <> 0) Then
Me.vWebServiceDhRecbtoResponse = dhRecbtoList(0).InnerText
Else
Me.vWebServiceDhRecbtoResponse = ""
End If
If (tMedList.Count <> 0) Then
Me.vWebServiceTMedResponse = tMedList(0).InnerText
Else
Me.vWebServiceTMedResponse = ""
End If
If (xObsList.Count <> 0) Then
Me.vWebServiceXObsResponse = xObsList(0).InnerText
Else
Me.vWebServiceXObsResponse = ""
End If
End Set
End Property
'
' Retorna o XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPOSTAWEBSERVICEXML() As String
Get
Return Me.vWebServiceXMLResponse
End Get
End Property
'
' Retorna o valor da tag tpAmb do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPTIPOAMBIENTE() As String
Get
Return Me.vWebServiceTpAmbResponse
End Get
End Property
'
' Retorna o valor da tag verAplic do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPWEBSERVICEVERSAO() As String
Get
Return Me.vWebServiceVerAplicResponse
End Get
End Property
'
' Retorna o valor da tag cStat do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPCODIGOMENSAGEM() As String
Get
Return Me.vWebServiceCStatResponse
End Get
End Property
'
' Retorna o valor da tag xMotivo do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPMENSAGEM() As String
Get
Return Me.vWebServiceXMotivoResponse
End Get
End Property
'
' Retorna o valor da tag cUF do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPCODIGOUF() As String
Get
Return Me.vWebServiceCUFResponse
End Get
End Property
'
' Retorna o valor da tag nRec do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPNUMERORECIBO() As String
Get
Return Me.vWebServiceNRecResponse
End Get
End Property
'
' Retorna o valor da tag dhRecbto do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPDATAHORARECEBIMENTO() As String
Get
Return Me.vWebServiceDhRecbtoResponse
End Get
End Property
'
' Retorna o valor da tag tMed do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPTEMPOMEDIO() As String
Get
Return Me.vWebServiceTMedResponse
End Get
End Property
'
' Retorna o valor da tag xObs do XML de resposta do webservice da Sefaz
'
Public ReadOnly Property RESPOBSERVACOES() As String
Get
Return Me.vWebServiceXObsResponse
End Get
End Property
'
' Alias para SubjectCertificate para manter
' Compatibilidade com o EMPRESA
'
Public Property NOMECERTIFICADO() As String
Get
Return Me.SubjectCertificate
End Get
Set(ByVal value As String)
Me.SubjectCertificate = value
End Set
End Property
'
' Referente ao assunto do certificado (Subject)
' Usando esse valor, não é necessário abrir a janela
' do repositório MY do Windows para o usuário, toda vez
' que for requerido um certificado digital
'
Private Property SubjectCertificate() As String
Get
Return Me.vSubjectCertificate
End Get
Set(ByVal value As String)
Me.vSubjectCertificate = value
End Set
End Property
'
' Referente ao tipo de documento a ser enviado à SEFAZ
' exemplo: NfeRecepcao (Nota Fiscal Eletrônica)
'
Private Property DocumentType() As String
Get
Return Me.vDocumentType
End Get
Set(ByVal value As String)
value = RTrim(value)
Select Case value
Case "NfeRecepcao"
Me.RefURI = "infNFe"
Me.OutRefURI = "NFe"
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.10</versaoDados></cabecMsg>"
Case "NfeRetRecepcao"
Me.RefURI = "" ' Não é necessário para esse serviço
Me.OutRefURI = "" ' Não é necessário para esse serviço
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.10</versaoDados></cabecMsg>"
Case "NfeCancelamento"
Me.RefURI = "infCanc"
Me.OutRefURI = "infNFe"
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.07</versaoDados></cabecMsg>"
Case "NfeInutilizacao"
Me.RefURI = "infInut"
Me.OutRefURI = "infNFe"
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.07</versaoDados></cabecMsg>"
Case "NfeConsultaNF"
Me.RefURI = "" ' Não é necessário para esse serviço
Me.OutRefURI = "" ' Não é necessário para esse serviço
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.07</versaoDados></cabecMsg>"
Case "NfeStatusServico"
Me.RefURI = "infProt"
Me.OutRefURI = "infNFe"
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.07</versaoDados></cabecMsg>"
Case Else
Me.RefURI = "infNFe"
Me.OutRefURI = "NFe"
Me.CabecMsg = "<?xml version=""1.0"" encoding=""UTF-8""?><cabecMsg xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.02""><versaoDados>1.10</versaoDados></cabecMsg>"
End Select
Me.vDocumentType = value
End Set
End Property
'
' Obs.: as propriedades abaixo não devem ser chamadas manualmente
' pois seus valores são setados automaticamente de acordo com o
' tipo de documento a ser enviado à sefaz.
'
'
' Referente à tag do documento XML que deve ser assinada.
' exemplo.: infNFe
'
Private Property RefURI() As String
Get
Return Me.vRefURI
End Get
Set(ByVal value As String)
Me.vRefURI = value
End Set
End Property
'
' Referente à pai da tag do documento XML que deve ser assinada.
' exemplo.: NFe
' Util para assinatura de lotes de notas fiscais
'
Private Property OutRefURI() As String
Get
Return Me.vOutRefURI
End Get
Set(ByVal value As String)
Me.vOutRefURI = value
End Set
End Property
'
' Referente ao cabeçalho XML que deve ser enviado junto ao documento XML
' para validação do documento XML pela sefaz de acordo com a sua versão
'
Private Property CabecMsg() As String
Get
Return Me.vCabecMsg
End Get
Set(ByVal value As String)
Me.vCabecMsg = value
End Set
End Property
'
' Construtor obrigatório para Classes COM
'
Public Sub New()
MyBase.New()
Me.SubjectCertificate = ""
End Sub
'
' Envelopa uma mensagem de erro em um documento xml
' Estrutura da mensagem:
' <?xml version="1.0" encoding="UTF-8"?><error><message>Message</message></error>
'
Private Function ExceptionXML(ByVal Message As String) As XmlDocument
Dim EXML As New XmlDocument
Dim EXMLDeclare As XmlDeclaration
Dim EXMLError As XmlNode
Dim EXMLMessage As XmlNode
Dim EXMLMessageText As XmlText
EXMLDeclare = EXML.CreateXmlDeclaration("1.0", "UTF-8", "")
EXMLError = EXML.CreateElement("error")
EXMLMessage = EXML.CreateElement("message")
EXMLMessageText = EXML.CreateTextNode(Message)
EXML.AppendChild(EXMLDeclare)
EXMLMessage.AppendChild(EXMLMessageText)
EXMLError.AppendChild(EXMLMessage)
EXML.AppendChild(EXMLError)
Return EXML
End Function
'
' Pega o certificado digital relativo à Subject, ou caso
' Subject seja vazio, abre o repositório MY do windows para
' Seleção de certificado
'
Private Function GetCertificate(Optional ByVal Subject As String = "") As X509Certificate2
Dim Certificate As New X509Certificate2
Try
Dim store As New X509Store(StoreName.My, StoreLocation.CurrentUser)
store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)
Dim collection As X509Certificate2Collection = store.Certificates
Dim collection1 As X509Certificate2Collection = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False)
Dim collection2 As X509Certificate2Collection = collection1.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, False)
If (Subject = "") Then
Dim scollection As X509Certificate2Collection = X509Certificate2UI.SelectFromCollection(collection2, "Certificado(s) Digital(is) disponível(is)", "Selecione o Certificado Digital para uso no aplicativo", X509SelectionFlag.SingleSelection)
If (scollection.Count = 0) Then
Certificate.Reset()
Else
Certificate = scollection(0)
End If
Else
Dim scollection As X509Certificate2Collection = collection2.Find(X509FindType.FindBySubjectDistinguishedName, Subject, False)
If (scollection.Count = 0) Then
Certificate.Reset()
Else
Certificate = scollection(0)
End If
End If
store.Close()
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
Return Certificate
End Function
'
' Abre o repositório MY do Windows para pegar o
' assunto do certificado digital selecionado.
'
Private Function GetCertificateSubject() As String
Dim Certificate As New X509Certificate2
Try
Certificate = Me.GetCertificate()
Return Certificate.Subject
Catch ex As Exception
Return ex.Message
End Try
End Function
'
' Alias para GetCertificateSubject.
' Para manter a compatibilidade com o EMPRESA.
'
Public Function PEGANOMECERTIFICADO() As String
Return Me.GetCertificateSubject
End Function
'
' Assina um documento XML do tipo XmlDocument (por referencia)
'
Private Function XMLAssign(ByRef DXML As XmlDocument, ByVal RefURI As String, ByVal OutRefURI As String, ByVal Certificate As X509Certificate2) As Boolean
Dim KeyAlgorithm As String
Dim env As New XmlDsigEnvelopedSignatureTransform
Dim c14 As New XmlDsigC14NTransform
Dim KeyInfo As New KeyInfo
Dim RefURICollection As Object 'XmlNodeList
Dim RefURICollectionItem As XmlElement
Dim QtdRefURI As Integer
Try
RefURICollection = DXML.GetElementsByTagName(OutRefURI)
KeyAlgorithm = Certificate.GetKeyAlgorithm().ToString()
DXML.PreserveWhitespace = True
For I As Integer = RefURICollection.Count - 1 To 0 Step -1
RefURICollectionItem = CType(RefURICollection(I), XmlElement)
QtdRefURI = RefURICollectionItem.GetElementsByTagName(RefURI).Count
If (QtdRefURI = 1) Then
Dim SignedXml As New SignedXml(RefURICollectionItem)
Dim ElementRefURI As XmlAttributeCollection = RefURICollection(I).GetElementsByTagName(RefURI).Item(0).Attributes
Dim Reference As New Reference
SignedXml.SigningKey = Certificate.PrivateKey
For Each Attribute As XmlAttribute In ElementRefURI
If (Attribute.Name = "Id") Then
Reference.Uri = "#" & Attribute.InnerText
End If
Next
Reference.AddTransform(env)
Reference.AddTransform(c14)
SignedXml.AddReference(Reference)
KeyInfo.AddClause(New KeyInfoX509Data(Certificate))
SignedXml.KeyInfo = KeyInfo
SignedXml.ComputeSignature()
RefURICollectionItem.AppendChild(SignedXml.GetXml)
Else
Throw New Exception("Deve existir exatamente uma RefURI para cada OutRefURI. Foram encontradas " & QtdRefURI & " Ocorrências em uma OutRefURI")
End If
Next I
Return True
Catch ex As Exception
Return False
End Try
End Function
'
' Assina um arquivo XML gravado no disco
'
Private Function XMLFileAssign(ByVal FilePath As String, ByVal RefURI As String, ByVal OutRefURI As String, ByVal Certificate As X509Certificate2) As Boolean
Dim GetXML As New XmlDocument
GetXML.Load(FilePath)
If (XMLAssign(GetXML, RefURI, OutRefURI, Certificate) = True) Then
GetXML.Save(FilePath)
Return True
Else
Return False
End If
End Function
'
' Envia um documento XML para a Sefaz
'
Private Function XMLSend(ByVal DXML As XmlDocument, ByVal WebServiceURL As String, ByVal Certificate As X509Certificate2) As XmlDocument
'Seta as variaveis de acordo com os respectivos valores das propriedades
Dim SefazWebService As String = Me.DocumentType
'Cria um objeto de envio
Dim RetornoWebService As New Envio
Dim SefazWebServiceResponse As New XmlDocument
'Seta o endereço do web service
RetornoWebService.Url = WebServiceURL
'Assina a conexão
RetornoWebService.ClientCertificates.Add(Me.GetCertificate(Me.SubjectCertificate))
'Retorno do Webservice
Select Case SefazWebService
Case "NfeRecepcao"
SefazWebServiceResponse.LoadXml(RetornoWebService.nfeRecepcaoLote(Me.CabecMsg, DXML.OuterXml))
Case "NfeRetRecepcao"
SefazWebServiceResponse.LoadXml(RetornoWebService.nfeRetRecepcao(Me.CabecMsg, DXML.OuterXml))
Case "NfeCancelamento"
SefazWebServiceResponse.LoadXml(RetornoWebService.nfeCancelamentoNF(Me.CabecMsg, DXML.OuterXml))
Case "NfeInutilizacao"
SefazWebServiceResponse.LoadXml(RetornoWebService.nfeInutilizacaoNF(Me.CabecMsg, DXML.OuterXml))
Case "NfeConsultaNF"
SefazWebServiceResponse.LoadXml(RetornoWebService.nfeConsultaNF(Me.CabecMsg, DXML.OuterXml))
Case "NfeStatusServico"
SefazWebServiceResponse.LoadXml(RetornoWebService.nfeStatusServicoNF(Me.CabecMsg, DXML.OuterXml))
Case Else
SefazWebServiceResponse = Me.ExceptionXML("_WEBSERVICE (" & Trim(SefazWebService) & ") não reconhecido")
End Select
Return SefazWebServiceResponse
End Function
'
' Assina e envia um arquivo para a sefaz
'
Public Function XML_ENVIA(ByVal CAMINHOARQUIVO As String, ByVal TIPOARQUIVO As String, ByVal URLWEBSERVICE As String) As Boolean
Dim DXML As New XmlDocument
DXML.PreserveWhitespace = True
Me.DocumentType = TIPOARQUIVO
If (Me.XMLFileAssign(CAMINHOARQUIVO, Me.RefURI, Me.OutRefURI, Me.GetCertificate(Me.SubjectCertificate)) = True) Then
DXML.Load(CAMINHOARQUIVO)
Me.WebServiceXMLResponse = Me.XMLSend(DXML, URLWEBSERVICE, Me.GetCertificate(Me.SubjectCertificate)).OuterXml
Return True
Else
Return False
End If
End Function
'
' Busca resposta do WebService relacionada a um
' envio anterior de nota fiscal.
'
Public Function BUSCARETORNO(ByVal NRORECIBO As String, ByVal TIPOAMBIENTE As Integer, ByVal URLWEBSERVICE As String) As Boolean
Dim DXML As New XmlDocument
Me.DocumentType = "NfeRetRecepcao"
DXML.LoadXml("<?xml version=""1.0"" encoding=""UTF-8""?><consReciNFe xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.10""><tpAmb>" & TIPOAMBIENTE & "</tpAmb><nRec>" & NRORECIBO & "</nRec></consReciNFe>")
Me.WebServiceXMLResponse = Me.XMLSend(DXML, URLWEBSERVICE, Me.GetCertificate(Me.SubjectCertificate)).OuterXml
End Function
'
' Consulta status de uma nota fiscal.
'
Public Function CONSULTANF(ByVal CHAVEACESSO As String, ByVal TIPOAMBIENTE As Integer, ByVal URLWEBSERVICE As String) As Boolean
Dim DXML As New XmlDocument
Me.DocumentType = "NfeConsultaNF"
DXML.LoadXml("<?xml version=""1.0"" encoding=""UTF-8""?><consSitNFe xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.07""><tpAmb>" & TIPOAMBIENTE & "</tpAmb><xServ>CONSULTAR</xServ><chNFe>" & CHAVEACESSO & "</chNFe></consSitNFe>")
Me.WebServiceXMLResponse = Me.XMLSend(DXML, URLWEBSERVICE, Me.GetCertificate(Me.SubjectCertificate)).OuterXml
End Function
'
' Consulta status do serviço.
'
Public Function CONSULTASTATUSSERVICO(ByVal CUF As String, ByVal TIPOAMBIENTE As Integer, ByVal URLWEBSERVICE As String) As Boolean
Dim DXML As New XmlDocument
Me.DocumentType = "NfeStatusServico"
DXML.LoadXml("<?xml version=""1.0"" encoding=""UTF-8""?><consStatServ xmlns=""[http://www.portalfiscal.inf.br/nfe""](http://www.portalfiscal.inf.br/nfe) versao=""1.07""><tpAmb>" & TIPOAMBIENTE & "</tpAmb><cUF>" & CUF & "</cUF><xServ>STATUS</xServ></consStatServ>")
Me.WebServiceXMLResponse = Me.XMLSend(DXML, URLWEBSERVICE, Me.GetCertificate(Me.SubjectCertificate)).OuterXml
End Function
End Class
'
' Classe utilizada para envio dos documentos XML à sefaz
'
<System.Web.Services.WebServiceBindingAttribute()> _
Class Envio
Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
<System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao",'>[http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao), ResponseNamespace:="[http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao))> _
Public Function nfeRecepcaoLote(ByVal nfeCabecMsg As String, ByVal nfeDadosMsg As String) As String
Dim results() As Object = Me.Invoke("nfeRecepcaoLote", New Object() {nfeCabecMsg, nfeDadosMsg})
Return results(0)
End Function
<System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao",'>[http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao), ResponseNamespace:="[http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao))> _
Public Function nfeRetRecepcao(ByVal nfeCabecMsg As String, ByVal nfeDadosMsg As String) As String
Dim results() As Object = Me.Invoke("nfeRetRecepcao", New Object() {nfeCabecMsg, nfeDadosMsg})
Return results(0)
End Function
<System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento",'>[http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento), ResponseNamespace:="[http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento))> _
Public Function nfeCancelamentoNF(ByVal nfeCabecMsg As String, ByVal nfeDadosMsg As String) As String
Dim results() As Object = Me.Invoke("nfeCancelamentoNF", New Object() {nfeCabecMsg, nfeDadosMsg})
Return results(0)
End Function
<System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao",'>[http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao), ResponseNamespace:="[http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao))> _
Public Function nfeInutilizacaoNF(ByVal nfeCabecMsg As String, ByVal nfeDadosMsg As String) As String
Dim results() As Object = Me.Invoke("nfeInutilizacaoNF", New Object() {nfeCabecMsg, nfeDadosMsg})
Return results(0)
End Function
<System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta",'>[http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta), ResponseNamespace:="[http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta))> _
Public Function nfeConsultaNF(ByVal nfeCabecMsg As String, ByVal nfeDadosMsg As String) As String
Dim results() As Object = Me.Invoke("nfeConsultaNF", New Object() {nfeCabecMsg, nfeDadosMsg})
Return results(0)
End Function
<System.Web.Services.Protocols.SoapDocumentMethodAttribute(RequestNamespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico",'>[http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico), ResponseNamespace:="[http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico"](http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico))> _
Public Function nfeStatusServicoNF(ByVal nfeCabecMsg As String, ByVal nfeDadosMsg As String) As String
Dim results() As Object = Me.Invoke("nfeStatusServicoNF", New Object() {nfeCabecMsg, nfeDadosMsg})
Return results(0)
End Function
End Class
End Namespace
Se puderem me ajudar fico agradecido.
Carregando comentários...