- 10.1. Envio de Lote de CT-e
10.1.2. EnviaLote [v3.00] - 10.1.1.5. Busca lote de CT-e
« Anterior - 10.1.3. BuscaLote [v3.00]
Próximo »
10.1.2. EnviaLote [v3.00]
Envia Lote de CT-e
Assinatura
int EnviaLote(string siglaWS, string siglaUF, int tipoAmbiente, string nomeCertificado, string versao, ref string msgDados, out string msgRetWS, out string msgResultado, string proxy, string usuario, string senha, string licenca)
Descrição:
Envia Lote de CT-e
PONTOS DE ATENÇÃO
Envio de um único CT-e
O WS recepciona lote de CT-e, assim mesmo que seja um único CT-e o envio deve ser realizado na estrutura de lote, a DLL oferece a funcionalidade MontaLoteCTe que ajuda gerar o lote de CT-e.
Assinatura do CT-e
A assinatura do CT-e deve ser realizada individualmente, antes de inseri-la no lote de CT-e.
Número do Lote
É um número de uso exclusivo do emissor, que pode atribuir o valor que entender conveniente.
Processo Assíncrono
A recepção do lote pela SEFAZ e a devolução do número do recibo do lote não significa que os CT-e foram autorizados. É necessário consultar o resultado do processamento do lote enviado através da funcionalidade BuscaLote, além de processar a mensagem do WS para verificar se o CT-e foi autorizado ou rejeitado.
Parâmetros:
nome | tipo | fluxo | descrição |
---|---|---|---|
siglaWS | string | entrada | informar a sigla do WS de envio, veja Tabela de siglaWS |
siglaUF | string | entrada | informar a sigla da UF do emissor. |
tipoAmbiente | inteiro | entrada | informar o código do ambiente desejado: 1- produção ou 2-homologação |
nomeCertificado | string | entrada | informar nome do titular do certificado a ser utilizado na assinatura e conexão SSL |
versao | string | entrada | informar a versão do Evento: 3.00 (o valor 2.00 pode ser informado até o fim da vigência da versão 2.00 previsto para 04/12/17). |
msgDados | string | entrada/saída | informar a string com o lote do CT-e neste parâmetro, retorna a mensagem XML enviada para o WS. |
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 |
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:
O resultado da chamada do EnviaLote é o código numérico com os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
1 | código do ambiente inválido | DLL | - |
2 | sigla da UF inválida | DLL | - |
3 | a UF não oferece o serviço | DLL | - |
4 | Arquivo com a URL do WS não localizado | DLL | - |
5 | Erro não tratado | DLL | - |
6 | Erro de validação de Schema | DLL | - |
7 | Nenhum Certificado Selecionado | DLL | - |
8 | Nenhum certificado válido foi encontrado com o nome informado | DLL | - |
9 | Erro Inesperado: ex.Message | DLL | - |
10 | Erro: Time-out ao chamar o WS | DLL | - |
11 | Erro: exceção da biblioteca criptográfica | DLL | - |
12 | Erro: conexão | DLL | - |
14 | Erro: [mensagem] (Causa provável da falha na conexão: 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 | - |
15 | Erro: [mensagem] (Causa provável da falha na conexão: 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 | - |
16 | Erro: [mensagem] (Causa provável do erro: serviço inexistente, verifique se o nome do serviço da url acessada está correto no arquivo wsCTE.xml) | DLL | - |
17 | Erro: [mensagem] (Causa provável da falha na conexão: método não permitido) | DLL | - |
18 | Erro: [mensagem] (Causa provável da falha na conexão: a url não encontrada, verifique se o nome do domínio da url acessada está correto no arquivo wsCTE.xml) | DLL | - |
19 | Erro: [mensagem] (Causa provável da falha na conexão: Time-Out, o WS não recebeu a solicitação no tempo permitido) | DLL | - |
20 | Erro: [mensagem] (Causa provável da falha na conexão: mensagem maior que a permitida) | DLL | - |
21 | Erro: [mensagem] (Causa provável da falha na conexão: Servidor com problemas) | DLL | - |
22 | Erro: [mensagem] (Causa provável da falha na conexão: Serviço não implementado) | DLL | - |
23 | Erro: [mensagem] (Causa provável da falha na conexão: Serviço temporariamente indisponível, servidor sem recursos para atender a solicitação) | DLL | - |
24 | Erro: [mensagem] (Causa provável da falha na conexão: Rede indisponível) | DLL | - |
26 | Erro: [mensagem] (Causa provável da falha na conexão: versão do SOAP incompatível) | DLL | - |
27 | CNPJ do emissor inválido | DLL | - |
28 | tamanho da chave da licença inválido | DLL | - |
28 | Erro: [mensagem] (WS não consumido, o WS não devolveu nenhuma mensagem de retorno....) | DLL | - |
29 | Aplicação não registrada | DLL | - |
30 | Versao informada é inválida | DLL | - |
103 | lote recebido com sucesso | WS | - |
108 | Serviço Paralisado Momentaneamente (curto prazo) | WS | B03 |
109 | Serviço Paralisado sem Previsão | WS | B04 |
2xx | [mensagem do motivo da rejeição do lote pelo WS] | WS | - |
Em alguns casos, pode ter havido duplicidade de código numérico, dessa forma, queira analisar a mensagem retornada pelo parâmetro msgRetWS para obter o diagnóstico do problema.
Finalidade do número do recibo do lote
O 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 pocessamento do lote.
Número do Recibo do Lote é número de 15 dígitos com o seguinte significado:
posição Descrição 1 a 2 código da UF do IBGE 3 órgão do tipo autorizador (0 ou 1=SEFAZ normal, 3=SEFAZ VIRTUAL-RS, 5=SEFAZ VIRTUAL-SP, 7 = SVC-RS, 8 = SVC-SP)) 4 a 15 sequencial
Histórico de atualização:
- Versão inicial.
- 2011-12-16 - Acréscimo do código exemplo em VB 6.0.
- 2013-01-16 - Revisão de texto da siglaWS
- 2017-01-12 - Alteração para suportar a versão 3.00 (CT-e e CT-e OS)
XML:
Exemplo de XML de retorno do Envio de Lote
<retEnviCte versao="1.04" xmlns="http://www.portalfiscal.inf.br/cte"> <tpAmb>2</tpAmb> <cUF>35</cUF> <verAplic>SP_PL_CTe_104a</verAplic> <cStat>103</cStat> <xMotivo>Lote recebido com sucesso</xMotivo> <infRec> <nRec>351100001888691</nRec> <dhRecbto>2011-12-17T12:12:09</dhRecbto> <tMed>1</tMed> </infRec> </retEnviCte>
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çã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 do CT-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 siglaUF As String ' informar a sigla da UF do emissor Dim siglaWS As String ' informar a sigla do WS de envio: ' . sigla da UF, caso a UF tenha aplicação própria (MG, MS, MT, PR, RS e SP). ' . RS, caso a UF seja usuária da SVRS - SEFAZ Virtual do RS (AM, BA, CE, DF, ES, ' GO, MA, RJ, RN, RO, SC, SE, e TO); ' . SP, caso a UF seja usuária da SVSP - SEFAZ Virtual de SP (AP, PE e RR); ' . RS quando desejar acessar a SVC-RS (AP, MT, MS, PE, RR e SP); ' . SP quando desejar acessar a SVC-SP (AM, BA, CE, DF, ES, GO, MA, MG, PA, RJ, ' RN, RO, RS, SC, SE, e TO); 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" 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 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 Dim tipoAmbiente As long ' informar o código do ambiente desejado: 1- produção ou 2-homologação Dim versao As String ' informar a versão da mensagem do WS - 1.03 / 1.04 Dim cStat As Long ' retorna o código do resultado da chamada do WS ' 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 do CT-e neste parâmetro, retorna a mensagem XML enviada para o WS msgRetWS = "" ' retorna a mensagem XML de resposta do WS msgResultado = "" ' retorna a literal do resultado da chamada do WS 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 ' ' 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" siglaWS = "RS" ' SEFAZ/RS siglaUF = "RS" ' informar a sigla da UF do emissor. versao = "1.04" ' informar a versão da mensagem do WS - 1.03 / 1.04 tipoAmbiente = 2 ' informar o código do ambiente desejado: 1- produção ou 2-homologação cStat = 0 ' retorna o código do resultado da chamada do WS ' ' Dim nomeArquivo As String ' nome do arquivo que contem o Lote ' ' nomeArquivo = "c:\exemplo.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 msgDados ' Open nomeArquivo For Input As #1 msgDados = Input$(LOF(1), 1) Close #1 Dim objCTeUtil As Object Set objCTeUtil = CreateObject("CTe_Util.Util") ' ' Screen.MousePointer = vbHourglass ' ampulheta ' ' ' cStat = objCTeUtil.EnviaLote(siglaWS, siglaUF, tipoAmbiente, nomeCertificado, versao, msgDados, msgRetWS, msgResultado, proxy, usuario, senha, licenca) ' ' Screen.MousePointer = vbDefault ' normal ' If cStat = 103 Then ' ' grava Retorno do envio do CTe ' nomeArquivo = "retEnviCte.xml" Open nomeArquivo For Output As #1 Print #1, msgRetWS Close #1 ' MsgBox Str(cStat) & " - " & msgResultado & vbCrLf & vbCrLf & "Faça a busca do resultado do processamento do lote.", vbInformation, "Informação" ' ' Else MsgBox Str(cStat) & " - " & msgResultado & vbCrLf & vbCrLf & msgRetWS, vbError, "Atenção: Falha no envio..." End If ' ' libera classe ' Set objCTeUtil = Nothing
- 10.1.2. EnviaLote [v3.00]
10.1. Envio de Lote de CT-e - « Anterior
10.1.1.5. Busca lote de CT-e - Próximo »
10.1.3. BuscaLote [v3.00]