14.4. Utilidadades
14.4.9. Download de NF-e do Portal [03-07-13]
14.4.8. Gerar PDF do DANFE [28-09-13]
« Anterior
14.4.10. Gera url da NFC-e [12-07-14]
Próximo »

14.4.9. Download de NF-e do Portal [03-07-13]

Download de NF-e do Portal da NF-e

Assinatura

string DownloadNFWeb(nomeCertificado, string chaveNFe, string CNPJ, out int cStat, out string msgResultado,string licenca)

Descrição:

A funcionalidade permite agilizar o download de NF-e no Portal Nacional ao eliminar a escolha do certificado digital e indicação do local de gravação do XML obtido.

LICENCIAMENTO

A funcionalidade pode ser utilizada sem licenciamento, para tanto basta omitir a chave da licença de uso.

INFORMAÇÃO RELEVANTE

Esta funcionalidade é uma "espécie" de robot que automatiza a digitação da chave de acesso, a escolha de certificado digital, a confirmação de download, etc. na consulta WEB da NF-e do Portal Nacional.

Não se trata de funcionalidade que tem suporte oficial da SEFAZ como é o caso do WS de Download de NF-e confirmadas oferecida para os destinatários da NF-e, assim o uso desta funcionalidade deve ser feito com a devida cautela, evitando o uso em aplicações críticas, pois existe a possibilidade do funcionamento ficar prejudicado de uma hora para outra.

Os usuários que já disponibilizam a opção de "captura de dados da NF-e" do Portal Nacional podem oferecer a possibilidade de download do XML assinado da NF-e sem maiores riscos, pois o usuário pode utilizar a opção de "captura de dados da NF-e" no Portal caso ocorra algum problema com o download do XML da NF-e.

O uso mais adequado e de menor risco desta funcionalidade é como opção para agilizar a recuperação do XML das notas fiscais emitidas que foram perdidas pelo emissor ou destinatário.

Ambiente com PROXY [03-07-13]

A funcionalidade não permite a informação dos dados do Proxy, assim o uso fica prejudicado em ambiente que tenha proxy.

Necessidade da DLL Microsoft.mshtml.dll [03-07-13]

A funcionalidade requer a DLL Microsoft.mshtml.dll no equipamento.

A aplicação vai ficar congelada com a mensagem "Aguarde, contatando portal..." se a DLL DLL Microsoft.mshtml.dll não existir no equipamento.

A copia da DLL Microsoft.mshtml.dll para a pasta da sua aplicação deve resolver este problema.

Para obter o XML é necessário informar a chave da NF-e e o certificado digital do emissor, destinatário ou transportador constante da NF-e, além de digitar o CAPTCHA do Portal.

Preenchimento do nomeCertificado

informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL, formas possí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 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
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)
chaveNFe string entrada informar a chave de acesso da NF-e objeto de download
CNPJ string entrada informar o CNPJ do usuário, o CNPJ inforamdo será utilizado para validar a licença, caso a licença seja informada.
cStat inteiro saída retorna o resultado da chamada do WS
msgResultado string saída retorna a literal do resultado da chamada do WS
licenca string entrada informar a chave da licenca de uso.
A omissão da licenca de uso não impede o uso da funcionalidade, no entanto, a tela de digitação do captcha vai constar como "USO NÃO LICENCIADO" e uma caixa de diálogo de alerta surgirá aleatóriamente.

Retorno:

O resultado da chamada do DownloadNFWeb é uma string com o XML do nfeProc quando o cStat=8000.

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

código Mensagem origem regra
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 -
6107 Erro: A chave de acesso deve ter 44 posições: [tamanho da chave] DLL -
6110 Erro: O nome do titular do certificado deve ser informado DLL -
6120 Erro: O parâmetro chave de acesso deve ser informado DLL -
6166 Erro: O parâmetro CNPJ deve ser informado DLL -
6167 Erro: O parâmetro CNPJ informado:[conteúdo do parâmetro] é inválido DLL -
8000 Download realizado com sucesso. DLL -
8001 Erro: Falha na apresentação do certificado digital para a SEFAZ! Portal -
8002 Erro: O download é permitido apenas ao emitente, destinatário ou transportador. Portal -
8003 Erro: Ocorreu o erro: [mensagem de ERRO] na consulta tente novamente! Portal -
8004 Erro: Chave de Acesso inválido! Portal -
8005 Erro: Caracteres digitados não conferem com a imagem! Portal -
8006 Erro: Ocorreu o erro [mensagem de ERRO] na requisição de consulta resumida da NF-e Portal -
8007 Erro: A sessão expirou. Faça a consulta novamente. Portal -
8008 Erro: Código da Imagem inválido. Tente novamente Portal -
8009 Erro: Ocorreu o erro [mensagem de ERRO] na requisição de download da NF-e Portal -
8010 Erro: O certificado digital não tem o CNPJ ou CPF do emitente, destinatário ou transportador Portal -
8011 Cancelado pelo usuário DLL -

Tratamento de Erro:

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

Histórico de atualização:

Exemplos de uso:

Delphi 7

 
uses
 
  (...), ComCtrls, ComObj;          // acrescentar ComCtrls e ComObj no use da unit
 
 
procedure TForm1.DownloadWebClick(Sender: TObject);
var
//--------------------------------------------------------------------------------------
//
//              Funcionalidade de Download de NF-e do Portal Nacional
//
//
//--------------------------------------------------------------------------------------
objNFeUtil: OleVariant;        // declarar a interface da DLL
//--------------------------------------------------------------------------------------
//          DECLARAÇÃO DE PARÂMETROS DE ENTRADA DA FUNCIONALIDADE
//--------------------------------------------------------------------------------------
nomeCertificado: widestring;   // campo assunto do certificado digital
chaveNFe: widestring;          // chave de acesso da NF-e objeto do download
CNPJ: widestring;              // CNPJ do licenciado
licenca: widestring;           // licenca de uso, necessário informar para produção
//--------------------------------------------------------------------------------------
//          DECLARAÇÃO DE PARÂMETROS DE RETORNO DA FUNCIONALIDADE
//--------------------------------------------------------------------------------------
cStat:integer;                 // retorna o código do resultado da chamada
msgResultado: widestring;      // retorna o literal do resultado da chamada
procNFe: widestring;           // retorna o XML do procNFe
begin
 
//--------------------------------------------------------------------------------------
//          INICIALIZAÇÃO DE PARÂMETROS
//--------------------------------------------------------------------------------------
cStat := 0;
nomeCertificado := 'CN=M R M KATO ASAKURA - EPP:69621187915, OU=AC CAIXA PJ-1 V1, OU=Caixa Economica Federal, O=ICP-Brasil, C=BR';
msgResultado := '';
chaveNFe := '35120571702716000774550020005977941123456789';
CNPJ := '10142785000190';
licenca := '';
procNFe := '';
//--------------------------------------------------------------------------------------
//  instancia classe
//--------------------------------------------------------------------------------------
objNFeUtil  := CreateOleObject('NFe_Util_2G.util');
//--------------------------------------------------------------------------------------
//  chama funcionalidade
//--------------------------------------------------------------------------------------
procNFe := objNFeUtil.DownloadNFWeb(nomeCertificado, chaveNFe, CNPJ, cStat, msgResultado, licenca);
 
MessageDlg( msgResultado + chr(13)+chr(13)+ procNFe, mtInformation, [mbOk], 0);
 
end; 

Visual Basic 6.0

 
'--------------------------------------------------------------------------------------
'
'                Funcionalidade de Download de NF-e do Portal Nacional
'
'--------------------------------------------------------------------------------------
'              DECLARAÇÃO DE PARÂMETROS DE ENTRADA DA FUNCIONALIDADE
'--------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------
'          DECLARAÇÃO DE PARÂMETROS DE ENTRADA DA FUNCIONALIDADE
'--------------------------------------------------------------------------------------
Dim nomeCertificado As String   ' campo assunto do certificado digital
Dim chaveNFe As String          ' chave de acesso da NF-e objeto do download
Dim CNPJ As String              ' CNPJ do licenciado NF-e
Dim licenca As String           ' licenca de uso

'--------------------------------------------------------------------------------------
'          DECLARAÇÃO DE PARÂMETROS DE RETORNO DA FUNCIONALIDADE
'--------------------------------------------------------------------------------------
Dim cStat As Long               ' retorna o código do resultado da chamada
Dim msgResultado As String      ' retorna o literal do resultado da chamada
Dim procNFe As String           ' retorna o XML do procNFe
'--------------------------------------------------------------------------------------
'          INICIALIZAÇÃO DE PARÂMETROS
'--------------------------------------------------------------------------------------
cStat = 0
nomeCertificado = "CN=M R M KATO ASAKURA - EPP:69621187915, OU=AC CAIXA PJ-1 V1, OU=Caixa Economica Federal, O=ICP-Brasil, C=BR"
msgResultado = ""
chaveNFe = "35120571702716000774550020005977941123456789"
CNPJ = "10142785000190"
licenca = ""
procNFe = ""
'--------------------------------------------------------------------------------------
'  instancia classe
'--------------------------------------------------------------------------------------
Dim objNFeUtil As Object
Set objNFeUtil = CreateObject("NFe_Util_2G.util")
'--------------------------------------------------------------------------------------
'  chama funcionalidade
'--------------------------------------------------------------------------------------
procNFe = objNFeUtil.DownloadNFWeb(nomeCertificado, chaveNFe, CNPJ, cStat, msgResultado, licenca)
MsgBox msgResultado & vbCrLf & vbCrLf & procNFe, vbInformation, "Resultado"
'--------------------------------------------------------------------------------------
' libera classe
'--------------------------------------------------------------------------------------
Set objNFeUtil = Nothing

xBase

 
CLEAR
 
&&--------------------------------------------------------------------------------------
&&
&&                Funcionalidade de Download de NF-e do Portal Nacional
&&
&&--------------------------------------------------------------------------------------
&&              DECLARAÇÃO DE PARÂMETROS DE ENTRADA DA FUNCIONALIDADE
&&--------------------------------------------------------------------------------------
&&--------------------------------------------------------------------------------------
&&          DECLARAÇÃO DE PARÂMETROS DE ENTRADA DA FUNCIONALIDADE
&&--------------------------------------------------------------------------------------
Local nomeCertificado As String   && campo assunto do certificado digital
Local chaveNFe As String          && chave de acesso da NF-e objeto do download
Local CNPJ As String              && CNPJ do licenciado NF-e
Local licenca As String           && licenca de uso
 
&&--------------------------------------------------------------------------------------
&&          DECLARAÇÃO DE PARÂMETROS DE RETORNO DA FUNCIONALIDADE
&&--------------------------------------------------------------------------------------
Local cStat As Long               && retorna o código do resultado da chamada
Local msgResultado As String      && retorna o literal do resultado da chamada
Local procNFe As String           && retorna o XML do procNFe
&&--------------------------------------------------------------------------------------
&&          INICIALIZAÇÃO DE PARÂMETROS
&&--------------------------------------------------------------------------------------
cStat = 0
nomeCertificado = "CN=M R M KATO ASAKURA - EPP:69621187915, OU=AC CAIXA PJ-1 V1, OU=Caixa Economica Federal, O=ICP-Brasil, C=BR"
msgResultado = ""
chaveNFe = "35120571702716000774550020005977941123456789"
CNPJ = "10142785000190"
licenca = ""
procNFe = ""
&&--------------------------------------------------------------------------------------
&&  instancia classe
&&--------------------------------------------------------------------------------------
Local objNFeUtil As Object
objNFeUtil = CREATEOBJECTEX("NFe_Util_2G.Util","","")
&&--------------------------------------------------------------------------------------
&&  chama funcionalidade
&&--------------------------------------------------------------------------------------
procNFe = objNFeUtil.DownloadNFWeb(nomeCertificado, chaveNFe, CNPJ, @cStat, @msgResultado, licenca)
? msgResultado
? procNFe
&&--------------------------------------------------------------------------------------
&& libera classe
&&--------------------------------------------------------------------------------------
objNFeUtil = null
14.4.9. Download de NF-e do Portal [03-07-13]
14.4. Utilidadades
« Anterior
14.4.8. Gerar PDF do DANFE [28-09-13]
Próximo »
14.4.10. Gera url da NFC-e [12-07-14]