Página 2 de 2

Fim da Capicom

Enviado: 11 Mai 2017 22:58
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.

Fim da Capicom

Enviado: 12 Mai 2017 06:55
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.

Fim da Capicom

Enviado: 23 Mai 2017 10:59
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.

Fim da Capicom

Enviado: 23 Mai 2017 16:23
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).

Fim da Capicom

Enviado: 23 Mai 2017 16:48
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

Fim da Capicom

Enviado: 24 Mai 2017 09:38
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.

Fim da Capicom

Enviado: 24 Mai 2017 11:23
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.

Fim da Capicom

Enviado: 24 Mai 2017 11:43
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

Fim da Capicom

Enviado: 24 Mai 2017 12:43
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.

Fim da Capicom

Enviado: 24 Mai 2017 12:53
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....

Fim da Capicom

Enviado: 24 Mai 2017 14:41
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

Fim da Capicom

Enviado: 24 Mai 2017 20:23
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.

Fim da Capicom

Enviado: 25 Mai 2017 13:15
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