EnviaNFe2G

Olá, como podemos lhe ajudar?
< Todos tópicos
Print

Envio assíncrono de NF-e

Assinatura

string EnviaNFe2G(string siglaWSref string NFestring nomeCertificadostring versaoout string msgDadosout string msgRetWSout int cStatout string msgResultadoout string nroReciboout string dhRecbtoout string tMedstring proxystring usuariostring senhastring licenca)

Descrição:

Envia NF-e, funcionalidade para enviar uma única nota fiscal eletrônica.

A funcionalidade valida o Schema XML da NF-e, realiza assinatura digital, insere a NF-e no lote e faz o envio da NF-e.

ENVIO DE NFC-e através do EnviaNFe2G

A partir da implementação da NT 2010/005, não é mais possível utilizar a funcionalidade EnviaNFe2G para enviar a NFC-e, assim para enviar uma única NFC-e é necessário utilizar o EnviaNFSincrono.

A identificação do WS de envio deverá ser informada no parâmetro siglaWS.

Os emissores localizados em UF usuárias da SEFAZ Virtual devem informar a sigla SVAN (MA) ou a sigla SVRS (AC, AL, AP, DF, ES, PA, PB, PI, RJ, RN, RO, RR, SC, SE e TO), ou informar a sigla da UF (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP) nos casos de UF que tenham aplicação própria. Em caso de emissão em contingência, informar a sigla SCAN, SVC-AN ou SVC-RS.

PREENCHIMENTO DA siglaWS PARA ESCOLHA DO WEBSERVICE

SVAN, caso a UF seja usuária da SEFAZ Virtual do Ambiente Nacional (MA);

SVRS, caso a UF seja usuária da SEFAZ Virtual do Rio Grande do Sul (AC, AL, AP, DF, ES, PA, PB, PI, RJ, RN, RO, RR, SC, SE e TO);

sigla da UF, caso a UF tenha aplicação própria (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP);

PRENCHIMENTO 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 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:

nometipofluxodescrição
siglaWSstringentradainformar a sigla do WS desejado, veja Tabela de siglaWS
NFestringentradainformar a NF-e que deseja transmitir, a NF-e não deve estar assinada.
NomeCertificadostringentradainformar 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”.
versaostringentradainformar a versão da mensagem do WS – 4.00.
msgDadosstringsaídaretorna a mensagem XML enviada para o WS.
msgRetWSstringsaídaretorna a mensagem XML de resposta do WS
cStatinteirosaídaretorna o resultado da chamada do WS.
msgResultadostringsaídaretorna a literal do resultado da chamada do WS
nroRecibostringsaídaretorna o número do recibo do lote atribuído ao lote pela SEFAZ, este será utilizado para consultar o resultado do processamento do lote.
dhRecbtostringsaídaretorna a data e hora de recebimento do lote pela SEFAZ
tMedstringsaídaretorna o tempo médio de resposta do serviço em segundos dos últimos 5 minutos
proxystringentradainformar ‘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’
usuariostringentradainformar o usuário para autenticação no proxy se necessário
senhastringentradainformar a senha de autenticação no proxy se necessário
licencastringentradainformar a chave da licença de uso, esta funcionalidade pode ser utilizada sem qualquer restrição no ambiente de homologação. O uso em ambiente de produção requer o licenciamento, para maiores detalhes veja as condições de uso

Retorno:

O resultado da chamada do EnviaNFe é o XML da NFe assinada.

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

códigoMensagemorigemregra
5001Erro: Falha na conexão: [MENSAGEM DE ERRO 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
5002Erro: Falha na conexão: [MENSAGEM DE ERRO 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
5003Erro: Falha na conexão: [MENSAGEM DE ERRO 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
5004Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: método não permitido)DLL
5005Erro: Falha na conexão: [MENSAGEM DE ERRO 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
5006Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Time-Out, o WS não respondeu a solicitação no tempo estabelecido: [{1:0}])DLL
5007Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: mensagem maior que a permitida)DLL
5008Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Servidor com problemas)DLL
5009Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Serviço não implementado)DLL
5010Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Serviço temporariamente indisponível, servidor sem recursos para atender a solicitação)DLL
5011Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Causa provável da falha na conexão: Rede indisponível)DLL
5012Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Versão do SOAP não suportadaDLL
5013Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Web Service não consumido, não houve nenhum retorno ou resposta)DLL
5014Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Web Service não consumido, falha desconhecida)DLL
5015Erro: Falha na conexão: Tempo limite de time-out alcançado [TEMPO DE TIME OUT UTILIZADO ms] – [MENSAGEM DE ERRO DO WINDOWS]DLL
5016Erro: Falha na conexão: Falha da Biblioteca Criptografica: [MENSAGEM DE ERRO DO WINDOWS]DLL
5017Erro: Falha ao tratar o XML de retorno do WS: [MENSAGEM DE ERRO DO WINDOWS]DLL
5101Erro: A mensagem de retorno do WS não é um XML válido: [MENSAGEM DE ERRO DO WINDOWS]DLL
5102Erro: Tag cStat inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS]DLL
5103Erro: Tag xMotivo inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS]DLL
5104Erro: Tag [NOME TAG] inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS]DLL
5105Erro: O WS não devolveu nenhum resultadoDLL
5201Erro: O código do tipo de ambiente [CODIGO RECEBIDO PELA DLL] informado diferente de 1 – produção e 2 – homologaçãoDLL
5202Erro: A sigla da UF [SIGLA RECEBIDA PELA DLL] informada é inválidaDLL
5203Erro: Inexiste url para a UF [SIGLA UF] informada no ambiente [AMBIENTE] desejado, verifique se existe atualização do arquivo [NOME ARQUIVO] disponível.DLL
5204Erro: Arquivo que contem a URL do WS não localizado em [CAMINHO DA APLICACAO]DLL
5205Erro: Ocorreu um erro inesperado no processamento da URL (NOME URL) : [MENSAGEM DE ERRO DO WINDOWS]DLL
5206Erro: Ocorreu um erro de validação do XML (NOME XML) : [MENSAGEM DE ERRO DO WINDOWS]DLL
5403Erro: Falha ao acessar certificado digital [mensagem de ERRO DO WINDOWS]DLL
5404Erro: Nenhum certificado digital selecionadoDLL
5405Erro: Nenhum certificado válido foi encontrado com o nome [NomeCertificado] informado no repositório [MY do CurrentUser]DLL
5406Erro: Falha no tratamento do parâmetro nome: [nome informado]DLL
5407Erro: Quantidade de parâmetos inválido: [nome informado]DLL
5503Erro: XML mal formado [MENSAGEM DE ERRO DO WINDOWS]DLL
5504Erro: Arquivo Schemal XML [nome do arquivo XML] não localizado na pasta [nome do pasta]}DLL
5505Erro: XML não atende a especificação do Schema XMLDLL
5408Erro: Falha na criação do objeto certificate: [mensagem do ERRO DO WINDOWS]DLL
6301Erro: A NF-e a ser enviada não deve estar assinada, pois a NF-e será assinada pela DLLDLL
6302Erro: XML da NF-e de entrada (NFe) mal formado: [mensagem de ERRO DO WINDOWS]DLL
6303Erro: tag tpAmb inexistente na NF-e de entrada (NFe) [mensagem de erro]DLL
6304Erro: tag infNFe inexistente na NF-e de entrada (NFe)DLL
6305Erro: Atributo Id não localizado na tag infNFe da NF-e, validação da licença de uso prejudicada [CONTEUDO]DLL
6309Erro: O CNPJ informado tem tamanho diferente de 14 – [valor informado] – tamanho = [TAMANHO]DLL
6310Erro: A licença informada tem tamanho diferente de 128 – [CONTEUDO] – tamanho = {TAMANHO], o uso da DLL em ambiente de produção requer a informação da licença de uso.DLL
6311Erro: Funcionalidade: EnviaNFe não licenciada para o CNPJ: [valor informado] e licenca [TAMANHO]DLL
6312Erro: Atributo versão não localizado na tag infNFe da NF-eDLL
6313Erro: Versao inválida, diferente de 1.10 e 2.00 [valor informado]DLL
6314Erro: O conteúdo do atributo Id da tag infNFe é inválidaDLL
7001Erro: A licença não foi informadaDLL
7002Erro: A licença informada: [CONTEUDO] tem tamanho:[TAMANHO] diferente de 128DLL
7003Erro: A licença informada: [CONTEUDO] não pertence ao CNPJ:[TAMANHO]DLL
103Lote recebido com sucessoWS
108Serviço Paralisado Momentaneamente (curto prazo)WSB03/K03
109Serviço Paralisado sem PrevisãoWSB04/K04
213Rejeição: CNPJ-Base do Emitente difere do CNPJ-Base do Certificado DigitalWSF02
214Rejeição: Tamanho da mensagem excedeu o limite estabelecidoWSB01
215Rejeição: Falha no schema XMLWSD01
238Rejeição: Cabeçalho – Versão do arquivo XML superior a Versão vigenteWSC02/C05
239Rejeição: Cabeçalho – Versão do arquivo XML não suportadaWSC03/C06
242Rejeição: Cabeçalho – Falha no Schema XMLWSC01
243Rejeição: XML Mal FormadoWSB02
280Rejeição: Certificado Transmissor inválidoWSA01
281Rejeição: Certificado Transmissor Data ValidadeWSA02
282Rejeição: Certificado Transmissor sem CNPJWSA07
283Rejeição: Certificado Transmissor – erro Cadeia de CertificaçãoWSA03
284Rejeição: Certificado Transmissor revogadoWSA05
285Rejeição: Certificado Transmissor difere ICP-BrasilWSA06
286Rejeição: Certificado Transmissor erro no acesso a LCRWSA04
290Rejeição: Certificado Assinatura inválidoWSE01
291Rejeição: Certificado Assinatura Data ValidadeWSE02
292Rejeição: Certificado Assinatura sem CNPJWSE03
293Rejeição: Certificado Assinatura – erro Cadeia de CertificaçãoWSE04
294Rejeição: Certificado Assinatura revogadoWSE06
295Rejeição: Certificado Assinatura difere ICP-BrasilWSE07
296Rejeição: Certificado Assinatura erro no acesso a LCRWSE05
298Rejeição: Assinatura difere do padrão do ProjetoWSF01
297Rejeição: Assinatura difere do calculadoWSF02
299Rejeição: XML da área de cabeçalho com codificação diferente de UTF-8WSC01a
402Rejeição: XML da área de dados com codificação diferente de UTF-8WSD03
404Rejeição: Uso de prefixo de namespace não permitidoWSD02
409Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP HeaderWSC02
410Rejeição: UF informada no campo cUF não é atendida pelo Web ServiceWSC03
411Rejeição: Campo versaoDados inexistente no elemento nfeCabecMsg do SOAP HeaderWSC04
516Rejeição: Falha no schema XML – inexiste a tag raiz esperada para a mensagemWSD01a
517Rejeição: Falha no schema XML – inexiste atributo versao na tag raiz da mensagemWSD02a
545Rejeição: Falha no schema XML – versão informada na versaoDados do SOAPHeader diverge da versão da mensagemWSD01c
999Rejeição: Erro não catalogado (mensagem)WS
Finalidade do nREC – número do recibo do lote

O nRec – número do recibo do lote não é o protocolo de autorização. É um número que a SEFAZ atribui ao lote recebido, sendo necessário para consultar o resultado do processamento do lote.

Número do Recibo do Lote é número de 15 dígitos com o seguinte significado:

Tratamento de Erro:

Caso ocorra algum erro na chamada do WS (5001-7003) 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 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)
  • 5403 – 5408 – falha no acesso ao certificado digital
  • 5201 – 5206 – falha na recuperação da URL do WS desejado (problema no arquivo de configuração da URL)
  • 6301 – 6314 – falha no tratamento dos parâmetros da chamada da DLL
  • 7001 – 7003 – falha na validação da licença

Exemplos de uso:

Visual Basic 6.0

' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL
 '
 Dim msgDados As String     ' informar a string com o lote da NF-e neste parâmetro, retorna a mensagem XML enviada para o WS
 Dim msgRetWS As String     ' retorna a mensagem XML de resposta do WS
 Dim msgResultado As String ' retorna a literal do resultado da chamada do WS
 Dim cStat As Long          ' retorna o resultado da chamada do WS
 Dim nroRecibo As String             ' retorna o número do recibo do lote atribuído ao lote pela SEFAZ, este será utilizado para consultar o resultado do processamento do lote
 Dim dhRecbto As String         ' retorna a data e hora de recebimento do lote pela SEFAZ
 Dim tMed As String             ' retorna o tempo médio de resposta do serviço em segundos dos últimos 5 minutos 
 Dim siglaWS As String      ' informar a sigla do WS de envio, informar SVAN - SEFAZ Virtual do Ambiente Nacional (MA, PA e PI) ou SVRS - SEFAZ Virtual do Rio Grande do Sul (AC, AL, AP, DF, ES, PB, RJ, RN, RO, RR, SC, SE e TO), caso a UF seja usuário da SEFAZ Virtual, em caso contrário informar a sigla da UF (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP). Em caso de contingência SCAN, informar a sigla SCAN
 Dim nomeCertificado As String  ' informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL. Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS"
 '
 ' As variáveis do proxy devem ser informadas se necessário
 '
 ' proxy deve ser informado com o endereço da url : porta, ex: 192.168.15.1:443
 '
 Dim proxy As String ' 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'
 Dim usuario As String ' informar o usuário para autenticação no proxy se necessário
 Dim senha As String ' informar a senha de autenticação no proxy se necessário
 '
 Dim licenca As String          ' informar a chave da licença de uso, 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
 '
 Dim nfe As String              ' informar a NF-e que deseja transmitir, a NF-e não deve estar assinada
 Dim nfeAssinada As String      ' recebe o XML da NFe assinada
 Dim versao As String       ' informar a versão da mensagem do WS - 1.10 (manual de integração versão 2.04 ou 3.00) ou 2.00 (manual de integração versão 4.0x) 
 '
 ' Importante: todas as variáveis utilizadas como parâmetro da DLL devem ser inicializadas
 '
 '
 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
 msgDados = "" ' informar a string com o lote da NF-e neste parâmetro, retorna a mensagem XML enviada para o WS
 msgRetWS = "" ' retorna a mensagem XML de resposta do WS
 nroRecibo = "" ' retorna o número do recibo do lote atribuído ao lote pela SEFAZ, este será utilizado para consultar o resultado do processamento do lote
 dhRecbto = "" ' retorna a data e hora de recebimento do lote pela SEFAZ
 tMed = "" ' retorna o tempo médio de resposta do serviço em segundos dos últimos 5 minutos 
 licenca = "" ' informar a chave da licença de uso, 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
 '
 ' prepara variáveis
 '
  nomeCertificado = "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS"
 '
 ' 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
 '
 siglaWS = "RS"      ' informar a sigla do WS de envio, informar SVAN - SEFAZ Virtual do Ambiente Nacional (MA, PA e PI) ou SVRS - SEFAZ Virtual do Rio Grande do Sul (AC, AL, AP, DF, ES, PB, RJ, RN, RO, RR, SC, SE e TO), caso a UF seja usuário da SEFAZ Virtual, em caso contrário informar a sigla da UF (AM, BA, CE, GO, MS, MT, MG, PE, PR, RS e SP). Em caso de contingência SCAN, informar a sigla SCAN
 ambiente = 2        ' ambiente consultado: 1- produção e 2-homologação
 versao = "2.00"     ' informar a versão da mensagem do WS - 1.10 (manual de integração versão 2.04 ou 3.00) ou 2.00 (manual de integração versão 4.0x) 
 '
 '
 Dim nomeArquivo As String  ' nome do arquivo que contem a NFe
 '
 nomeArquivo = "NFe.xml"
 ' importante: verificar a existência do arquivo solicitado na pasta do VB e indicar o caminho correto para ele
 '
 '  Carrega o conteúdo do nome do arquivo em nfe
 '
 Open nomeArquivo For Input As #1
 nfe = Input$(LOF(1), 1)
 Close #1
 '
 Dim Result As Long
 Dim objNFeUtil As NFe_Util_2G.Util
 '
 ' instancia a DLL
 '
 Set objNFeUtil = New NFe_Util_2G.Util
 '
 '
 Screen.MousePointer = vbHourglass    ' ampulheta
 '
 nfeAssinada = objNFeUtil.EnviaNFe2G(siglaWS, nfe, nomeCertificado, versao, msgDados, msgRetWS, cStat, msgResultado, nroRecibo, dhRecbto, tMed, proxy, usuario, senha, licenca)
 '
 '
 Screen.MousePointer = vbDefault ' normal
 '
 ' mostra mensagem XML enviada e a mensagem de retorno do WS
 '
  MsgBox msgDados + Chr(13) + Chr(13) + msgResultado + Chr(13) + Chr(13) + msgRetWS, vbInformation, "Resultado do Envio do Lote"
 '
 ' libera classe
 '
 Set objNFeUtil = Nothing
 '
 ' implementar o tratamento do retorno
 '
 ' cStat = 103 ==> NFe enviada, guardar a NFeAssinada, o número do recibo e fazer a busca do resultado do processamento (BuscaNFe)
 '
 ' cStat = 108/109 ==> WS de recepção com problemas, avaliar a possibilidade de emissão em contingência
 '
 ' cStat > 109 e menor que 1000 ==> WS consumido, contudo ocorreu algum problema, verifique o código e descrição do erro, recomendamos o exame do manual de integração para identificar a possível causa do erro
 '
 ' cStat > 999 ==> código de erro da DLL, o WS não chegou a ser consumido, verifique o código e descrição do erro e providencie a solução.

Base (Visual FoxPro)

&&
&& exemplo de envio de uma NF-e
&&
&& veja: https://www.flexdocs.net/guiaNFe/WS.NFe.enviaNFe2G.html
&& -----------------------------------------------------------------------------
&&
&& declaração das variáveis
&&
LOCAL siglaWS as String
LOCAL NFe as String
LOCAL nomeCertificado as String
LOCAL versao as String
LOCAL msgDados as String
LOCAL msgRetWS as String
LOCAL cStat as Integer
LOCAL msgResultado as String
LOCAL nroRecibo as String
LOCAL dhRecbto as String
LOCAL tMed as String
LOCAL proxy as String
LOCAL usuario as String
LOCAL senha as String
LOCAL licenca as String
LOCAL nfeAssinada as String
&&
&& inicialização das variáveis
&&
siglaWS = "SP"              && sigla do WS para onde sera enviada a NF-e
&&
&& carregue a string NFe com o conteúdo do XML da NF-e que deseja transmitir
&& a nfe não deve estar assinada
&&
NFe = FILETOSTR("c:\nfe2.xml")
&&
&& informar o conteúdo do campo assundo do certificado digital, utilize o pegaDadosCertificados para recuperar a informacao
&& e armazene na configuracao da sua aplicacao
&&                            
nomeCertificado = "CN=M R M KATO ASAKURA - EPP:69621187915, OU=AC CAIXA PJ, OU=Caixa Economica Federal, O=ICP-Brasil, C=br"
versao  = "2.00"            && informar a versão do WS, atualmente é a 2.00
msgDados = ""               && parâmetro que devolve o XML que foi transmitido, necessário para solicitar suporte
msgRetWS = ""               && parâmetro que devolve a resposta do WS consumido, necessário para solicitar suporte
cStat = 0                   && parãmetro que devolve o resultado da chamada do WS
msgResultado = ""           && parãmetro que devolve a literal da mensagem do resultado da chamada do WS
nroRecibo = ""              && parâmetro que devolve o número do recibo do lote, necessário para fazer a busca do resultado do processamento da NF-e
dhRecbto = ""               && parâmetro que devolve a data e hora de recepçaão do lote
tMed = ""                   && parâmetro que devolve o tempo médio de processamento do lote
&&
&&  os dados do proxy só devem ser informados quando existir um proxy no ambiente de rede
&&
proxy = ""
usuario = ""
licenca = ""
 
&&
&& instanciar o DLL
&&
obj = CREATEOBJECTEX("NFe_util_2G.util","","")
&&
&&  IMPORTANTE, a DLL envia a NF-e para o ambiente declarado na nota fiscal!, assim verifique se o tpAmb
&&              está com 2 para não enviar a NF-e para o ambiente de produção (tpAmb=1)
&&
nfeAssinada = obj.EnviaNFe2G(siglaWS, NFe, nomeCertificado, versao, @msgDados, @msgRetWS, @cStat, @msgResultado, @nroRecibo, @dhRecbto, @tMed, proxy, usuario, senha, licenca)
&&
? "Resultado do envio"
? "-----------------------------------"
? msgResultado
?
IF cStat = 103 then
   ? "NF-e enviada com sucesso!"
   ? 
   ? "Faça a busca do resultado do seguinte lote:"
   ? "Número do Recibo do lote : " + nroRecibo
   ?
   &&
   && grava nota fiscal assinada que vai ser necessário na busca do resultado do processamento
   &&
   STRTOFILE(nfeAssinada, "c:\nfeassinada.xml")
ELSE
   ? "O envio da NF-e falhou, analise a mensagem de erro, caso necessite suporte anexe o conteúdo do log"
   ?
   ? "log de Erro Envio de NFe:" + CHR(13)+ "msgDados =[" + msgDados + "]" + chr(13) + "msgRetWS =[" + msgRetWS + "]" + CHR(13) + "msgResultado = [" + msgResultado + "]"
   ?
   STRTOFILE("log de Erro Envio de NFe:"+CHR(13)+ "msgDados =["+msgDados+"]" + chr(13) + "msgRetWS =["+msgRetWS+"]" + CHR(13) + "msgResultado = ["+msgResultado+"]", "c:\log.txt")
ENDIF
Was this article helpful?
0 out of 5 stars
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
How can we improve this article?
Please submit the reason for your vote so that we can improve the article.
Anterior Envio assíncrono de NF-e
Próxima BuscaNFe2G
Sumário