- 10.1. Envio de Lote de CT-e
10.1.2. EnviaLote - 10.1.1.5. Busca lote de CT-e
« Anterior - 10.1.3. BuscaLote
Próximo »
10.1.2. EnviaLote
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
A identificação do WS de envio deverá ser informada no parâmetro siglaWS.
Os emissores localizados em UF usuárias da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO) devem informar a sigla RS; caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF.
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.
Preenchimento da siglaWS
a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO);
a sigla da UF, caso a UF tenha aplicação própria (MG, MS, MT, RS e SP).
Preenchimento do nomeCertificado
Informar o Nome do titular (campo Assunto) do certificado digital a ser utilizado na conexão SSL.
Parâmetros:
| nome | tipo | fluxo | descrição |
|---|---|---|---|
| siglaWS | string | entrada | informar a sigla do WS de envio, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF. |
| 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 da mensagem do WS - 1.03 / 1.04 |
| 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 (1 – Secretaria de Fazenda Estadual, 2 – Receita Federal, 3 – SEFAZ Virtual RS e 4 – SEFAZ Virtual RFB) 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.
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, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF 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" ' informar a sigla do WS de envio, informar a sigla RS, caso a UF seja usuária da SEFAZ Virtual (AM, BA, CE, ES, GO, MA, PR, RJ, RN, RO, SC, SE, e TO); caso a UF tenha aplicação própria (MG, MS, MT, RS e SP), informar a sigla da própria UF 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
10.1. Envio de Lote de CT-e - « Anterior
10.1.1.5. Busca lote de CT-e - Próximo »
10.1.3. BuscaLote