NFS-e Curitiba: Erro E504 - O certificado digital do prestador de serviços é obrigatório

2 respostas
T

Boa tarde pessoal.

Queria saber se alguém que já desenvolveu alguma solução e ou integrou alguma aplicação com a prefeitura de Curitiba utilizando webservices já obteve este tipo de erro:

<?xml version="1.0"?>
<ConsultarSituacaoLoteRpsResposta xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <NumeroLote xsi:nil="true" />
  <Situacao xsi:nil="true" />
  <ListaMensagemRetorno>
    <MensagemRetorno>
      <Codigo>E504</Codigo>
      <Mensagem>O certificado digital do prestador de serviços é obrigatório.</Mensagem>
      <Correcao>Envie junto a requisição do serviço o certificado digital do prestador de serviços.</Correcao>
    </MensagemRetorno>
  </ListaMensagemRetorno>
</ConsultarSituacaoLoteRpsResposta>

Já vinculei o certificado de transmissão (tanto o oferecido pela ISS curitiba (piloto) quanto o certificado da empresa credenciado pela ICP Brasil) com o ISS Curitiba, porém não tive sucesso.

Vou postar um exemplo que desenvolvi para realizar a comunicação:

package recepcaoloterps;

import br.com.e_governeapps2.www.WS_x0020__x0020_NFSE_x0020_V1001Stub;
import br.com.e_governeapps2.www.WS_x0020__x0020_NFSE_x0020_V1001Stub.RecepcionarXml;
import br.com.e_governeapps2.www.WS_x0020__x0020_NFSE_x0020_V1001Stub.RecepcionarXmlResponse;
import java.io.IOException;
import java.security.Security;
import org.apache.axis2.AxisFault;

public class RecepcaoLoteRps 
{
    public String getMensagemRetorno(String metodo, String fileXML) throws AxisFault, IOException
    {
        
        WS_x0020__x0020_NFSE_x0020_V1001Stub stub = new WS_x0020__x0020_NFSE_x0020_V1001Stub();
        RecepcionarXml recepcionarXml = new RecepcionarXml();
        recepcionarXml.setMetodo(metodo);
        recepcionarXml.setXml(util.LerXML.lerXML(fileXML));
      
        RecepcionarXmlResponse recepcionarXmlResponse = stub.recepcionarXml(recepcionarXml);
        
        /*Informações do Certificado Digital*/
            System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

            System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");

            System.clearProperty("javax.net.ssl.keyStore");
            System.clearProperty("javax.net.ssl.keyStorePassword");
            System.clearProperty("javax.net.ssl.trustStore");
            
            System.setProperty("javax.net.ssl.keyStore", "C:\\Users\\thiago.beserra\\Desktop\\pasta_xml\\piloto.pfx");
            System.setProperty("javax.net.ssl.keyStorePassword", "senhapiloto");

            System.setProperty("javax.net.ssl.trustStoreType", "JKS");
            System.setProperty("javax.net.ssl.trustStore", "C:\\Users\\thiago.beserra\\Desktop\\pasta_xml\\NFeCacerts");
        
        return recepcionarXmlResponse.getRecepcionarXmlResult();
    }
}

Estou carregando o certificado digital no exemplo, mais especificamente, utilizando este bloco de código:

/*Informações do Certificado Digital*/
            System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

            System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");

            System.clearProperty("javax.net.ssl.keyStore");
            System.clearProperty("javax.net.ssl.keyStorePassword");
            System.clearProperty("javax.net.ssl.trustStore");
            
            System.setProperty("javax.net.ssl.keyStore", "C:\\Users\\thiago.beserra\\Desktop\\pasta_xml\\piloto.pfx");
            System.setProperty("javax.net.ssl.keyStorePassword", "senhapiloto");

            System.setProperty("javax.net.ssl.trustStoreType", "JKS");
            System.setProperty("javax.net.ssl.trustStore", "C:\\Users\\thiago.beserra\\Desktop\\pasta_xml\\NFeCacerts");

Se alguém ja desenvolveu para NFS-e e já teve o mesmo problema, agradeço por qualquer ajuda.

Obrigado.

2 Respostas

J

Só para ter certeza, tente setar as propriedades no começo do código, antes de fazer qualquer outra coisa.

F

Olá Thiago, conseguiu resolver o problema?

Estou com o mesmo erro, no ambiente piloto funcionou blz. Estou usando a lib HttpClient do Apache para fazer a conexão.

Abraço!

Criado 11 de junho de 2013
Ultima resposta 17 de set. de 2013
Respostas 2
Participantes 3