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