- 13. Contingência DPEC
13.2. Envia DPEC - 13.1. Cria DPEC
« Anterior - 13.3. Consulta DPEC
Próximo »
13.2. Envia DPEC
Envia DPEC
Assinatura
int EnviaDPEC(ref string DPEC, string nomeCertificado, out string DPECAssinado, out string msgRetWS, out string msgResultado, out string dhRegDPEC, out string nRegDPEC, string proxy, string usuario, string senha, string licenca)
Descrição:
Recebe um DPEC como parâmetro de entrada, valida, assina e transmite para o ambiente para o qual foi gerado.
Assinatura da DPEC
A assinatura da DPEC é realizada pela funcionalidade.
Tipo de Ambiente
A DPEC é transmitida para o tipo de ambiente que consta da tag tpAmb existente na DPEC.
Preenchimento do nomeCertificado
informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL,
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 ressaltar 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 |
|---|---|---|---|
| DPEC | string | entrada | informar o XML da DPEC que será transmitida, a DPEC não deve estar assinada. |
| NomeCertificado | string | entrada | informar o certificado digital que será utilizado para assinatura: 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) |
| DPECAssinado | string | saída | retorna o XML da DPEC assinada |
| msgRetWS | string | saída | retorna a mensagem XML de resposta do WS |
| msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
| dhRegDPEC | string | saída | retorna a data e hora de registro da DPEC. |
| nRegDPEC | string | saída | retorna o número de registro da DPEC |
| 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 |
Atenção:
A dhRegDPEC e o nRegDPEC devem ser impressos no DANFE.
Retorno:
O resultado da chamada do EnviaDPEC é o código numérico com os seguintes significados:
| código | Mensagem | origem | regra |
|---|---|---|---|
| 5001 | Erro: Falha na conexão: [mensagem do windows] (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: [mensagem do windows] (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: [mensagem do windows] (Causa provável: serviço inexistente, verifique se o nome do serviço da url acessada está correto no arquivo ws2.xml) | DLL | - |
| 5004 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: método não permitido) | DLL | - |
| 5005 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: a url não encontrada, verifique se o nome do domínio da url acessada está correto no arquivo ws2.xml) | DLL | - |
| 5006 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Time-Out, o WS não respondeu a solicitação no tempo estabelecido: [tempo]) | DLL | - |
| 5007 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: mensagem maior que a permitida) | DLL | - |
| 5008 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Servidor com problemas) | DLL | - |
| 5009 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Serviço não implementado) | DLL | - |
| 5010 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Serviço temporariamente indisponível, servidor sem recursos para atender a solicitação) | DLL | - |
| 5011 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Causa provável da falha na conexão: Rede indisponível) | DLL | - |
| 5012 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Versão do SOAP não suportada | DLL | - |
| 5013 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Web Service não consumido, não houve nenhum retorno ou resposta) | DLL | - |
| 5014 | Erro: Falha na conexão: [mensagem do windows] (Causa provável: Web Service não consumido, falha desconhecida) | DLL | - |
| 5015 | Erro: Falha na conexão: Tempo limite de time-out alcançado [tempo ms] - [mensagem do windows] | DLL | - |
| 5016 | Erro: Falha na conexão: Falha da Biblioteca Criptografica: [mensagem do windows] | DLL | - |
| 5017 | Erro: Falha ao tratar o XML de retorno do WS: [mensagem de erro] | 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âmetos inválido: [nome informado] | DLL | - |
| 5408 | Erro: Falha na criação do objeto certificate: [mensagem do ERRO DO WINDOWS] | DLL | - |
| 5501 | Mensagem XML é válida | DLL | - |
| 5502 | Erro: tipoXML [valor informado] inválido (fora do intervalo intervalor) | DLL | - |
| 5503 | Erro: XML mal formado [mensagem do windows] | DLL | - |
| 5504 | Erro: Arquivo Schemal XML [nome arquivo Schema.xsd] não localizado na pasta [caminho da pasta]. | DLL | - |
| 5505 | Erro: XML não atende a especificação do Schema XML | DLL | - |
| 5506 | Erro: A validação da NF-e sem assinatura causa um erro de falta de assinatura que pode ser desprezado [[mensagem do windows]] | DLL | - |
| 5507 | Erro: XML com caracteres de identificação de codificação UTF-8 (\x0239\x0187\x0191) no início do arquivo | DLL | - |
| 5508 | Erro: XML com caracteres de identificação de codificação UTF-16 (BE) (\x0254\x0255) no início do arquivo | DLL | - |
| 5509 | Erro: XML com caracteres de identificação de codificação UTF-16 (LE) (\x0255\x0254) no início do arquivo | DLL | - |
| 5510 | Erro: XML com caracteres de identificação de codificação UTF-32 (BE) (\x0000\x0000\x0254\x0255) no início do arquivo | DLL | - |
| 5511 | Erro: XML com caracteres de identificação de codificação UTF-32 (LE) (\x0255\x0254\x0000\x0000) no início do arquivo | DLL | - |
| 5512 | Erro: XML com caracteres de identificação de codificação UTF-7 ((\x0043\x0047) no início do arquivo | DLL | - |
| 6501 | Erro: O DPEC informado como parâmetro não deve estar assinado | DLL | - |
| 6502 | Erro: O DPEC informado não é um XML válido [mensagem do ERRO DO WINDOWS] | DLL | - |
| 6503 | Erro: O CNPJ informado tem tamanho diferente de 14 - [CNPJ informado] - tamanho = [tamanho] | DLL | - |
| 6504 | Erro: A licença informada: [licenca] tem tamanho:[tamanho] diferente de 128 | DLL | - |
| 6505 | Erro: A licença informada: [licenca] não pertence ao CNPJ:[CNPJ informado] | DLL | - |
| 6506 | Erro: O parâmetro tipoAmbiente [valor informado] deve ser 1 ou 2 | DLL | - |
| 6507 | Erro: O parâmetro nomeCertificado não foi informado | DLL | - |
| 6508 | Erro: O XML de retorno não atende o leiaute da mensagem de retorno, Erro: [mensagem de erro] - Retorno [XML do retorno] | DLL | - |
| 6509 | Erro: Falha na conexão: Tempo limite de time-out alcançado [limte ms] - [tempo decorrido] | DLL | - |
| 6510 | Erro: Falha na conexão: Falha da Biblioteca Criptografica: [mensagem do windows] | DLL | - |
| 124 | DPEC recebido pelo Sistema de Contingência Eletrônica | WS | - |
| 108 | Serviço Paralisado Momentaneamente (curto prazo) | WS | B03 |
| 109 | Serviço Paralisado sem Previsão | WS | B04 |
| 203 | Rejeição: Emitente não credenciado como emissor da NF-e na UF informada | WS | G04 |
| 207 | Rejeição: CNPJ do Emitente informado inválido (DV ou zeros) | WS | G02 |
| 208 | Rejeição: CNPJ do Destinatário inválido | WS | G12 |
| 209 | Rejeição: IE do Emitente informado inválido (DV ou zeros) | WS | G03 |
| 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 |
| 231 | Rejeição: IE do emitente não vinculado ao CNPJ | WS | G05 |
| 238 | Rejeição: Cabeçalho - Versão do arquivo XML superior a Versão vigente | WS | C03 |
| 239 | Rejeição: Cabeçalho - Versão do arquivo XML não suportada | WS | C04 |
| 243 | Rejeição: XML Mal Formado | WS | B02 |
| 252 | Rejeição: Tipo do ambiente da DPEC é diferente do ambiente do WS | WS | G01 |
| 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 |
| 290 | Rejeição: Certificado Assinatura inválido | WS | E01 |
| 291 | Rejeição: Certificado Assinatura Data Validade | WS | E02 |
| 292 | Rejeição: Certificado Assinatura sem CNPJ | WS | E03 |
| 293 | Rejeição: Certificado Assinatura - erro Cadeia de Certificação | WS | E04 |
| 294 | Rejeição: Certificado Assinatura revogado | WS | E06 |
| 295 | Rejeição: Certificado Assinatura difere ICP-Brasil | WS | E07 |
| 296 | Rejeição: Certificado Assinatura erro no acesso a LCR | WS | E05 |
| 297 | Rejeição: Assinatura difere do calculado | WS | F02 |
| 298 | Rejeição: Assinatura difere do padrão do Projeto | WS | F01 |
| 299 | Rejeição: XML da área de cabeçalho com codificação diferente de UTF-8 | WS | C01a |
| 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 |
| 409 | Rejeição: Cabeçalho - Falha no Schema XML | WS | C01 |
| 412 | Rejeição: Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP Header | WS | C02 |
| 479 | Rejeição: Emissor em situação irregular | WS | G06 |
| 480 | Rejeição: CNPJ da chave de acesso diferente do CNPJ do emitente | WS | G07 |
| 481 | Rejeição: UF da chave de acesso diferente do código da UF informada | WS | G08 |
| 482 | Rejeição: AA da chave de acesso inválido | WS | G09 |
| 483 | Rejeição: MM da chave de acesso inválido | WS | G10 |
| 484 | Rejeição: DV da chave de acesso inválido | WS | G11 |
| 485 | Rejeição: Chave de acesso já existe no cadastro de DPEC | WS | G13 |
| 516 | Rejeição: Falha no schema XML - inexiste a tag raiz esperada para a mensagem | WS | D01a |
| 517 | Rejeição: Falha no schema XML - inexiste atributo versao na tag raiz da mensagem | WS | D02a |
| 545 | Rejeição: Falha no schema XML - versão informada na versaoDados do SOAPHeader diverge da versão da mensagem | WS | D01c |
| 999 | Rejeição: Erro não catalogado (mensagem) | WS | - |
Exemplos de uso:
Visual Basic 6.0
Dim DPEC As String Dim nomeCertificado As String Dim DPECAssinado As String Dim msgRetWS As String Dim cStat As Integer Dim msgResultado As String Dim dhRegDPEC As String Dim nRegDPEC As String Dim proxy As String Dim usuario As String Dim senha As String Dim licenca As String DPEC = "" nomeCertificado = "CN=M R M KATO ASAKURA - EPP:69621187915, OU=AC CAIXA PJ, OU=Caixa Economica Federal, O=ICP-Brasil, C=br" ' ' importante: indicar aqui assunto do certificado digital válido, este da associacao trata-se apenas de um exemplo para testes ' ' EXEMPLO PARA USO DE ARQUIVO PFX ' 'nomeCertificado = "ARQUIVO|c:\certificado.pfx|associacao" ' ' onde: ' ARQUIVO --> indica opção de uso de arquivo PFX ' c:\certificado.pfx --> nome e caminho do arquivo PFX ' associacao --> senha do arquivo PFX ' ' ' EXEMPLO PARA USO DE ARQUIVO PFX EM STRING BASE64 ' 'nomeCertificado = "CERTIFICADO|MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy|senha" ' ' onde: ' CERTIFICADO --> indica opção de uso de arquivo PFX em base64 ' MIIGoDCCBYigAwIBAgIQep(arquivo pfx do certificado digital convertido em base64...)QQDExNBQy --> arquivo PFX em base64 ' senha --> senha do arquivo PFX ' DPECAssinado = "" ' recebe o DPEC assinado que foi transmitido cStat = 0 ' recebe a resultado da chamada da DLL proxy = "" ' 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 = "" ' informar o usuário para autenticação no proxy se necessário senha = "" ' informar a senha de autenticação no proxy se necessário msgRetWS = "" ' recebe a mensagem XML de resposta do WS msgResultado = "" ' recebe a literal do resultado da chamada do WS dhRegDPEC = "" ' recebe a data e hora de registro da DPEC nhRegDPEC = "" ' recebe o número de registro da DPEC licenca = "" ' 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 ' '----------------------------------------------------------------------------- ' Carrega o conteúdo do arquivo xml em NFe '----------------------------------------------------------------------------- Open "c:\DPEC.xml" For Input As #1 DPEC = Input$(LOF(1), 1) 'NFe = arquivo em XML sem assinatura Close #1 ' instancia a DLL - late binding ' Dim objNFeUtil As Object Set objNFeUtil = CreateObject("NFe_Util_2G.Util") cStat = objNFeUtil.EnviaDPEC(DPEC, nomeCertificado, DPECAssinado, msgRetWS, msgResultado, dhRegDPEC, nRegDPEC, proxy, usuario, senha, licenca) If cStat <> 124 Then MsgBox "Ocorreu um erro ao enviar a DPEC" + vbCrLf + msgResultado, vbInformation, "Resultado" Else MsgBox "DPEC enviada com sucesso, " + msgResultado + vbCrLf + vbCrLf + "Número do Recibo da DPEC: " + nroRecDPEC + vbCrLf + "Data e Hora de Registro da DPEC: " + nroRecDPEC, vbInformation, "Resultado" End If Set objNFeUtil = Nothing
- 13.2. Envia DPEC
13. Contingência DPEC - « Anterior
13.1. Cria DPEC - Próximo »
13.3. Consulta DPEC