Considerações Iniciais

Este manual tem como objetivo propiciar o Sistema de Automação Comercial a realizar a integração com o sistema de nota fiscal digital através do Web services.

Descrição dos serviços

O endereço de produção (notas reais) http://www.brgov.com.br/wsnfd/serviconfd.asmx?WSDL contém a descrição do serviço que deve ser consumido passando os parâmetros detalhados. O ambiente de homologação será passado via e-mail

OBS.: Ambos os ambientes necessitam de uma liberação para envio da nota.

EnviarNota

O método EnviarNota retorna uma string como resposta, esta string pode contém o código de autenticidade da nota, quando a mesma foi processada com sucesso, ou uma mensagem com a descrição do erro. Para saber quando houve sucesso ou erro no processamento da nota veja abaixo:

Quando o retorno é positivo o conteúdo da string começa com o numero 1 que indica sucesso no processamento e logo após o cod. de autenticidade da nota, segue exemplo:
1-MOPD33J.POA234J.OI5WR465.098KJDDW

Quando o retorno é negativo o conteúdo da string começa com o numero 0(zero) que indica erro no processamento e logo após a descrição do erro. segue exemplo:
0-Esta nota já consta no sistema.

EnviarNotaRetornaurlNota

O método EnviarNotaRetornaurlNota retorna uma string como resposta, esta string pode contém a URL para impressão da nota, quando a mesma foi processada com sucesso, ou uma mensagem com a descrição do erro. Para saber quando houve sucesso ou erro no processamento da nota veja abaixo:

Quando o retorno é positivo o conteúdo da string começa com o numero 1 que indica sucesso no processamento e logo após a URL de impressão. Segue exemplo:
1-http://www.brgov.com.br/nfd2010/WebPages/Nfd/Usuarios/NotaFiscalImpressao.aspx?p=9999&a=MOO5D33JPOA2378TROI5WR465098KJDFRT&n=99

Quando o retorno é negativo o conteúdo da string começa com o numero 0(zero) que indica erro no processamento e logo após a descrição do erro. segue exemplo:
0-Esta nota já consta no sistema.

Caso a nota seja impressa pelo sistema de automação o cod. de autenticidade deve ser incluido na impressão.

Ambos os métodos possui 4 parametros que devem ser informados: .

Parâmetro

Tipo

Descrição

codPrefeitura

inteiro

Código da Prefeitura (ver lista de prefeituras).

notaFiscal

String

A nota fiscal possui um formato XML (Extensible Markup Language), para facilitar o envio a nota deve ser enviada como uma string (ver estrutura da nota).

cnpjPrestador

String

CNPJ/CPF do prestador.

senhaNFD

String

Senha de acesso do prestador ao sistema de Nota Fiscal Digital.

Lista de Prefeituras

Código Prefeitura Lista de Atividades

3150

Prefeitura de Rio das Pedras/SP

Clique aqui

0044

Prefeitura de Piracaia/SP

Clique aqui

3039

Prefeitura de Ipeúna/SP

Clique aqui

Estrutura da Nota Fiscal

Tag

Tipo

Descrição

NUMERO_NOTA

inteiro

Número da nota fiscal, deve ser sequencial e não repetir.

DATA_EMISSAO

Date

Data de emissão da nota fiscal, não pode ser maior que a data de hoje ou menor que a data da última nota.

CODIGO_GERAL_ATIVIDADE

String

Código da geral atividade, no caso do município de Piracaia e Ipeúna deve ser em branco, nos outros casos deve contém o código geral da atividade.

CODIGO_ATIVIDADE

String

No caso do munícipio de Piracaia e Ipeúna deve contém o código da atividade da nota em questão que está no site da Nota Fiscal Digital em "Minhas Atividades". A atividade principal está no cadastro do Contribuinte e, caso não esteja em "Minhas Atividades", deve ser solicitado a Prefeitura o cadastramento desta atividade na lista de atividade do Contribuinte. Nos demais municípios deve ser em branco.

OUTRAS_INFORMACOES

String

Outras informações relativas a nota, para salto de linha informar "\r\n", limitado a 10 linhas e cada linha com no máximo 85 caracteres.

DESCRICAO_SERVICOS

String

Descrição dos serviços prestados, para salto de linha informar "\r\n", para mais de um espaço em branco informar "&" + "nbsp;", tudo junto, para cada espaço.

VALOR_TOTAL_NOTA

Valor

Valor total da nota, deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

STATUS_ISS_NOTA

inteiro

Status da nota:
1 = Normal
3 = Retida
4 = Simples Nacional
6 = M.E.I Micro Empresa Individual
7 = Iss Devido Fora Do Município

IRRF

Valor

IRRF deve possuir virgula separando o decimal e não conter separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

INSS

Valor

INSS deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

PIS

Valor

PIS deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

COFINS

Valor

COFINS deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

CONTRIBUICAO_SOCIAL

Valor

Contribuição social deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

VALOR_LIQUIDO

Valor

Valor líquido deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor.

VALOR_DEDUCAO_MATERIAIS

Valor

Valor dedução material deve possuir virgula separando o decimal e não possuir separador de milhar ex: 1000,00 (Mil reais), sempre deve possuir um valor. Este valor pode tem um limite variavel de acordo com cada Prefeitura

COD_MUNICIPIO_EXECUCAO_SERVICO

inteiro

Código do município de execução do serviço, caso o serviço seja executado em outro município (Clique aqui para baixar a lista de Municípios IBGE)

LOCAL_EXECUCAO_SERVICO

String

Local de execução do serviço, caso o serviço seja executado em outro local

TOMADOR_ESTRANGEIRO

String

Tomador estrangeiro, caso o tomador do serviço seja estrangeiro o documento do mesmo não será validado, conteúdo S = Sim ou N = Não

TOMADOR_DOCUMENTO

inteiro

Tomador documento, CNPJ/CPF/DOC do tomador.

TOMADOR_RAZAO

String

Tomador razão, razão/nome do tomador.

TOMADOR_LOGRADOURO

String

Tomador logradouro, logradouro do tomador.

TOMADOR_BAIRRO

String

Tomador bairro, bairro do tomador.

TOMADOR_CEP

String

Tomador CEP, CEP do tomador.

TOMADOR_INSCRICAO_ESTADUAL

String

Tomador I.E., Inscrição estadual do tomador, podendo ser em branco/vazio ou isento.

TOMADOR_INSCRICAO_MUNICIPAL

String

Tomador I.M., Inscrição municipal do tomador, podendo ser em branco/vazio ou isento.

TOMADOR_EMAIL

String

Tomador email, email do tomador, podendo ser em branco/vazio.

TOMADOR_TELEFONE

String

Tomador telefone, telefone do tomador, podendo ser em branco/vazio

TOMADOR_MUNICIPIO

Inteiro

Tomador município, município do tomador (Clique aqui para baixar a lista de Municípios IBGE)

ALIQUOTA

Valor

Aliquota, porcentagem(%) aplicada na nota.

PORCENTAGEM_REGIME_ESPECIAL

Valor

Porcentagem regime especial, caso o contribuinte seja imune/insento/estimativa... de ISS junto a prefeitura, deve ser informado esta porcentagem(%), caso não seja o caso deve ser zero(0)

Referente a execução do serviço: Caso o serviço seja executado em um Município diferente do Município do tomador e do prestador, o imposto deve ser recolhido/retido onde o serviço foi executado, sendo assim deve ser informado neste dois campos o endereço do local e o cod. Ibge (mesma lista enviada anteriormente) do município em questão, se a nota não se encaixar neste caso deve-se deixar ambos os campos em branco porém ambos devem estar no arquivo.

Referente a tomador estrangeiro: Quando o tomador é estrangeiro o mesmo não possui documentos de indentificação nacional, portanto deve-se enviar "S" no campo TOMADOR_ESTRANGEIRO, lembrando que o campo continua no layout e deve conter um valor e no caso de estrangeiro este documento não será validado pois se trata de um n° de passaporte ou alguma indentificação do tomador, os campos e devem sempre estar no arquivo porém quando não existir tal informação podem estar em branco.

Clique aqui para visualizar um exemplo da nota fiscal. Todos os campos/tags devem estar na estrutura da nota

Exemplo de Request para o WebService (C#)

string soapStr = @"
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<EnviarNota xmlns=""http://brgov.com.br/"">
<codPrefeitura>3150</codPrefeitura>
<notaFiscal><![CDATA[
<NOTA>
<NUMERO_NOTA>6053</NUMERO_NOTA>
<DATA_EMISSAO>21/05/2016</DATA_EMISSAO>
<CODIGO_GERAL_ATIVIDADE>09.00</CODIGO_GERAL_ATIVIDADE>
<CODIGO_ATIVIDADE/>
<OUTRAS_INFORMACOES>NOTA FISCAL DE PRESTAÇÃO DE SERVIÇOS</OUTRAS_INFORMACOES>
<DESCRICAO_SERVICOS>DESCRIÇÃO DO SERVIÇO</DESCRICAO_SERVICOS>
<VALOR_TOTAL_NOTA>440,00</VALOR_TOTAL_NOTA>
<STATUS_ISS_NOTA>1</STATUS_ISS_NOTA>
<IRRF>0,00</IRRF>
<INSS>0,00</INSS>
<PIS>0,00</PIS>
<COFINS>0,00</COFINS>
<CONTRIBUICAO_SOCIAL>0,00</CONTRIBUICAO_SOCIAL>
<VALOR_LIQUIDO>440,00</VALOR_LIQUIDO>
<VALOR_DEDUCAO_MATERIAIS>0,00</VALOR_DEDUCAO_MATERIAIS>
<COD_MUNICIPIO_EXECUCAO_SERVICO>3550407</COD_MUNICIPIO_EXECUCAO_SERVICO>
<LOCAL_EXECUCAO_SERVICO>LOCAL EXECUÇÃO</LOCAL_EXECUCAO_SERVICO>
<TOMADOR_ESTRANGEIRO>N</TOMADOR_ESTRANGEIRO>
<TOMADOR_DOCUMENTO>00000000000</TOMADOR_DOCUMENTO>
<TOMADOR_RAZAO>TOMADOR RAZAO/NOME</TOMADOR_RAZAO>
<TOMADOR_LOGRADOURO>LOGRADOURO</TOMADOR_LOGRADOURO>
<TOMADOR_BAIRRO>BAIRRO</TOMADOR_BAIRRO>
<TOMADOR_CEP>13400000</TOMADOR_CEP>
<TOMADOR_INSCRICAO_ESTADUAL>ISENTO</TOMADOR_INSCRICAO_ESTADUAL>
<TOMADOR_INSCRICAO_MUNICIPAL>ISENTO</TOMADOR_INSCRICAO_MUNICIPAL>
<TOMADOR_EMAIL>email@email.com</TOMADOR_EMAIL>
<TOMADOR_TELEFONE>1912345678</TOMADOR_TELEFONE>
<TOMADOR_MUNICIPIO>3506003</TOMADOR_MUNICIPIO>
<ALIQUOTA>3,00</ALIQUOTA>
<PORCENTAGEM_REGIME_ESPECIAL>0</PORCENTAGEM_REGIME_ESPECIAL>
</NOTA>
]]></notaFiscal>
<cnpjPrestador>21118045000135</cnpjPrestador>
<senhaNFD>fiscalb</senhaNFD>
</EnviarNota>
</soap:Body>
</soap:Envelope>";


HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.brgov.com.br/wsnfd/ServicoNfd.asmx");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
req.Headers.Add("SOAPAction", "http://brgov.com.br/EnviarNota");

  using (Stream stm = req.GetRequestStream())
  {
    using (StreamWriter stmw = new StreamWriter(stm))
    {
      stmw.Write(soapStr);
    }
  }

  using (StreamReader responseReader = new StreamReader(req.GetResponse().GetResponseStream()))
  {
     string result = responseReader.ReadToEnd();
  }

O que é Web services

É uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.

Muitos consideram que os Web services corrigem um grande problema da informática, a falta de integração de sistemas. Os Web services permitem que a integração de sistemas seja realizada de maneira compreensível, reutilizável e padronizada. É uma tentativa de organizar um cenário cercado por uma grande variedade de diferentes aplicativos, fornecedores e plataformas.

Quais as tecnologias envolvidas

As bases para a construção de um Web Service são os padrões XML (eXtensible Markup Language) e SOAP (Simple Object Access Protocol). O transporte dos dados é realizado normalmente via protocolo HTTP ou HTTPS para conexões seguras (o padrão não determina o protocolo de tranSporte). Os dados são transferidos no formato XML, encapsulados pelo protocolo SOAP. Os serviços disponíveis são descritos usando a linguagem WSDL (Web Services Description Language).

Considerações Finais

A transmissão deve ser na emissão da nota.

Este material foi desenvolvido com o intuito de sanar as necessidades existentes até o momento, dúvidas, sugestões ou comentários que venham contribuir para o enriquecimento deste material será bem vinda através do contato suporte@systembrasil.net.br