- 5. Web Service da DC-e
5.1. EnviaDCe - 5. Web Service da DC-e
« Anterior - 5.2. Cancela DC-e
Próximo »
5.1. EnviaDCe
Envia uma DC-e de forma síncrona.
Assinatura
string EnviaDCe(string siglaWS, string DCe, string nomeCertificado, string versao, out string msgDados, out string msgRetWS, out integer cStat, out string msgResultado, out string protocolo, out string nProtocolo, out string dhProtocolo, out string DCeAssinado, string proxy, string usuario, string senha, string licenca)
Descrição:
Funcionalidade para envio síncrono da DC-e para a SEFAZ.
PONTOS DE ATENÇÃO
tipoAmbiente
A DLL utiliza o valor informado na tag tpAmb da DC-e.
Preenchimento do nomeCertificado
Informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL e na assinatura digital.
Parâmetros da chamada:
nome | tipo | fluxo | descrição |
---|---|---|---|
siglaWS | string | entrada | informar "RS" |
DCe | string | entrada | informar a string com a DC-e neste parâmetro. a DC-e não deve estar assinado, pois a DLL realiza a assinatura da DC-e |
nomeCertificado | string | entrada | informar nome do titular do certificado a ser utilizado na conexão SSL com o WS e na assinatura digital da DC-e: É permitido o uso do certificado digital que tenha o mesmo CNPJ base (oito primeiros dígitos do CNPJ) do emissor da DC-e. 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: NUMEROSERIE|[número de série] quando não seja possível localizar o certificado digital pelo assunto; 3. 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". 4. 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". |
versao | string | entrada | informar a versão da mensagem XML: "1.00". |
msgDados | string | saída | retorna a mensagem XML enviada para o WS. |
msgRetWS | string | saída | retorna a mensagem XML de resposta do WS |
cStat | int | saída | retorna o código do resultado do envio da DC-e, veja tabela de códigos de retorno que existe adiante. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
protocolo | string | saída | retorna o número do protocolo e data de autorização no formato: nnnnnnnnnnnnnnnn dd/mm/aaaa hh:mm:ss |
nProtocolo | string | saída | retorna o número do protocolo de autorização de uso da DC-e |
dhProtocolo | string | saída | retorna data e hora da autorização no formato AAAA-MM-DDTHH:HH:MMzzz |
DCeAssinado | string | saída | retorna a string com a DC-e assinada |
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 https, a porta padrão do https é 443, 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 licenca de uso ou registro, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento ou registro, para maiores detalhes veja as condições de uso |
Retorno da chamada:
A chamada EnviaDCe devolve o XML do procDCe caso a DC-e tenha sido autorizado .
O resultado da chamada do EnviaDCe é devolvido no parâmetro cStat e tem os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
5101 | Erro: A mensagem de retorno do WS não é um XML válido: [mensagem de retorno] | DLL | - |
5102 | Erro: Tag cStat inexistente na mensagem de retorno [mensagem de erro] | DLL | - |
5103 | Erro: Tag xMotivo inexistente na mensagem de retorno [mensagem de erro] | DLL | - |
5104 | Erro: Tag [nome tag] inexistente na mensagem de retorno [mensagem de erro] | DLL | - |
5105 | Erro: O WS não devolveu nenhum resultado | DLL | - |
5201 | Erro: O código do tipo de ambiente [tipo de ambiente recebido pela DLL] informado diferente de 1 - produção e 2 - homologação | DLL | - |
5202 | Erro: A sigla da UF [sigla recebida pela DLL] informada é inválida | DLL | - |
5203 | Erro: Inexiste url para a UF [sigla UF] informada no ambiente [ambiente informado] desejado, verifique se existe atualização do arquivo [nome arquivo] disponível. | DLL | - |
5204 | Erro: Arquivo que contem a URL do WS não localizado em [caminho da aplicação] | DLL | - |
5205 | Erro: Ocorreu um erro inesperado no processamento da URL (URL) : [mensagem de ERRO DO WINDOWS] | DLL | - |
5206 | Erro: Ocorreu um erro de validação do XML (nome XML) : [mensagem de ERRO DO WINDOWS] | DLL | - |
5403 | Erro: Falha ao acessar certificado digital [mensagem de ERRO DO WINDOWS] | DLL | - |
5404 | Erro: Nenhum certificado digital selecionado | DLL | |
5405 | Erro: Nenhum certificado válido foi encontrado com o nome [NomeCertificado] informado no repositório [MY do CurrentUser] | DLL | - |
5406 | Erro: Falha no tratamento do parâmetro nome: [nome informado] | DLL | - |
5407 | Erro: Quantidade de parâmetros inválido: [nome informado] | DLL | - |
5408 | Erro: Falha na criação do objeto certificate: [mensagem do ERRO DO WINDOWS] | DLL | - |
6301 | Erro: O parâmetro versao não foi informado | DLL | - |
6302 | Erro: O conteúdo do parâmetro versao informado é inválido: [valor informado], a DLL espera: [valor esperado]" | DLL | - |
6303 | Erro: O nome do titular do certificado deve ser informado | DLL | - |
6304 | Erro: O parâmetro siglaWS deve ser informado | DLL | - |
6417 | Erro: Não existe protocolo para a DC-e com chave de acesso =[chaveMDFe] no protDce: [protDce] | DLL | - |
6418 | Erro: Falha no acesso ao protDce do XML da resposta do WS [mensagem do ERRO DO WINDOWS | DLL | - |
6419 | Erro: A tag cStat não foi localizada na mensagem de retorno [mensagem do ERRO DO WINDOWS] | DLL | - |
6420 | Erro: tag xMotivo não foi localizada na mensagem de retorno [mensagem do ERRO DO WINDOWS] | DLL | - |
6421 | Erro: tag dhRecbto não localizada na mensagem de retorno [mensagem do ERRO DO WINDOWS] | DLL | - |
6422 | Erro: tag nProt não localizada na mensagem de retorno [mensagem do ERRO DO WINDOWS] | DLL | - |
6423 | Erro: |
DLL | - |
7001 | Erro: A licença não foi informada [Identificação da versão da DLL em uso] | DLL | - |
7002 | Erro: A licença informada: [valor informado] tem tamanho:[tamanho] diferente de 128 - [Identificação da versão da DLL em uso] | DLL | - |
7003 | Erro: A licença informada: [valor informado] não pertence ao CNPJ:[valor informado] [Identificação da versão da DLL em uso] | DLL | - |
7004 | Erro: A tag infDCe não foi localizada no lote, validação da licença prejudicada [Identificação da versão da DLL em uso] | DLL | - |
7005 | Erro: Atributo Id não localizada na tag infDCe, validação da licença prejudicada [Identificação da versão da DLL em uso] | DLL | - |
7006 | Erro: Atributo Id: [conteúdo do atributo ID] da tag infDCe não iniciada com a literal DCe, validação da licença prejudicada. [Identificação da versão da DLL em uso] | DLL | - |
7007 | Erro: O Tamanho [tamanho] do Atributo Id [conteúdo do atributo ID] da tag infDCe diferente de 47, validação da licença prejudicada. [Identificação da versão da DLL em uso] | DLL | - |
100 | Autorizado o uso da DC-e | WS | - |
203 | Rejeição: Emissor não habilitado para emissão da DC-e | WS | G036 |
204 | Rejeição: Duplicidade de MDF-e [nRec:999999999999999] | WS | G040 |
207 | Rejeição: CNPJ do emitente inválido | WS | G032 |
209 | Rejeição: IE do emitente inválida | WS | G034 |
212 | Rejeição: Data de emissãa DC-e posterior a data de recebimento | WS | G038 |
213 | Rejeição: CNPJ-Base do Emitente difere do CNPJ-Base do Certificado Digital | WS | F03 |
214 | Rejeição: Tamanho da mensagem excedeu o limite estabelecido | WS | B01 |
215 | Rejeição: Falha no schema XML | WS | D01 |
218 | Rejeição: DC-e já está cancelado na base de dados da SEFAZ. | WS | G041 |
225 | Rejeição: Falha no Schema XML da DC-e | WS | D00 |
226 | Rejeição: Código da UF do Emitente diverge da UF autorizadora | WS | - |
227 | Rejeição: Erro na composição do Campo ID | WS | G005 |
228 | Rejeição: Data de emissão muito atrasada | WS | - |
236 | Rejeição: Chave de Acesso inválida Motivo: [XXXXXXXXXXXX] | WS | - |
243 | Rejeição: XML Mal Formado | WS | B02 |
244 | Rejeição: Falha na descompactação da área de dados | WS | B00 |
245 | Rejeição: CNPJ Emitente não cadastrado | WS | G035 |
247 | Rejeição: Sigla da UF do Emitente diverge da UF autorizadora | WS | G003 |
248 | Rejeição: UF do Recibo diverge da UF autorizadora | WS | E02 |
252 | Rejeição: Ambiente informado diverge do Ambiente de recebimento | WS | G001 |
253 | Rejeição: Digito Verificador da chave de acesso composta inválido | WS | G006 |
280 | Rejeição: Certificado Transmissor inválido | WS | A01 |
281 | Rejeição: Certificado Transmissor Data Validade | WS | A02 |
282 | Rejeição: Certificado Transmissor sem CNPJ | WS | A07 |
283 | Rejeição: Certificado Transmissor - erro Cadeia de Certificação | WS | A03 |
284 | Rejeição: Certificado Transmissor revogado | WS | A05 |
285 | Rejeição: Certificado Transmissor difere ICP-Brasil | WS | A06 |
286 | Rejeição: Certificado Transmissor erro no acesso a LCR | WS | A04 |
402 | Rejeição: XML da área de dados com codificação diferente de UTF-8 | WS | D03 |
404 | Rejeição: Uso de prefixo de namespace não permitido | WS | D02 |
410 | Rejeição: UF informada no campo cUF não é atendida pelo WebService | WS | C03 |
598 | Rejeicao: Usar somente o namespace padrao da DC-e | WS | D02 |
599 | Rejeicao: Nao eh permitida a presenca de caracteres de edicao no inicio/fim da mensagem ou entre as tags da mensagem | WS | D03 |
Tratamento de Erro:
Caso ocorra algum erro na chamada do WS (5001-7007) ou a requisição não seja atendida pelo WS (214-999), será gravado um log na pasta log, com as seguintes informações que devem ser úteis para identificação do problema:
- Timestamp - data e hora da ocorrência do erro
- WS - nome do WS acessado
- URL - URL do WS acessado
- ambiente - código do ambiente
- certificado - nome do titular (assunto) do certificado digital utilizado
- erro - código e descrição do erro
- msgDados - mensagem gerada pela DLL enviada ao WS
- msgRetWS - conteúdo do retorno do WS
Os erros com código > 5000 são erros tratados pela DLL e ocorrem nas seguintes situações:
- 5001 - 5017 - falha na tentativa de consumir o WS (problema de conexão/rede)
- 5101 - 5105 - falha no tratamento do XML de resposta do WS (problema na resposta do WS)
- 5201 - 5206 - falha na recuperação da URL do WS desejado (problema no arquivo de configuração da URL)
- 5403 - 5408 - falha no acesso ao certificado digital
- 6301 - 6306 - falha no tratamento dos parâmetros da chamada da DLL
- 7001 - 7007 - falha na validação da licença de uso
Histórico de atualização:
- 2025-05-20 - versão inicial
Exemplo de XML da DC-e sem assinatura digital
<DCe xmlns="http://www.portalfiscal.inf.br/dce"> <infDCe versao="1.00" Id="DCe35250510142785000190990000000000011308085037"> <ide> <cUF>35</cUF> <cDC>808503</cDC> <mod>99</mod> <serie>0</serie> <nDC>1</nDC> <dhEmi>2025-05-16T21:55:14-03:00</dhEmi> <tpEmis>1</tpEmis> <tpEmit>3</tpEmit> <nSiteAutoriz>0</nSiteAutoriz> <cDV>7</cDV> <tpAmb>2</tpAmb> <verProc>DCe_Util_v100</verProc> </ide> <emit> <CNPJ>10142785000190</CNPJ> <xNome>FlexDocs Informática Ltda</xNome> <enderEmit> <xLgr>Av. Altino Arantes</xLgr> <nro>131</nro> <xCpl>14º andar - sala 145</xCpl> <xBairro>Centro</xBairro> <cMun>3534708</cMun> <xMun>Ourinhos</xMun> <UF>SP</UF> <CEP>19900030</CEP> <cPais>1058</cPais> <xPais>Brasil</xPais> <fone>1433022000</fone> </enderEmit> </emit> <Transportadora> <CNPJ>10142785000190</CNPJ> <xNome>Ja Levo transportes Ltda</xNome> </Transportadora> <dest> <CNPJ>00000000037940</CNPJ> <xNome>Banco do Brasil S/A Ourinhos-SP</xNome> <enderDest> <xLgr>Rua Antonio Carlos Mori</xLgr> <nro>530</nro> <xBairro>Centro</xBairro> <cMun>3534708</cMun> <xMun>Ourinhos</xMun> <UF>SP</UF> <CEP>19900081</CEP> <cPais>1058</cPais> <xPais>Brasil</xPais> <fone>1433023000</fone> <email>ourinhos@bb.com.br</email> </enderDest> </dest> <autXML> <CNPJ>00000000000191</CNPJ> </autXML> <autXML> <CNPJ>00000000000272</CNPJ> </autXML> <autXML> <CPF>00000000353</CPF> </autXML> <det nItem="1"> <prod> <xProd>Calça masculina</xProd> <NCM>49</NCM> <qCom>1</qCom> <vUnCom>100.00</vUnCom> <vProd>100.00</vProd> </prod> <infAdProd>tamanho 48</infAdProd> </det> <total> <vDC>100.00</vDC> </total> <transp> <modTrans>2</modTrans> <CNPJTransp>10142785000190</CNPJTransp> </transp> <infAdic> <infAdFisco>Informacoes de Adicionais do Fisco. Operacao nao tributada.</infAdFisco> <infCpl>Teste de geração do XML do DC-e.</infCpl> </infAdic> <infDec> <xObs1>É contribuinte de ICMS qualquer pessoa física ou jurídica, que realize, com habitualidade ou em volume que caracterize intuito comercial, operações de circulação de mercadoria ou prestações de serviços de transportes interestadual e intermunicipal e de comunicação, ainda que as operações e prestações de iniciem no exterior (Lei Complementar nº 87/96, Art. 4º).</xObs1> <xObs2>Constitui crime contra a ordem tributária suprimir ou reduzir tributo, ou contribuição social e qualquer acessório: quando negar ou deixar de fornecer, quando obrigatório, nota fiscal ou documento equivalente, relativa a venda de mercadoria ou prestação de serviço, efetivamente realizada ou fornece-la em desacordo com a legislação.Sob pena de reclusão de 2(dois) e 5(cinco) anos, e multa (Lei 8.137/90, Art 1ª, V).</xObs2> </infDec> </infDCe> <infDCeSupl> <qrCodDCe><![CDATA[https://www.fazenda.pr.gov.br/dce/qrcode?chDCe=35250510142785000190990000000000011308085037&tpAmb=2]]></qrCodDCe> <urlChave>https://www.fazenda.pr.gov.br/dce/qrcode</urlChave> </infDCeSupl> </DCe>
Importante
O trecho do XML foi formatado para uma melhor visualização, a mensagem original não tem formatação.
Vale observar que a formatação pode corromper a assinatura digital, além de ocupar espaço e ser desnecessária, pois os browser exibem formatado.
Exemplos de uso:
Visual Basic 6.0
' declara e instancia DLL Dim objDCeUtil As Object Set objDCeUtil = CreateObject("DCe_Util.Util") ' declarar parâmetros Dim siglaWS As String Dim DCe As String Dim nomeCertificado As String Dim versao As String Dim msgDados As String Dim msgRetWS As String Dim cStat As Integer Dim msgResultado As String Dim protocolo As String Dim nProtocolo As String Dim dhProtocolo As String Dim DCeAssinado As String Dim licenca As String Dim proxy As String Dim usuario As String Dim senha As String Dim eventoDCe As String Dim dceProc As String ' inicialização dos parâmetros siglaWS = "" DCe = "" nomeCertificado = "" versao = "" msgDados = "" msgRetWS = "" cStat = 0 msgResultado = "" protocolo = "" nProtocolo = "" dhProtocolo = "" DCeAssinado = "" licenca = "" proxy = "" usuario = "" senha = "" eventoDCe = "" dceProc = "" ' informar os parâmetros básicos do chamada siglaWS = "PR" nomeCertificado = "CN=FLEXDOCS INFORMATICA LTDA:10142785000190, OU=presencial, OU=20085105000106, OU=RFB e-CNPJ A1, OU=Secretaria da Receita Federal do Brasil - RFB, L=OURINHOS, S=SP, O=ICP-Brasil, C=BR" versao = "1.00" ' informar o XML do MDFe, se for um arquivo é necessário carregar o XML no parâmetro, exemplo Dim nomeArquivo As String ' nome do arquivo que contem o MDFe ' nomeArquivo = "c:\DCeSemAssinatura.xml" ' importante: verificar a existência do arquivo solicitado e indicar o caminho correto para ele ' ' Carrega o conteúdo do nome do arquivo em MDFe ' Open nomeArquivo For Input As #1 DCe = Input$(LOF(1), 1) Close #1 ' envia DCe dceProc = objDCeUtil.EnviaDCe(siglaWS, _ DCe, _ nomeCertificado, _ versao, _ msgDados, _ msgRetWS, _ cStat, _ msgResultado, _ protocolo, _ nProtocolo, _ dhProtocolo, _ DCeAssinado, _ proxy, _ usuario, _ senha, _ licenca) ' Screen.MousePointer = vbDefault ' normal ' ' mostra mensagem XML enviada e a mensagem de retorno do WS ' MsgBox msgResultado + Chr(13) + Chr(13) + msgDados + Chr(13) + Chr(13) + msgRetWS, vbInformation, "Resultado do Envio do MDFe" ' ' analisar o retorno da chamada, se cStat= 100, MDF-e autorizado gravar ou guardar o mdfeProc, gerar o DAMDFE ' ' se cStat diferente de 100, houve algum problema na chamada, necessário analisar o cStat e tomar a medida adequada. '
- 5.1. EnviaDCe
5. Web Service da DC-e - « Anterior
5. Web Service da DC-e - Próximo »
5.2. Cancela DC-e