10. Web Services
10.1. EnviaLoteRPS
10. Web Services
« Anterior
10.2. ConsultaSituacaoLoteRPS
Próximo »

10.1. EnviaLoteRPS

Envia Lote de RPS

Assinatura

string EnviaLoteRPS(string cMunicipio, string nomeCertificado, int tipoAmbiente, string versao, ref string msgDados, out int cResultado, out string msgResultado, string CNPJPrestador, out string numeroLote, out string dataRecebimento, out string protocolo, out string listaMensagemRetorno, string proxy, string usuario, string senha, string licenca)

Descrição:

Envia RPS, funcionalidade para enviar um lote de RPS, após o envio é necessário fazer a busca do resultado do processamento do lote.

O processo de envio é ASSÍNCRONO (Exceto a Prefeitura de São Paulo que é SÍNCRONO)

É importante observar que o processo de envio de Lote de RPS é ASSÍNCRONO, isto quer dizer que o Web Service da prefeitura recebe o Lote de RPS e devolve um protocolo de recebimento do lote, mas isto não quer dizer que o Lote de RPS foi aceito e convertido em NFS-e.

Ainda é necessário realizar a consulta do resultado do processamento do Lote de RPS para obter o resultado do processamento do Lote de RPS enviado, o processo ideal é:

  1. enviar o RPS pela funcionalidade EnviaLoteRPS;

    As prefeituras que adotam o padrão DSF e a prefeitura de São Paulo devolvem o número do lote ao invés do número do protocolo, assim utilize o número do lote para as consultas A recepção da prefeitura de SP é síncrona e ocorre a devolução do resultado do processamento do RPS.

  2. buscar o resultado do processamento do RPS com a funcionalidade ConsultaSituacaoLoteRPS, código de situação de lote de RPS:

    1 - Não Recebido;
    2 - Não Processado;
    3 - Processado com Erro;
    4 - Processado com Sucesso.

    Este passo não é necessário nas prefeituras que adotam o padrão DSF e para a prefeitura de Blumenau e São Paulo, pois inexiste a funcionalidade

  3. se o resultado da ConsultaStituacaoLoteRPS for igual a 3 ou 4, buscar o lote processado com a ConsultaLoteRPS;

  • se o RPS tiver sido convertido em NFS-e, basta enviar o link da NFS-e para o tomador do serviço nas cidades onde a prefeitura não envia o link da NFS-e para o e-mail do tomador do serviço;
  • caso contrário, é preciso verificar a causa da falha, corrigir e reiniciar o processo.

Ambiente de homologação / testes

Nas cidades atendidas pela TIPLAN, pela Ábaco e na cidade de Recife/PE e Blumenau/SC não existe ambiente de homologação ou de testes, assim todos os RPS são enviados para o ambiente de produção, sendo necessário o cancelamento posterior.

Preenchimento do nomeCertificado

informar o Nome do titular (campo Assunto) do certificado digital a ser utlizado na conexão SSL. Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS"

Opções disponíveis:

1. uso de certificado digital existente no repositório MY do CSP do usuário corrente (currentuser)
É a forma de mais comum de uso, cabe resssltar que é a única forma de uso de certificado digital do tipo A3 que a DLL oferece.
O usuário deve passar como parâmetro o campo assunto do certificado no parâmetro NomeCertificado para que a DLL localize um certificado digital com mesmo assunto no repositório MY do currentuser do equipamento.
Esta forma de uso requer a prévia instalação do certificado digital na conta do usuário do Windows (logon) que irá utilizar o certificado digital.

2. uso de certificado digital em arquivo no formato pfx
Permite o de uso de certificado digital em arquivo formato pfx.
O caminho da localização (path) do arquivo pfx deve ser passado para a DLL no formato: ARQUIVO | [nome do arquivo pfx com caminho completo] | [senha do arquivo] no parâmetro NomeCertificado, ex.: "ARQUIVO|c:\certificado.pfx|senha".
Esta opção só funciona com certificado digital do tipo A1.

3. uso de certificado digital em string base64
Permite uso o arquivo do certificado digital em formato pfx convertido em uma string base64. O certificado digital em string base64 deve ser passado para a DLL no formato: CERTIFICADO | [string base64 do arquivo pfx] | [senha do arquivo] no parâmetro NomeCertificado, ex.: "CERTIFICADO|MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy|senha".
Esta opção só funciona com certificado digital do tipo A1. É uma opção de uso que oferece maior versatilidade, pois permite o armazenamento do certificado digital em banco de dados na aplicação. É a forma mais indicada para uso em ASP.NET.


Parâmetros:

nome tipo fluxo descrição
cMunicipio string entrada informar o código do IBGE do Município para o qual será enviado o lote de RPS
nomeCertificado string entrada informar o certificado digital que será utilizado na conexão SSL:
1. informar o assunto do certificado digital que deve existir no repositório MY do current user, ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS".
2. informar: ARQUIVO | [nome do arquivo pfx com caminho completo] | [senha do arquivo] para uso do certificado digital em arquivo pfx, ex.: "ARQUIVO|c:\certificado.pfx|senha".
3. informar: CERTIFICADO | [string base64 do arquivo pfx] | [senha do arquivo] no parâmetro NomeCertificado para passar uma string contendo um certificado digital em base64, ex.:"CERTIFICADO|MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy|senha".
(novas opções)
tipoAmbiente inteiro entrada inrformar o ambiente de envio: 1 - produção e 2 - homologação
Obs.:Nas cidades atendidas pela TIPLAN, pela Ábaco e na cidade de Recife/PE e Blumenau/SC não existe ambiente de homologação ou de testes, assim todos os RPS são enviados para o ambiente de produção, sendo necessário o cancelamento posterior.
versao string entrada informar a versão do XML, necessário informar "1" para consumir o WS da prefeitura de SP.
msgDados string entrada informar a string com o lote de RPS neste parâmetro, retorna a mensagem XML enviada para o WS.
cResultado inteiro saída retorna o resultado da chamada do WS.
msgResultado string saída retorna a literal do resultado da chamada do WS
CNPJPrestador string entrada informar o CNPJ do prestador do serviço.
numeroLote string saída retorna o número do lote que foi recebido pela prefeitura.
As prefeituras que adotam o padrão DSF e a prefeitura de Blumenau e São Paulo devolvem o número do lote atribuído ao lote pela prefeitura, este número é necessário para as consultas do lote de RPS.
dataRecebimento string saída retorna a data de recebimento do lote pela prefeitura
protocolo string saída retorna o número do protocolo de recebimento do lote atribuído pela prefeitura, este protocolo será necessário para consultar o resultado do processamento do lote.
As prefeituras que adotam o padrão DSF e a prefeitura de Blumenau e São Paulo não devolvem o número do protocolo e as consultas devem ser realizadas com base no numeroLote devolvido pela prefeitura.
listaMensagemRetorno string saída retorna as mensagens de erro ou advertência do WS
proxy string entrada informar 'http://proxyserver:port' quando existir uso de proxy no ambiente. verificar com o cliente qual é o endereço do servidor proxy e a porta utilizada proxy, assim teríamos algo do tipo 'http://192.168.15.1:443'
usuario string entrada informar o usuário para autenticação no proxy se necessário
senha string entrada informar a senha de autenticação no proxy se necessário
licenca string entrada informar a chave da licença de uso, esta funcionalidade pode ser utilizada sem quaquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento, para maiores detalhes veja as condições de uso


Provedores de Solução:

Tratamento das mensagens de retorno

O WS devolve as informações em uma mensagem XML no padrão EnviarLoteRpsResposta, a DLL pega algumas informações que julga importante e devolve nos parâmetros de retorno para facilitar a vida do usuário. Todos os WS devolvem uma lista de mensagem de erro e advertência com o código de identificação da mensagem de erro, a descrição do erro e a correção sugerida, estas informações são extraída da resposta do WS pela DLL e devolvidas no parâmetro listaMensagemErro separada pelo caractere pipe (|).

Exemplo de mensagem XML de retorno do WS


<EnviarLoteRpsResposta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <NumeroLote xsi:nil="true" />
 <DataRecebimento xsi:nil="true" />
 <ListaMensagemRetorno>
   <MensagemRetorno>
     <Codigo>E512</Codigo>
     <Mensagem>A lista de RPS encontra-se vazia.</Mensagem>
     <Correcao>Informe ao menos 1 (hum) RPS no item ListaRps e retransmita.</Correcao>
   </MensagemRetorno>
   <MensagemRetorno>
     <Codigo>E513</Codigo>
     <Mensagem>A quantidade de RPS informada no cabeçalho não confere com a quantidade de RPS enviada.</Mensagem>
     <Correcao>Informe a quantidade correta de RPS para o lote e retransmita.</Correcao>
   </MensagemRetorno>
   <MensagemRetorno>
     <Codigo>E44</Codigo>
     <Mensagem>CNPJ do prestador inválido</Mensagem>
     <Correcao>Informe o número do CNPJ correto do prestador.</Correcao>
   </MensagemRetorno>
   <MensagemRetorno>
     <Codigo>E517</Codigo>
     <Mensagem>Inscrição Municipal do prestador inválida.</Mensagem>
     <Correcao>Informa a inscrição municipal válida para o prestador de serviços.</Correcao>
   </MensagemRetorno>
 </ListaMensagemRetorno>
</EnviarLoteRpsResposta>

conteúdo do parâmetro listaMensagemRetorno do WS

E512|A lista de RPS encontra-se vazia.|Informe ao menos 1 (hum) RPS no item ListaRps e retransmita.

E513|A quantidade de RPS informada no cabeçalho não confere com a quantidade de RPS enviada.|Informe a quantidade correta de RPS para o lote e retransmita.

E44|CNPJ do prestador inválido|Informe o número do CNPJ correto do prestador.

E517|Inscrição Municipal do prestador inválida.|Informa a inscrição municipal válida para o prestador de serviços.

Retorno:

O resultado da chamada do EnviaLoteRPS é o XML de resposta do WS.

O parâmetro cResultado retorna um código numérico com os seguintes significados:

código Mensagem origem regra
5000 Web Service consumido com sucesso, analise a mensagem de resposta do Web Service. DLL -
5001 Erro: Falha na conexão: [{0:0}] (Causa provável: o certificado cliente: 1.não é ICP-Brasil; 2.fora do prazo de validade; 3.revogado; 4.certificado cliente não confiável para o Web Service acessado, contatar a SEFAZ) DLL -
5002 Erro: Falha na conexão: [{0:0}] (Causa provável: a cadeia de certificação do Web Service acessado ou do certificado cliente inexistente no repositório de certificados do usuário corrente do Windows) DLL -
5003 Erro: Falha na conexão: [{0:0}] (Causa provável: serviço inexistente, verifique se o nome do serviço da url acessada está correto no arquivo wsNFSe.xml) DLL -
5004 Erro: Falha na conexão: [{0:0}] (Causa provável: método não permitido) DLL -
5005 Erro: Falha na conexão: [{0:0}] (Causa provável: a url não encontrada, verifique se o nome do domínio da url acessada está correto no arquivo wsNFSe.xml) DLL -
5006 Erro: Falha na conexão: [{0:0}] (Causa provável: Time-Out, o WS não respondeu a solicitação no tempo estabelecido: [{1:0}]) DLL -
5007 Erro: Falha na conexão: [{0:0}] (Causa provável: mensagem maior que a permitida) DLL -
5008 Erro: Falha na conexão: [{0:0}] (Causa provável: Servidor com problemas) DLL -
5009 Erro: Falha na conexão: [{0:0}] (Causa provável: Serviço não implementado) DLL -
5010 Erro: Falha na conexão: [{0:0}] (Causa provável: Serviço temporariamente indisponível, servidor sem recursos para atender a solicitação) DLL -
5011 Erro: Falha na conexão: [{0:0}] (Causa provável: Causa provável da falha na conexão: Rede indisponível) DLL -
5012 Erro: Falha na conexão: [{0:0}] (Causa provável: Versão do SOAP não suportada DLL -
5013 Erro: Falha na conexão: [{0:0}] (Causa provável: Web Service não consumido, não houve nenhum retorno ou resposta) DLL -
5014 Erro: Falha na conexão: [{0:0}] (Causa provável: Web Service não consumido, falha desconhecida) DLL -
5015 Erro: Falha na conexão: Tempo limite de time-out alcançado [{0:0} ms] - [{1:0}] DLL -
5016 Erro: Falha na conexão: Falha da Biblioteca Criptografica: [{0:0}] DLL -
5017 Erro: Falha ao tratar o XML de retorno do WS: [{0:0}] DLL -
5018 Erro: Web Service não devolveu nehuma mensagem de resposta. DLL -
5019 Erro: O município: [{0:0}] não oferece o WS: [{1:0}]. DLL -
5020 Erro: A mensagem XML é inválida - [{0:0}]. DLL -
5101 Erro: A mensagem de retorno do WS não é um XML válido: [{0:0}] DLL -
5102 Erro: Tag cStat inexistente na mensagem de retorno [{0:0}] DLL -
5103 Erro: Tag xMotivo inexistente na mensagem de retorno [{0:0}] DLL -
5104 Erro: Tag [{0:0}] inexistente na mensagem de retorno [{1:0}] DLL -
5105 Erro: O WS não devolveu nenhum resultado DLL -
5201 Erro: O código do tipo de ambiente [{0:0}] informado diferente de 1 - produção e 2 - homologação DLL -
5202 Erro: Ocorreu um erro de validação do XML do arquivo WSNFSE.xml: [{0:0}] DLL -
5203 Erro: Inexiste url para o município [{0:0}] informada no ambiente [{1:0}] desejado, verifique se existe atualização do arquivo WSNFSE.xml disponível. DLL -
5204 Erro: Arquivo WSNFSE.XML com a URL do WS não localizado em {0:0} DLL -
5205 Erro: Ocorreu um erro inesperado no processamento da URL do município [{0:0}] : [{1:0}] DLL -
5601 Erro: O parâmetro cMuncipio não foi informado DLL -
5602 Erro: A DLL ainda não foi customizada para o município: [{0:0}], contate a FlexDocs para verificar a possibilidade de customizar a DLL para o município desejado pelo canal www.flexdocs.com.br/suporte DLL -
5603 Erro: O código da UF do parâmetro cMunicipio: [{0:0}] é inválido. DLL -
5604 Erro: O DV do parâmetro cMunicipio: [{0:0}] é inválido. DLL -
5605 Erro: O parâmetro CNPJPrestador não foi informado. DLL -
5606 Erro: O parâmetro CNPJPrestador: [{0:0}] não é um CNPJ válido.
5701 Erro: O lote não é um XML válido: [{0:0}]
5702 Erro: A tag Cnpj do lote não localizado: [{0:0}]
5703 Erro: Falha ao acessar o conteúdo da tag Cnpj
7001 Erro: O CNPJ não foi informado.
7002 Erro: O CNPJ informado: [CNPJ informado] tem tamanho diferente de 14 [tamanho do CNPJ informado]
7003 Erro: A licença não foi informada ou tem tamanho = 0.
7004 Erro: A licença informada: [licenca informada] tem tamanho diferente de 128:[licenca informada]
7005 Erro: A licença informada: [licenca informada] não pertence ao CNPJ:[CNPJ informado]
7006 Erro: O tipo de ambiente informado: [tipo ambiente informado] é inválido.

Os erros com código > 5000 são erros tratados pela DLL e ocorrem nas seguintes situações:

Histórico de atualização:

10.1. EnviaLoteRPS
10. Web Services
« Anterior
10. Web Services
Próximo »
10.2. ConsultaSituacaoLoteRPS