Fim da Capicom

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Encontrei isto no site do ACBR
Vou postar aqui a solução, pois pode ajudar a outros que venham a passar por isso.
Como eu disse, o nosso software usa as dlls da TKS para a geração, envio, cancelamento e inutilizaçao da NFe,
e eu não sei o porque, mas não era preciso instalar o certificado A3 na maquina do usuario, bastava apenas inserir
o leitor no USB e deixar o windows reconhecer. Com o componente da ACBr não é assim, nos precisamos instalar o
certificado através do software proprio de cada empresa emissora do certificado (no caso do nosso cliente a Serasa),
e com um detalhe importante, tem que se logar na maquina como administrador. Apos a instalação, bastou registrar
as Dlls (capcon etc), que funcionou perfeitamente.
Comentário:

Apesar do certificado estar instalado no Windows, isso não elimina a necessidade do certificado físico, já que é A3.
E por necessitar o certificado físico, depende de tudo relacionado à segurança e comunicação até ele.
Sinceramente, não faço a menor idéia de como isso funciona, ou do que depende pra funcionar.

O A1, uma vez instalado no Windows, não precisa de nada adicional.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Fim da Capicom

Mensagem por oxent_jabah »

Bom Dia, Quintas!

Neste momento da foto, o certificado estava na leitora de cartão, testei com as classes de emissão de NF-e e deu certo, só com a MDF-e esta dando este galho.
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Fim da Capicom

Mensagem por oxent_jabah »

Bom Dia, Quintas!

Consegui resolver o problema anterior, da etapa de assinatura do MDFe (sem validar), agora estou nas seguintes pendencias:
- ainda na primeira etapa, não estou sabendo qual dos Schemas usar para validar o XML gerado?
- Gerado (porém, não validado) e assinado, ao transmitir estou recebendo a seguinte mensagem de retorno:
"Erro SOAP: XML retorno não contém soapenv:Body Erro: Sem retorno do webservice"

PS: estou anexando os arquivos trabalhados nestas etapas aqui.
Anexos
MDFe23170507656028000120580010000000011000000017.rar
(18.73 KiB) Baixado 291 vezes
2017-05-23 (1).png
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Por coincidência, no explorer mostra 2 XMLs desses como se estivessem incompletos.
Mas pelo bloco de notas está normal.
Procurei caracteres inválidos e não encontrei.

Por exclusão, resta um problema que detectei a pouco tempo:

é enviado o XML... recebe=se o retorno
com o resultado desse, é enviado o recibo... recebe-se o retorno

Estava faltando considerar que o primeiro deu erro, e manter o retorno dele.
Por não manter o primeiro retorno, ficou só o segundo vazio, e o que interessa está no primeiro.

Atualize a classe e confirme se está ok.

Nota:
Ao mesmo tempo que a parte automática facilitou pra quando dá certo, ainda pode precisar ajustes pra quando dá errado.
É algo como etapa 1, etapa 2, etapa 3, e a classe ter mostrado apenas a resposta da etapa 3, que é insuficiente pra resolver o problema.

E se for verificar isso por debug, seria no retorno de MicrosoftXmlSoapPost(), que é a resposta exata da Fazenda. (que pra esse processo é feito duas vezes).
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Só a título de curiosidade:

A alteração foi pegar o status e o motivo nas outras etapas.

https://github.com/JoseQuintas/sefazcla ... c2dd290e56

Pode ser interessante utilizar oSefaz:cStatus e oSefaz:cMotivo
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Fim da Capicom

Mensagem por oxent_jabah »

Bom Dia, Quintas!

Andei pesquisando sobre possíveis problemas no retorno do envio de MDF-e e me deparei com o seguinte material, creio Eu que seja a causa da questão ou solução do problema.

https://portal.fazenda.sp.gov.br/servic ... %20(1).pdf

Estas alterações do projeto já devem esta ativas, devendo ser a razão pela qual não estarmos recebendo retorno no envio.
Anexos
MDFe_Nota_Tecnica_2015_002_WS_Distribuicao_DFE.pdf
(191.57 KiB) Baixado 373 vezes
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Isso se refere a distribuição de documento, é algo como um projeto a parte.

Vamos raciocinar:

MDFE é o único dos documentos aonde TUDO é feito no RS, seja qual for a UF.
Se é igual pra todo mundo, e aí não está funcionando... alguma coisa por aí está atrapalhando.

Requisitos:

- Capicom
- MSXML5, que tem que ser registrado como administrador


Como o Windows funciona com relação a DLLs registradas:

Em Windows 32 bits: é tudo instalado em c:\Windows\System32, afinal 64 bits não entra.

Em Windows 64 bits, é aí que a coisa pega:
É daí que devem vir os problemas....

Programas em 64 bits acessam o que está na pasta \Windows\System32, e nela tem regsvr32.exe pra 64 bits
Programas em 32 bits acessam o que está na pasta \Windows\SysWow64, e nela tem regsvr32.exe pra 32 bits
Se você usar Harbour 32 bits, tem que registrar DLLs com o regsvr32.exe que está em \Windows\SysWow64
Se você usar Harbour 64 bits, tem que registrar DLLs com o regsvr32.exe que está em \Windows\System32

E certificado A3?
O equipamento leitor de certificados usa DLLs próprias.
Não faço idéia de como isso é controlado, se o certificado instala opção pra 32 e 64 bits, ou se apenas pra uma delas.
Se alguma DLL for necessária, mas não estiver disponível, simplesmente não funciona.

Por muitos anos ainda vamos ter problemas por misturar 16 bits/32 bits, 32 bits/64 bits, codepage.
Clippper 16 bits, Borland C 32 bits... tudo isso um dia vai acabar, de um jeito ou de outro.
Até lá, talvez comecem os problemas de 128 bits ou mais bits.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Fim da Capicom

Mensagem por oxent_jabah »

Quintas,

Uma outra coisa que estou observando é os endereços do Serviço, veja os atuais obtidos no site da MDF-e https://mdfe-portal.sefaz.rs.gov.br/Site/Servicos :


Relação dos Serviços Web de Produção
Serviço Versão URL
MDFeRecepcao 1.0 https://mdfe.svrs.rs.gov.br/ws/MDFerece ... epcao.asmx
MDFeRetRecepcao 1.0 https://mdfe.svrs.rs.gov.br/ws/MDFeRetR ... epcao.asmx
MDFeRecepcaoEvento 1.0 https://mdfe.svrs.rs.gov.br/ws/MDFeRece ... vento.asmx
MDFeConsulta 1.0 https://mdfe.svrs.rs.gov.br/ws/MDFeCons ... sulta.asmx
MDFeStatusServico 1.0 https://mdfe.svrs.rs.gov.br/ws/MDFeStat ... rvico.asmx
MDFeConsNaoEnc 1.0 https://mdfe.svrs.rs.gov.br/ws/MDFeCons ... aoEnc.asmx
Para obtenção do WSDL informe a URL do respectivo serviço concatenado com o parâmetro ?wsdl

Relação dos Serviços Web de Homologação
Serviço Versão URL
MDFeRecepcao 1.0 https://mdfe-homologacao.svrs.rs.gov.br ... epcao.asmx
MDFeRetRecepcao 1.0 https://mdfe-homologacao.svrs.rs.gov.br ... epcao.asmx
MDFeRecepcaoEvento 1.0 https://mdfe-homologacao.svrs.rs.gov.br ... vento.asmx
MDFeConsulta 1.0 https://mdfe-homologacao.svrs.rs.gov.br ... sulta.asmx
MDFeStatusServico 1.0 https://mdfe-homologacao.svrs.rs.gov.br ... rvico.asmx
MDFeConsNaoEnc 1.0 https://mdfe-homologacao.svrs.rs.gov.br ... aoEnc.asmx
Para obtenção do WSDL informe a URL do respectivo serviço concatenado com o parâmetro ?wsdl
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

e isso não tá certo?

Código: Selecionar todos

METHOD SetSoapURL( nWsServico ) CLASS SefazClass

   ::cSoapURL := ""
...
   CASE ::cProjeto == WS_PROJETO_MDFE
      ::cSoapURL := SoapURL_RS( ::cAmbiente, nWsServico, ::cVersao )
...
FUNCTION SoapURL_RS( cAmbiente, nWsServico, ... )

   LOCAL cUrlWs := ""

   IF cAmbiente == WS_AMBIENTE_PRODUCAO
      DO CASE
      CASE nWsServico == WS_CTE_RECEPCAO ;            cUrlWs := "https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx"
      CASE nWsServico == WS_CTE_RETRECEPCAO ;         cUrlWs := "https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx"
      CASE nWsServico == WS_CTE_INUTILIZACAO ;        cUrlWs := "https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx"
      CASE nWsServico == WS_CTE_CONSULTAPROTOCOLO ;   cUrlWs := "https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx"
      CASE nWsServico == WS_CTE_STATUSSERVICO ;       cUrlWs := "https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx"
      CASE nWsServico == WS_CTE_RECEPCAOEVENTO ;      cUrlWs := "https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx"
      CASE nWsServico == WS_MDFE_DISTRIBUICAODFE ;    cUrlWs := "https://mdfe.svrs.rs.gov.br/WS/MDFeDistribuicaoDFe/MDFeDistribuicaoDFe.asmx"
      CASE nWsServico == WS_MDFE_CONSULTA ;           cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeConsulta/MDFeConsulta.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAO ;           cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAOEVENTO ;     cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeRecepcaoEvento/MDFeRecepcaoEvento.asmx"
      CASE nWsServico == WS_MDFE_RETRECEPCAO ;        cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeRetRecepcao/MDFeRetRecepcao.asmx"
      CASE nWsServico == WS_MDFE_STATUSSERVICO ;      cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeStatusServico/MDFeStatusServico.asmx"
      CASE nWsServico == WS_MDFE_CONSNAOENC ;         cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/mdfeConsNaoEnc/mdfeConsNaoenc.asmx"
      CASE nWsServico == WS_NFE_AUTORIZACAO ;         cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx"
      CASE nWsServico == WS_NFE_CONSULTACADASTRO ;    cUrlWs := "https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx"
      CASE nWsServico == WS_NFE_CONSULTADEST ;        cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/nfeConsultaDest/nfeConsultaDest.asmx"
      CASE nWsServico == WS_NFE_CONSULTAPROTOCOLO ;   cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx"
      CASE nWsServico == WS_NFE_DOWNLOADNF ;          cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/nfeDownloadNF/nfeDownloadNF.asmx"
      CASE nWsServico == WS_NFE_INUTILIZACAO ;        cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx"
      CASE nWsServico == WS_NFE_RECEPCAOEVENTO ;      cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx"
      CASE nWsServico == WS_NFE_RETAUTORIZACAO ;      cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx"
      CASE nWsServico == WS_NFE_STATUSSERVICO ;       cUrlWs := "https://nfe.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx"
      ENDCASE
   ELSE
      DO CASE
      CASE nWsServico == WS_CTE_RECEPCAO ;            cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx"
      CASE nWsServico == WS_CTE_RETRECEPCAO ;         cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx"
      CASE nWsServico == WS_CTE_INUTILIZACAO ;        cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx"
      CASE nWsServico == WS_CTE_CONSULTAPROTOCOLO ;   cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx"
      CASE nWsServico == WS_CTE_STATUSSERVICO ;       cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx"
      CASE nWsServico == WS_CTE_RECEPCAOEVENTO ;      cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx"
      CASE nWsServico == WS_MDFE_CONSULTA ;           cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeConsulta/MDFeConsulta.asmx"
      CASE nWsServico == WS_MDFE_CONSNAOENC ;         cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeConsNaoEnc/MDFeConsNaoEnc.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAO ;           cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAOEVENTO ;     cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRecepcaoEvento/MDFeRecepcaoEvento.asmx"
      CASE nWsServico == WS_MDFE_RETRECEPCAO ;        cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRetRecepcao/MDFeRetRecepcao.asmx"
      CASE nWsServico == WS_MDFE_STATUSSERVICO ;      cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeStatusServico/MDFeStatusServico.asmx"
      CASE nWsServico == WS_NFE_AUTORIZACAO ;         cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx"
      CASE nWsServico == WS_NFE_CONSULTACADASTRO ;    cUrlWs := "https://cad.sefazrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx"
      CASE nWsServico == WS_NFE_CONSULTADEST ;        cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeConsultaDest/nfeConsultaDest.asmx"
      CASE nWsServico == WS_NFE_CONSULTAPROTOCOLO ;   cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx"
      CASE nWsServico == WS_NFE_DOWNLOADNF ;          cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeDownloadNF/nfeDownloadNF.asmx"
      CASE nWsServico == WS_NFE_INUTILIZACAO ;        cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx"
      CASE nWsServico == WS_NFE_RECEPCAOEVENTO ;      cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx"
      CASE nWsServico == WS_NFE_RETAUTORIZACAO ;      cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx"
      CASE nWsServico == WS_NFE_STATUSSERVICO ;       cUrlWs := "https://nfe-homologacao.sefazrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx"
      ENDCASE
   ENDIF

   RETURN cUrlWs
Até vou alterar tudo referente a SVRS pra ficar em SoapUrl_SVRS.
E com isso alterar também aquele CASE do MDFe, e também os CASEs do CTE
Isso vai ter o mesmo resultado, é apenas pra organizar endereços do SVRS no fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Só pra deixar tudo de SVRS num lugar só...
Lógico... com isso tive que alterar também os relacionados a SVRS no bloco de CTE

Código: Selecionar todos

METHOD SetSoapURL( nWsServico ) CLASS SefazClass

   ::cSoapURL := ""
   DO CASE
   CASE ::cProjeto == WS_PROJETO_CTE
      IF ::cScan == "SVCAN"
         IF ::cUF $ "MG,PR,RS," + "AC,AL,AM,BA,CE,DF,ES,GO,MA,PA,PB,PI,RJ,RN,RO,RS,SC,SE,TO"
            ::cSoapURL := SoapURL_SVSP( ::cAmbiente, nWsServico, ::cVersao ) // SVC_SP não existe
         ELSEIF ::cUF $ "MS,MT,SP," + "AP,PE,RR"
            ::cSoapURL := SoapURL_SVRS( ::cAmbiente, nWsServico, ::cVersao ) // SVC_RS não existe
         ENDIF
      ELSE
         IF ::cUF $ "AP,PE,RR"
            ::cSoapURL := SoapURL_SVSP( ::cAmbiente, nWsServico, ::cVersao )
         ELSEIF ::cUF $ "AC,AL,AM,BA,CE,DF,ES,GO,MA,PA,PB,PI,RJ,RN,RO,RS,SC,SE,TO"
            ::cSoapURL := SoapURL_SVRS( ::cAmbiente, nWsServico, ::cVersao )
         ENDIF
      ENDIF
   CASE ::cProjeto == WS_PROJETO_MDFE
      ::cSoapURL := SoapURL_SVRS( ::cAmbiente, nWsServico, ::cVersao )
...
FUNCTION SoapURL_SVRS( cAmbiente, nWsServico, ... )

   LOCAL cUrlWs := ""

   IF cAmbiente == WS_AMBIENTE_PRODUCAO
      DO CASE
      CASE nWsServico == WS_CTE_RECEPCAO ;            cUrlWs := "https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx"
      CASE nWsServico == WS_CTE_RETRECEPCAO ;         cUrlWs := "https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx"
      CASE nWsServico == WS_CTE_INUTILIZACAO ;        cUrlWs := "https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx"
      CASE nWsServico == WS_CTE_CONSULTAPROTOCOLO ;   cUrlWs := "https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx"
      CASE nWsServico == WS_CTE_STATUSSERVICO ;       cUrlWs := "https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx"
      CASE nWsServico == WS_CTE_RECEPCAOEVENTO ;      cUrlWs := "https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx"
      CASE nWsServico == WS_MDFE_DISTRIBUICAODFE ;    cUrlWs := "https://mdfe.svrs.rs.gov.br/WS/MDFeDistribuicaoDFe/MDFeDistribuicaoDFe.asmx"
      CASE nWsServico == WS_MDFE_CONSULTA ;           cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeConsulta/MDFeConsulta.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAO ;           cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAOEVENTO ;     cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeRecepcaoEvento/MDFeRecepcaoEvento.asmx"
      CASE nWsServico == WS_MDFE_RETRECEPCAO ;        cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeRetRecepcao/MDFeRetRecepcao.asmx"
      CASE nWsServico == WS_MDFE_STATUSSERVICO ;      cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/MDFeStatusServico/MDFeStatusServico.asmx"
      CASE nWsServico == WS_MDFE_CONSNAOENC ;         cUrlWs := "https://mdfe.svrs.rs.gov.br/ws/mdfeConsNaoEnc/mdfeConsNaoenc.asmx"
      CASE nWsServico == WS_NFE_AUTORIZACAO ;         cUrlWs := "https://nfe.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx"
      CASE nWsServico == WS_NFE_CONSULTACADASTRO ;    cUrlWs := "https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx"
      CASE nWsServico == WS_NFE_CONSULTAPROTOCOLO ;   cUrlWs := "https://nfe.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx"
      CASE nWsServico == WS_NFE_INUTILIZACAO ;        cUrlWs := "https://nfe.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx"
      CASE nWsServico == WS_NFE_RECEPCAOEVENTO ;      cUrlWs := "https://nfe.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx"
      CASE nWsServico == WS_NFE_RETAUTORIZACAO ;      cUrlWs := "https://nfe.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx"
      CASE nWsServico == WS_NFE_STATUSSERVICO ;       cUrlWs := "https://nfe.svrs.rs.gov.br/ws/nfeStatusServico/NfeStatusServico2.asmx"
      ENDCASE
   ELSE
      DO CASE
      CASE nWsServico == WS_CTE_RECEPCAO ;            cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx"
      CASE nWsServico == WS_CTE_RETRECEPCAO ;         cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx"
      CASE nWsServico == WS_CTE_INUTILIZACAO ;        cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx"
      CASE nWsServico == WS_CTE_CONSULTAPROTOCOLO ;   cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx"
      CASE nWsServico == WS_CTE_STATUSSERVICO ;       cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx"
      CASE nWsServico == WS_CTE_RECEPCAOEVENTO ;      cUrlWs := "https://cte-homologacao.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx"
      CASE nWsServico == WS_MDFE_CONSULTA ;           cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeConsulta/MDFeConsulta.asmx"
      CASE nWsServico == WS_MDFE_CONSNAOENC ;         cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeConsNaoEnc/MDFeConsNaoEnc.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAO ;           cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFerecepcao/MDFeRecepcao.asmx"
      CASE nWsServico == WS_MDFE_RECEPCAOEVENTO ;     cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRecepcaoEvento/MDFeRecepcaoEvento.asmx"
      CASE nWsServico == WS_MDFE_RETRECEPCAO ;        cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeRetRecepcao/MDFeRetRecepcao.asmx"
      CASE nWsServico == WS_MDFE_STATUSSERVICO ;      cUrlWs := "https://mdfe-homologacao.svrs.rs.gov.br/ws/MDFeStatusServico/MDFeStatusServico.asmx"
      CASE nWsServico == WS_NFE_AUTORIZACAO ;         cUrlWs := "https://nfe-homologacao.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx"
      CASE nWsServico == WS_NFE_CONSULTACADASTRO ;    cUrlWs := "https://cad.svrs.rs.gov.br/ws/cadconsultacadastro/cadconsultacadastro2.asmx"
      CASE nWsServico == WS_NFE_CONSULTAPROTOCOLO ;   cUrlWs := "https://nfe-homologacao.svrs.rs.gov.br/ws/NfeConsulta/NfeConsulta2.asmx"
      CASE nWsServico == WS_NFE_INUTILIZACAO ;        cUrlWs := "https://nfe-homologacao.svrs.rs.gov.br/ws/nfeinutilizacao/nfeinutilizacao2.asmx"
      CASE nWsServico == WS_NFE_RECEPCAOEVENTO ;      cUrlWs := "https://nfe-homologacao.svrs.rs.gov.br/ws/recepcaoevento/recepcaoevento.asmx"
      CASE nWsServico == WS_NFE_RETAUTORIZACAO ;      cUrlWs := "https://nfe-homologacao.svrs.rs.gov.br/ws/NfeRetAutorizacao/NFeRetAutorizacao.asmx"
      CASE nWsServico == WS_NFE_STATUSSERVICO ;       cUrlWs := "https://nfe-homologacao.svrs.rs.gov.br/ws/NfeStatusServico/NfeStatusServico2.asmx"
      ENDCASE
   ENDIF

   RETURN cUrlWs
No caso do MDFE não, porque é tudo igual, mas no caso de NFE e CTE pode haver diferença entre as UFs.
No momento tentando descobrir uma diferença na comunicação de NFE do ACRE.
Se alguém souber....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Acre resolvido, era problema no XML, acabo de autorizar.
Por coincidência, NFE do Acre é no SVRS, mas não tem nada a ver com MDFe... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

Fim da Capicom

Mensagem por oxent_jabah »

Boa Noite, Quintas!

O problema com a assinatura do xml já foi resolvido.
O problema agora é no envio para o WebService que não esta recebendo o xml do Manifesto postado, a classe esta devolvendo a seguinte mensagem "Erro SOAP: XML retorno não contém soapenv:Body Erro: Sem retorno do webservice" e já verifiquei o retorno do método ::XmlSoapPost().
O objeto OLE do método ::MicrosoftXmlSoapPost() esta retornando NIL na propriedade oServer:ResponseBody.
Verifiquei também o envelopamento Soap12 para o envio e não encontrei nenhuma diferença visível.

Isso esta acontecendo em máquinas contendo Windows 7 x64 e Windows 10 x64, as dlls estão instaladas e registradas corretamentes. Inclusive a máquina com Windows 7, foi formatada ontem e toda instalação de certificado, capicom.dll e msxml5*.dll foram reinstalados e registrados, sendo estas ultimas realizadas manualmente para garantir o correto funcionamento das mesmas.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Fim da Capicom

Mensagem por JoséQuintas »

Briguei com algo no Acre, não sei se pode ser a mesma coisa.

Pelo menos na fase inicial é obrigatório validar o XML.

Apesar da mensagem ser na comunicação, pode ser problema no XML.

O que acontece:

1. Tem seu XML de documento
2. Seu XML de documento é colocado dentro do XML de lote, vira um XML maior
3. O XML do lote é colocado dentro do XML do envelope, vira um XML maior

Se tiver problema no XML, ao transmitir, a Fazenda rejeita a comunicação.

Um dos problemas com Acre foi o XML da nota com a declaração "<XML version 1.00>
Removendo isso do XML da nota ficou resolvido.

Fácil entender: essa declaração é no início do XML, como TUDO virou um "XMLzão", se o documento contiver a declaração, ela passa a ficar no meio e não no início.
Ela não faz parte da assinatura, pode ser removida normalmente.

E quando se abre no explorer, qualquer XML, é mostrada essa declaração no início sempre, o que faz quem está vendo pensar que ela existe no XML.
Compare o conteúdo verdadeiro do XML com o que aparece no explorer:
xml.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder