Jump to content
ugiov

Problemas para acessar o WebService da SEFAZ

Recommended Posts

Bom dia.

 

Estou iniciando o desenvolvimento de um software para controle e emissão de NF-e para a SEFAZ. A princípio, estou começando pelo básico, onde busco consultar se o serviço selecionado está online, ou não. De maneira simplificada:

Private Sub VerificaStatus()
  Dim servicoNFe As ServicosNFe
  Dim retornoStatus As RetornoNfeStatusServico
  Dim retornoBasico As retConsStatServ        

  servicoNFe = New ServicosNFe(NFeConfig.CfgServico)

  retornoStatus = servicoNFe.NfeStatusServico()
  retornoBasico = retornoStatus.Retorno

End Sub

 

Ele gera o XML para consulta, valida, salva uma cópia no computador, e tudo.... Mas quando vou na função NfeStatusServico:

Public Function NfeStatusServico() As RetornoNfeStatusServico
    Dim versaoServico = ServicoNFe.NfeStatusServico.VersaoServicoParaString(_cFgServico.VersaoNfeStatusServico)
    Dim ws = CriarServico(ServicoNFe.NfeStatusServico)

    If _cFgServico.VersaoNfeStatusServico <> NFe.Classes.Servicos.Tipos.VersaoServico.ve400 Then
    ws.nfeCabecMsg = New nfeCabecMsg
    ws.nfeCabecMsg.cUF = _cFgServico.cUF
    ws.nfeCabecMsg.versaoDados = versaoServico
    End If

    Dim pedStatus = New consStatServ With {
    .cUF = _cFgServico.cUF,
    .tpAmb = _cFgServico.tpAmb,
    .versao = versaoServico
    }
    Dim xmlStatus = pedStatus.ObterXmlString()
    Validador.Valida(ServicoNFe.NfeStatusServico, _cFgServico.VersaoNfeStatusServico, xmlStatus, cfgServico:=_cFgServico)
    Dim dadosStatus = New XmlDocument()
    dadosStatus.LoadXml(xmlStatus)
    SalvarArquivoXml(DateTime.Now.ParaDataHoraString() & "-ped-sta.xml", xmlStatus)
    Dim retorno As XmlNode

    Try
    retorno = ws.Execute(dadosStatus) '<<< Aqui ocorre um erro!
    Catch ex As WebException
    Throw FabricaComunicacaoException.ObterException(ServicoNFe.NfeStatusServico, ex)
    End Try

    Dim retornoXmlString = retorno.OuterXml
    Dim retConsStatServ = New retConsStatServ().CarregarDeXmlString(retornoXmlString)
    SalvarArquivoXml(DateTime.Now.ParaDataHoraString() & "-sta.xml", retornoXmlString)
    Return New RetornoNfeStatusServico(pedStatus.ObterXmlString(), retConsStatServ.ObterXmlString(), retornoXmlString, retConsStatServ)
    
End Function

 

A função ws.Execute(dadosStatus) gera um erro:

Namespace NFe.Wsdl.Status
    <WebServiceBinding(Name:="NFeStatusServico4Service", Namespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4")>
    Public Class NfeStatusServico4
        Inherits SoapHttpClientProtocol
        Implements INfeServico

        Public Sub New(ByVal url As String, ByVal certificado As X509Certificate, ByVal timeOut As Integer)
            SoapVersion = SoapProtocolVersion.Soap12
            Me.Url = url
            Me.Timeout = timeOut
            ClientCertificates.Add(certificado)
        End Sub

        <Obsolete("Não utilizar na nfe 4.0")>
        Public Property nfeCabecMsg As nfeCabecMsg

        Private Property INfeServico_nfeCabecMsg As nfeCabecMsg Implements INfeServico.nfeCabecMsg
            Get
                Throw New NotImplementedException()
            End Get
            Set(value As nfeCabecMsg)
                Throw New NotImplementedException()
            End Set
        End Property

        <WebMethod(MessageName:="nfeStatusServicoNF"),
        SoapDocumentMethod("http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4/nfeStatusServicoNF", Use:=SoapBindingUse.Literal, ParameterStyle:=SoapParameterStyle.Bare)>
        Private Function Execute(<XmlElement(Namespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4")> nfeDadosMsg As XmlNode) As <XmlElement("nfeResultMsg", Namespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4")> XmlNode Implements INfeServico.Execute
            Dim results = Me.Invoke("nfeStatusServicoNF", New Object() {nfeDadosMsg}) '<<<< Aqui nesta linha ocorre o erro
                Return CType((results(0)), XmlNode)
        End Function
    End Class
End Namespace

 

A seguinte mensagem, é então exibida:

"O método nfeStatusServicoNF do serviço da Web é inválido". <Imagem Anexo>

 

 

Esse erro eu não estou conseguindo corrigir.

Alguém poderia me ajudar com o mesmo?

1352127.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By michael450
      Senhores, boa tarde.
       
      Estou com um probleminha... rss', preciso fazer a listagem de uma função da biblioteca "SPED-NFe"   na qual consulto quais as NFe que emitiram contra meu CNPJ, porém o ele executa toda a função e depois me trás o resultado, eu gostaria de trazer o resultado instantaneamente, como se fosse uma atualização segundo a segundo.
       
       
      Essas informações não são salvas em DB, é apenas para consulta.
      Se alguém puder ajudar serei muito grato,
       
      Abraço.
       
      Michael Douglas
    • By Fernando Rafael
      Olá a todos, atualmente estou quebrando a cabeça com 3 campos da geração do XML de NFCE/NFE, são eles:   <SignatureValue> ,  <DigestValue>   e  <X509Certificate>, como  faço para gerar esses 3 campos?
       
      Procurei na internet, mas não achei nada que me ajude, gostaria de fazer 100% com php e de preferência  manualmente (sem a utilização de classes prontas na qual é difícil de entender o código).
       
      Já tenho o certificado em PFX, e já gerei um certificado do tipo PEM.
       
      OBS 1: não precisam explicar ou mandar códigos de como inserir o conteúdo gerado nas tags <SignatureValue>  e  <X509Certificate>.
       
      OBS 2: O campo <DigestValue>  notei em alguns fóruns que é um retorno da Sefaz, é correto isso?
       
      ,
    • By Fabrizio.Quadro
      Boa noite galera, será que tem alguem que possa me dar uma força com webservices, eu preciso acessar este webservice https://servicoshm.saude.gov.br/cnes/ProfissionalSaudeService/v1r0?wsdl
      é somente a 2º vez que estou trabalhando com webservice, da outra vez que trabalhei era para acessar o webservice dos correios para calcular o frete, então peguei o codigo e meio que tentei utiliza-lo, mas nao deu certo, o codigo é esse ai
      <?php include "lib/nusoap.php"; $cliente = new nusoap_client('https://servicoshm.saude.gov.br/cnes/ProfissionalSaudeService/v1r0?wsdl', true); $headers = ' <soap:Header> <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-5FCA58BED9F27C406E14576381084652"> <wsse:Username>CNES.PUBLICO</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">cnes#2015public</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> '; $cliente->setHeaders($headers); $parametros = array('numeroCNS' => '980016280595043'); $resultado = $cliente->call('ConsultarProfissionalSaude', $parametros); print_r($resultado); ?> nao sei se ajuda, mas o xml que o webservice recebe é esse aqui
        
      <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:prof="http://servicos.saude.gov.br/cnes/v1r0/profissionalsaudeservice" xmlns:fil="http://servicos.saude.gov.br/wsdl/mensageria/v1r0/filtropesquisaprofissionalsaude" xmlns:cns="http://servicos.saude.gov.br/schema/cadsus/v5r0/cns" xmlns:cpf="http://servicos.saude.gov.br/schema/corporativo/documento/v1r2/cpf"> <soap:Header> <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:UsernameToken wsu:Id="UsernameToken-5FCA58BED9F27C406E14576381084652"> <wsse:Username>CNES.PUBLICO</wsse:Username> <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">cnes#2015public</wsse:Password> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <prof:requestConsultarProfissionalSaude> <fil:FiltroPesquisaProfissionalSaude> <cns:CNS> <cns:numeroCNS>980016280595043</cns:numeroCNS> </cns:CNS> </fil:FiltroPesquisaProfissionalSaude> </prof:requestConsultarProfissionalSaude> </soap:Body> </soap:Envelope> Alguem sabe como acessar esse webservice?????
    • By Gustavo2503
      fgets() não funciona em xml versão 4.00, só funciona na versão 3.10
      $arquivo = $_FILES['arquivo']["tmp_name"]; $xml = fopen($arquivo, 'r'); while(!feof($xml)){ $linha = fgets($xml); if (!$linha){ $linha = "Erro"; } } echo $linha; Ele retorna "Erro" quando o xml está na versão 4.00. Como arruma isso?
    • By laumello12
      Galera ajudinha
      Como faço para consumir um web service pronto em um projeto. Preciso só que ele busque no web service e traga na web 
      HELP
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.