Retornar ao TJMG
SISNOR - Portal do Desenvolvedor de Sistemas para Serventias


  • Início
  • Solicitação e Importação de Selos
  • Selos utilizados e Atos praticados
  • Envio do XML
  • Homologação
  • DAP Selo Físico
  • Contato
  • Envio do XML ao TJMG
  • Envio via upload
  • Envio via WebService Assíncrono
  • Exemplo: Cliente WS - Enviar Atos
  • Exemplo: Cliente WS - Situação do Envio de Atos
  • Exemplo: Cliente WS - Mensagens do Envio de Atos
  • Exemplo: Cliente WS - Obter último protocolo
  • Exemplo: Cliente WS - Obter recibo
  • WSDL do Ambiente de Produção
  • Chave pública do TJMG
  • Exemplo: Criptografar documento
  • Referências

Envio do XML ao TJMG

O arquivo a ser enviado pela serventia para o TJMG contendo os selos utilizados e seus respectivos atos deve seguir a estrutura anteriormente definida e pode ser enviado ao TJMG utilizando o consumo de WebService ou via upload no Portal do Selo de Fiscalização Eletrônico. O detalhamento de ambas formas de envio é realizada nas seções a seguir.

Envio via upload

O envio via upload deve ocorrer com o arquivo assinado pela serventia com a chave privada do usuário da serventia e, posteriormente, criptografado com a Chave pública do TJMG.
Caso a aplicação de Selo de Fiscalização Eletrônico encontre alguma inconsistência no arquivo enviado, o sistema exibirá em tela uma relação das inconsistências encontradas e nenhum ato praticado será importado para a aplicação. Caso contrário, a aplicação exibirá mensagem informando que o arquivo foi processado com sucesso.
Clique aqui para visualizar a relação de mensagens que podem ser exibidas pelo sistema

Envio via WebService Assíncrono

Um "WebService" é um conjunto de funções chamáveis através da Internet, utilizando o protocolo SOAP. Estas funções recebem o nome de WebMethods. Um WebService permite que dois programas se comuniquem de uma maneira tecnicamente muito semelhante à invocação de páginas Web.
O acesso ao WebService deve ser realizado através do sistema da serventia. O envio deve ocorrer com o arquivo assinado pela serventia com a chave privada do usuário da serventia. Não é necessário criptografar o arquivo com a Chave pública do TJMG. O WebService requer autenticação via usuário e senha - no momento da transmissão dos selos e atos praticados, o usuário, previamente autorizado, deve informar seu usuário e senha de acesso à aplicação de Selo de Fiscalização Eletrônico. O método de autenticação no WebService deve ser "http Basic Authentication".
Caso a aplicação de Selo de Fiscalização Eletrônico encontre alguma inconsistência no arquivo enviado, o usuário receberá um vetor de String com inconsistências encontradas e nenhum ato praticado será importado para a aplicação. Caso contrário, a aplicação retornará a mensagem informando que o arquivo foi processado com sucesso.
Clique aqui para visualizar a relação de mensagens que podem ser retornadas pelo sistema
Observe os fluxos abaixo para facilitar o entendimento quanto à utilização dos métodos do webservice assíncrono. O primeiro fluxo se refere ao envio do arquivo de atos praticados. Uma vez que o envio tenha sido realizado com sucesso, o número de protocolo retornado deverá ser utilizado no segundo fluxo para a obtenção das mensagens de processamento referentes a esse envio. Vale ressaltar que, com o número de protocolo, o usuário poderá também obter as mensagens acessando diretamente no SISNOR WEB, menu "Envio de atos > Consulta de envios".
Envio de atos Assíncrono
Envio de atos Assíncrono
Obtenção de mensagens Assíncrono
Obtenção de mensagens Assíncrono

Exemplo: Cliente WS Assíncrono - Enviar Atos

A seguir, mostramos um exemplo de código que implementa um cliente WebService assíncrono com login para o envio de atos. Esse código é meramente ilustrativo, e foi feito em Java com a API JAX WS.
ATENÇÃO: no envio assíncrono, a data/hora considerados para a determinação do envio em atraso são a data/hora da transmissão, e não a data/hora do processamento do arquivo. Ou seja, o usuário não será prejudicado caso, por exemplo, o arquivo transmitido seja muito grande ou o sistema esteja sobrecarregado no momento da transmissão.
O método "enviarAtos" deverá ser utilizado pelo programa cliente para protocolar um envio de atos. O número do protocolo será, então, usado pelo programa cliente na chamada aos demais métodos assíncronos.
O método "enviarAtos" terá um dos seguintes retornos:
  • Número do protocolo
  • -1: Usuário sem permissão
  • -2: Acesso inválido
  • -3: Existe arquivo de atos protocolado ainda não processado para a serventia
  • -4: Erro interno ao protocolar o arquivo
  • -5: Código da serventia inválido
  • UploadAtoPraticadoService service = new UploadAtoPraticadoService();
    UploadAtoPraticado imp = service.getUploadAtoPraticadoPort();
    String codigoServentia = CODIGO_SERVENTIA; // código de 10 dígitos, no formato 1111223344 (1111 = municipio, 22 = tipo de serviço, 33 = sequencial, 44 = dígito verificador)
    String enderecoArquivo = "c:/arquivo-teste.xml";
    
    Map reqCtx = ((BindingProvider)imp).getRequestContext();
    reqCtx.put(BindingProvider.USERNAME_PROPERTY, "usuario");
    reqCtx.put(BindingProvider.PASSWORD_PROPERTY, "senha");
    
    String arquivo = FileUtils.readFileToString(new File(enderecoArquivo));
    long protocolo = imp.enviarAtos(codigoServentia, arquivo.getBytes());
    System.out.println("Protocolo gerado: " + protocolo);						
    								

    Exemplo: Cliente WS Assíncrono - Situação do Envio de Atos

    A seguir, mostramos um exemplo de código que implementa um cliente WebService assíncrono com login para verificação da situação de um envio de atos. Esse código é meramente ilustrativo, e foi feito em Java com a API JAX WS.
    O método "situacaoEnvioAtos" terá um dos seguintes retornos:
  • -6: Protocolo não existe: Se o protocolo não foi encontrado ou não pertence à serventia informada.
  • -5: Código da serventia inválido
  • -4: Erro interno ao pesquisar protocolo
  • -1: Usuário sem permissão: Se a serventia não for válida para o usuário logado.
  • 0: Aguardando processamento: Se ainda estiver na fila de processamento.
  • 1: Processado com sucesso: Se foi processado e os atos foram aceitos.
  • 2: Processado com erro: Se foi processado e ocorreu erro em algum ato.
  • 3: Falha no processamento: Se ocorreu qualquer erro ao processar o arquivo, o impedindo de terminar o processamento. Por exemplo se o arquivo não for um xml válido.
  • UploadAtoPraticadoService service = new UploadAtoPraticadoService();
    UploadAtoPraticado imp = service.getUploadAtoPraticadoPort();
    String codigoServentia = CODIGO_SERVENTIA; // código de 10 dígitos, no formato 1111223344 (1111 = municipio, 22 = tipo de serviço, 33 = sequencial, 44 = dígito verificador)
    long protocolo = PROTOCOLO;
    
    Map reqCtx = ((BindingProvider)imp).getRequestContext();
    reqCtx.put(BindingProvider.USERNAME_PROPERTY, "usuario");
    reqCtx.put(BindingProvider.PASSWORD_PROPERTY, "senha");
    
    long situacao = imp.situacaoEnvioAtos(codigoServentia, protocolo);
    System.out.println("Situacao do envio de atos: " + situacao);		
    								

    Exemplo: Cliente WS Assíncrono - Mensagens do Envio de Atos

    A seguir, mostramos um exemplo de código que implementa um cliente WebService assíncrono com login para obtenção das mensagens de processamento de um envio de atos. Esse código é meramente ilustrativo, e foi feito em Java com a API JAX WS.
    O método "mensagensEnvioAtos" terá como retorno uma lista com as mensagems referentes ao processamento do envio de atos do protocolo informado. Caso o processamento não tenha sido ainda realizado, o método retornará uma lista vazia. Para identificar se o processamento já foi realizado, utilize o método "situacaoEnvioAtos".
    UploadAtoPraticadoService service = new UploadAtoPraticadoService();
    UploadAtoPraticado imp = service.getUploadAtoPraticadoPort();
    String codigoServentia = CODIGO_SERVENTIA; // código de 10 dígitos, no formato 1111223344 (1111 = municipio, 22 = tipo de serviço, 33 = sequencial, 44 = dígito verificador)
    long protocolo = PROTOCOLO;
    
    Map reqCtx = ((BindingProvider)imp).getRequestContext();
    reqCtx.put(BindingProvider.USERNAME_PROPERTY, "usuario");
    reqCtx.put(BindingProvider.PASSWORD_PROPERTY, "senha");
    
    List mensagens = imp.mensagensEnvioAtos(codigoServentia, protocolo);
    for(String s : mensagens) {
        System.out.println(s);
    }	
    								

    Exemplo: Cliente WS Assíncrono - Obter último protocolo

    A seguir, mostramos um exemplo de código que implementa um cliente WebService assíncrono com login para obter o último protocolo. Esse código é meramente ilustrativo, e foi feito em Java com a API JAX WS.
    O método "obterUltimoProtocolo" foi criado para auxiliar os desenvolvedores no tratamento de casos em que, ao realisar um envio de atos, a conexão entre o sistema da Serventia e o SISNOR WEB seja por algum motivo interrompida. Caso isso aconteça, o método deverá ser utilizado para que o sistema da Serventia obtenha o protocolo desse envio.
    O método "obterUltimoProtocolo" terá um dos seguintes retornos:
  • Número do protocolo
  • -1: Usuário sem permissão
  • -2: Acesso inválido
  • -4: Erro interno ao recuperar último protocolo
  • -5: Código da serventia inválido
  • -6: Protocolo não existe
  • UploadAtoPraticadoService service = new UploadAtoPraticadoService();
    UploadAtoPraticado imp = service.getUploadAtoPraticadoPort();
    String codigoServentia = CODIGO_SERVENTIA; // código de 10 dígitos, no formato 1111223344 (1111 = municipio, 22 = tipo de serviço, 33 = sequencial, 44 = dígito verificador)
    
    Map reqCtx = ((BindingProvider)imp).getRequestContext();
    reqCtx.put(BindingProvider.USERNAME_PROPERTY, "usuario");
    reqCtx.put(BindingProvider.PASSWORD_PROPERTY, "senha");
    
    long protocolo = imp.obterUltimoProtocolo(codigoServentia);
    System.out.println("Protocolo do último envio de atos: " + protocolo);						
    								

    Exemplo: Cliente WS Assíncrono - Obter recibo

    O método "obterRecibo" foi criado para permitir aos desenvolvedores implementarem em seus próprios sistemas a obtenção das informações do recibo de Envio de Atos Praticados. A disponibilização do recibo de transmissão de atos praticados ocorrerá somente no dia seguinte à transmissão dos atos. O recibo é gerado com base na data de transmissão dos atos praticados, não é considerada a data da prática do ato, pois trata-se de recibo de transmissão e não de recibo de prática de ato.
    O método "obterRecibo" terá como retorno um "Recibo" em formato XML. O código do recibo poderá ter os seguintes valores:
  • Código do recibo (se número positivo)
  • -1: Usuário sem permissão
  • -4: Erro interno ao recuperar recibo
  • -5: Código da serventia inválido
  • -7: Data inválida
  • -8: Recibo inexistente
  • A seguir, mostramos um exemplo de requisição e retorno obtido via SoapUI. Esse código é meramente ilustrativo.
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sel="http://selos.tjmg.jus.br/">
       <soapenv:Header/>
       <soapenv:Body>
    	 <sel:obterRecibo>
    	 	 <serventia>0024010162</serventia>
    	 	 <dataReferencia>2016-01-29</dataReferencia>
    	 </sel:obterRecibo>
       </soapenv:Body>
    </soapenv:Envelope>					
    								
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
       <soap:Body>
          <ns2:obterReciboResponse xmlns:ns2="http://selos.tjmg.jus.br/">
             <return>
                <atoPraticado>
                   <codigoFiscal>8401</codigoFiscal>
                   <codigoSeguranca>8917586806271171</codigoSeguranca>
                   <codigoUnico>AAA00001</codigoUnico>
                   <dataPraticaAto>2016-01-28T00:00:00</dataPraticaAto>
                   <dataTransmissao>2016-01-29T11:44:33</dataTransmissao>
                   <dataUtilizacao>2016-01-28T09:08:26</dataUtilizacao>
                   <tabelaReferencia>2016</tabelaReferencia>
                </atoPraticado>
                <atoPraticado>
                   <codigoFiscal>8401</codigoFiscal>
                   <codigoSeguranca>4219887665443321</codigoSeguranca>
                   <codigoUnico>AAA00002</codigoUnico>
                   <dataPraticaAto>2016-01-28T00:00:00</dataPraticaAto>
                   <dataTransmissao>2016-01-29T11:44:33</dataTransmissao>
                   <dataUtilizacao>2016-01-28T09:12:05</dataUtilizacao>
                   <tabelaReferencia>2016</tabelaReferencia>
                </atoPraticado>
                <codigo>147234</codigo>
                <codigoSeguranca>8402483845656467</codigoSeguranca>
                <dataReferencia>2016-01-29T00:00:00</dataReferencia>
             </return>
          </ns2:obterReciboResponse>
       </soap:Body>
    </soap:Envelope>					
    								
    A seguir, mostramos um exemplo de código que implementa um cliente WebService com login para obter o recibo. Esse código é meramente ilustrativo, e foi feito em Java com a API JAX WS.
    UploadAtoPraticadoService service = new UploadAtoPraticadoService();
    UploadAtoPraticado imp = service.getUploadAtoPraticadoPort();
    String codigoServentia = CODIGO_SERVENTIA; // código de 10 dígitos, no formato 1111223344 (1111 = municipio, 22 = tipo de serviço, 33 = sequencial, 44 = dígito verificador)
    String dataReferencia = "2016-01-29"; // data no formato "yyyy-MM-dd"
    
    Map reqCtx = ((BindingProvider)imp).getRequestContext();
    reqCtx.put(BindingProvider.USERNAME_PROPERTY, "usuario");
    reqCtx.put(BindingProvider.PASSWORD_PROPERTY, "senha");
    Recibo retorno = imp.obterRecibo(CODIGO_SERVENTIA, dataReferencia);					
    								

    WSDL do Ambiente de Produção

    O Web Services Description Language (WSDL) do Ambiente de Produção está disponível no endereço https://selos.tjmg.jus.br/webservices/UploadAtoPraticado?wsdl. O endereço Simple Object Access Protocol (SOAP) é "https://selos.tjmg.jus.br/webservices/UploadAtoPraticado". ATENÇÃO: os métodos assíncronos somente serão disponibilizados em produção em 01/10/2015. Até lá, deverá ser utilizado o método síncrono. Para testes dos métodos assíncronos, favor utilizar o ambiente de homologação, que já contempla os novos métodos desde 01/09/2015.
    Clique aqui para visualizar o WSDL do Ambiente de Produção

    Chave pública do TJMG

    -----BEGIN CERTIFICATE-----
    MIIDczCCAlugAwIBAgIEZ2F1WDANBgkqhkiG9w0BAQsFADBqMQswCQYDVQQGEwJCUjEVMBMGA1UE
    CBMMTWluYXMgR2VyYWlzMRcwFQYDVQQHEw5CZWxvIEhvcml6b250ZTENMAsGA1UEChMEVEpNRzEN
    MAsGA1UECxMEVEpNRzENMAsGA1UEAxMEVEpNRzAeFw0xMzA3MDIxNjM5MDBaFw0xMzA5MzAxNjM5
    MDBaMGoxCzAJBgNVBAYTAkJSMRUwEwYDVQQIEwxNaW5hcyBHZXJhaXMxFzAVBgNVBAcTDkJlbG8g
    SG9yaXpvbnRlMQ0wCwYDVQQKEwRUSk1HMQ0wCwYDVQQLEwRUSk1HMQ0wCwYDVQQDEwRUSk1HMIIB
    IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApyliHR49lF/XcMCt0EjHcqzWwG0TjMzRX41O
    SmYDNx3yJOs4vnUKxVE4sLaeCePNbFpIo+PJadEoLvl3z2Z8kbLjbTA+72+d1uJRFG7jhczPtIzh
    kpeqTkwbwUn3pm3YeF8UslWe/EjpXxbi6BYCWkR+qf352QNX7kYLM6dtOv/bBOtmjh3ZibHbTnEh
    clMSUIBhLWfkaCn7PgMKZLszshz+g7436v4/7/hKEeMTLmlhmw7P06ahcaJsYEdCSVaD60hnl5W3
    4DtsHBv1sn4MrUjs5RS5lI/s6l8T8XQP70RG4WpKDHO2PbzbjPo9xvxm0C70ur/daBqejU8yd5dR
    IQIDAQABoyEwHzAdBgNVHQ4EFgQUVqwwZs4ff9j9qu1asmIoz1dh8RgwDQYJKoZIhvcNAQELBQAD
    ggEBADyO+v79KDRDqJFRyRkkOGNlM5iYiGVxMdh/GSsTZzqPCeciNlDAh5lzi1q4NIHjbzhTdPtR
    qgPz+LZFZkt7mlvhxHxmzEJC+SAuzL4PfZy/MqWAYu+fQ+SzzG/yLgVjgJgOzCD8Hlmt8FjLHXOr
    h71wNmSPc3DUEuE0fDK64sZjMB3cL9ja/RmKPUVglDo9CUFPHghTpKcwz/cTP1OTXBjT7dEFUK5A
    Tw889z1NVg3QMn4MKbcRtFWsMOb7vaEhjmLHoxp7/fsdGn2b+FSK3QqMjcE6HOh27v4AVXogS2Io
    WIKxMWI3LhAsGtOcGCynXLXsTvJriXYyO5IvlZvsYk0=
    -----END CERTIFICATE-----
    							
    Download: Arquivo de Chave pública do TJMG

    Exemplo: Criptografar e Assinar documento

    A seguir, segue um projeto exemplo que ilustra o processo de criptografar e assinar o arquivo de atos praticados. Ele é meramente ilustrativo e foi feito em Java com o auxílio da biblioteca Apache Santuario. Para orientações quanto à execução do projeto, realizar a leitura do arquivo LEIAME.txt.
    ATENÇÃO: Este projeto segue a licença MIT, cuja descrição pode ser encontrada clicando-se aqui. O TJMG não fornece nenhum tipo de garantia ou suporte para este projeto, e o disponibiliza apenas como exemplo para os desenvolvedores de software.
    Download: Projeto tjmgCrypt

    Referências

    Web Services, por Mauro Sant'Anna

    Sistema Integrado de Apoio à Fiscalização dos Serviços Notariais e de Registro
    Portal do Desenvolvedor de Sistemas para Serventias

    Av. Afonso Pena, 4001 - Serra - 30.130-008 - Belo Horizonte - MG - Brasil - TEL.: (31) 3306-3100 - [ + Contatos ]
    © Copyright 1997-, Tribunal de Justiça do Estado de Minas Gerais.