- 13.4. Utilidadades
13.4.8. Download de NF-e do Portal [03-07-13] - 13.4.7. Gerar PDF do DANFE [28-08-18]
« Anterior - 13.4.9. calcICMSUFDest400 [10-01-18]
Próximo »
13.4.8. 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:
- 5403 - 5408 - falha no acesso ao certificado digital
- 6107 - 6167 - falha na validação dos parâmetros de chamada da DLL
- 8001 - 8011 - falha na consulta WEB
Histórico de atualização:
- 2012-07-31 - 2Gv1.0 - Versão beta preliminar.
- 2012-09-13 - revisão de texto.
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
- 13.4.8. Download de NF-e do Portal [03-07-13]
13.4. Utilidadades - « Anterior
13.4.7. Gerar PDF do DANFE [28-08-18] - Próximo »
13.4.9. calcICMSUFDest400 [10-01-18]