Evento Cancela Comprovante de Entrega da NF-e – Nota Técnica 2021.001
string EnviaCancCENFe(string siglaWS, int tipoAmbiente, string nomeCertificado, string versao, out string msgDados, out string msgRetWS, out int cStat, out string msgResultado, string chaveNFe, string dhEvento, int nroCancCE, string verAplic, string nProtEvento, out string nroProtocolo, out string dhProtocolo, string proxy, string usuario, string senha, string licenca)
Funcionalidade cancelar um Comprovante de Entrega da NF-e..
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.
nome | tipo | fluxo | descrição |
---|---|---|---|
siglaWS | string | entrada | informar a sigla do WS desejado, este evento é recepcionado somente pelo “AN” |
tipoAmbiente | inteiro | entrada | informar o código do ambiente desejado: 1- produção ou 2-homologaçã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”. |
versao | string | entrada | informar a versão da mensagem do WS – 4.00 |
msgDados | string | saída | retorna a mensagem XML do evento carta de correção criado pela DLL que foi enviado ao WS. |
msgRetWS | string | saída | retorna a mensagem XML de resposta do WS |
cStat | inteiro | saída | retorna o resultado da chamada do WS. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
chaveNFe | string | entrada | informar a chave de acesso da NF-e que o evento será vinculado |
dhEvento | string | entrada | informar a data e hora do evento no formato “AAAA-MM-DD HH:MM:SS”. Ex. Delphi: FormatDateTime(‘yyyy-mm-dd “” hh:mm:ss’, Now); VB: Format$(Now, “yyyy-mm-dd HH:mm:ss”) Se a data e hora informada for maior que a data do WS vai ocorrer o erro 578, veja o retorno do WS e verifique se o horário do equipamento está sincronizado com o horário do WS. A data e hora é convertida em formato UTC – Universal Time Zone (representação do horário que considera o fuso em relação ao horário UTC), assim como existe a validação de schema XML para a data e hora, se o fuso horário do equipamento estiver com uma configuração que não seja a brasileira ocorrerá falha de schema XML. A DLL irá pegar a data e hora do equipamento se o conteúdo for omitido. |
nroCENFe | inteiro | entrada | informar o número sequencial do evento, deve ser iniciada com 1 e valor máximo é 20, campo de controle do usuário, o Web Service não permite a duplicidade de numeração e nem controla a ordem crescente. |
verAplic | string | entrada | informar a Versão do aplicativo do Autor do Evento. |
nProtEvento | string | entrada | Informar o número do Protocolo de Autorização do Evento da NF-e a que se refere este cancelamento. |
nProtocolo | string | saída | retorna o número do protocolo de registro do Evento. |
dhProtocolo | string | saída | retorna a data e hora de registro do Evento, a data passou a ser UTC com a indicação do fuso horário. |
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, para maiores detalhes veja as condições de uso |
O resultado da chamada do EnviaCancCENFe é a mensagem XML composta pelo cancelamento do comprovante de entrega e respectivo protocolo de homologação de vinculação de evento.
O parâmetro cStat retorna um código numérico com os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
5001 | Erro: 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 | – |
5002 | Erro: 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 | – |
5003 | Erro: 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 | – |
5004 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: método não permitido) | DLL | – |
5005 | Erro: 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 | – |
5006 | Erro: 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 | – |
5007 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: mensagem maior que a permitida) | DLL | – |
5008 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Servidor com problemas) | DLL | – |
5009 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Serviço não implementado) | DLL | – |
5010 | Erro: 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 | – |
5011 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Causa provável da falha na conexão: Rede indisponível) | DLL | – |
5012 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Versão do SOAP não suportada | DLL | – |
5013 | Erro: 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 | – |
5014 | Erro: Falha na conexão: [MENSAGEM DE ERRO DO WINDOWS] (Causa provável: Web Service não consumido, falha desconhecida) | DLL | – |
5015 | Erro: Falha na conexão: Tempo limite de time-out alcançado [TEMPO DE TIME OUT UTILIZADO ms] – [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5016 | Erro: Falha na conexão: Falha da Biblioteca Criptografica: [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5017 | Erro: Falha ao tratar o XML de retorno do WS: [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5101 | Erro: A mensagem de retorno do WS não é um XML válido: [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5102 | Erro: Tag cStat inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5103 | Erro: Tag xMotivo inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5104 | Erro: Tag [NOME TAG] inexistente na mensagem de retorno [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5105 | Erro: O WS não devolveu nenhum resultado | DLL | – |
5201 | Erro: O código do tipo de ambiente [CODIGO RECEBIDO PELA DLL] informado diferente de 1 – produção e 2 – homologação | DLL | – |
5202 | Erro: A sigla da UF [SIGLA RECEBIDA PELA DLL] informada é inválida | DLL | – |
5203 | Erro: Inexiste url para a UF [SIGLA UF] informada no ambiente [AMBIENTE] desejado, verifique se existe atualização do arquivo [NOME ARQUIVO] disponível. | DLL | – |
5204 | Erro: Arquivo que contem a URL do WS não localizado em [CAMINHO DA APLICACAO] | DLL | – |
5205 | Erro: Ocorreu um erro inesperado no processamento da URL (NOME URL) : [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
5206 | Erro: Ocorreu um erro de validação do XML (NOME XML) : [MENSAGEM DE ERRO DO WINDOWS] | DLL | – |
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 | – |
6101 | Erro: O parâmetro versao não foi informado | DLL | – |
6102 | Erro: O conteúdo do parâmetro sigla da UF: [conteúdo do parâmetro] é inválido | DLL | – |
6103 | Erro: O conteúdo do parâmetro versao informado é inválido: [conteúdo do parâmetro] | DLL | – |
6104 | Erro: O parâmetro chaveNFe não informado | DLL | – |
6105 | Erro: O tamanho [tamanho da chave da NFe] do parâmetro chaveNFe informado não tem 44 caracteres | DLL | – |
6106 | Erro: As posições correspondentes (1,2) ao código da UF [valor] do parâmetro chaveNFe não é um código de UF válido | 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 | – |
6123 | Erro: O parâmetro tipoAmbiente deve ser informado | DLL | – |
6124 | Erro: O parâmetro tipoAmbiente [conteúdo do parâmetro] deve ser 1 ou 2 | DLL | – |
6141 | Erro: O parâmetro siglaWS deve ser informado | DLL | – |
6222 | Erro: O parâmetro versão do aplicativo do autor do Evento (verAplic) deve ser informado | DLL | – |
6223 | Erro: O parâmetro versão do aplicativo do autor do Evento (verAplic) deve ter no máximo 20 caracteres [conteúdo do parâmetro] | DLL | – |
6234 | Erro: O parâmetro nroCancCE deve ser informado | DLL | – |
6235 | Erro: O parâmetro nroCancCE informado: [conteúdo do parâmetro] fora da faixa permitida 1-99 | DLL | – |
6236 | Erro: O parâmetro número do protocolo evento que se refere este cancelamento (nProtEvento) deve ser informado | DLL | – |
6237 | Erro: O parâmetro número do protocolo evento que se refere este cancelamento (nProtEvento) deve ter 15 caracteres: [conteúdo do parâmetro] | DLL | – |
6152 | Erro: A chave da NF-e do retEvento: [chaveNFe retEvento] é divergente da chave da NF-e do Evento: [conteúdo do parâmetro] | DLL | – |
7001 | Erro: A licença não foi informada | DLL | – |
7002 | Erro: A licença informada: [licença] tem tamanho:[tamanho da licença] diferente de 128 | DLL | – |
7003 | Erro: A licença informada: [licença] não pertence ao CNPJ:[CNPJ informado] | DLL | – |
Caso ocorra algum erro na chamada do WS (5001-7003) ou a requisição não seja atendida pelo WS, 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
A tag dhEvento tem a informação da data, hora e fuso horário, isto é a data e hora é convertida em formato UTC – Universal Time Zone (representação do horário que considera o fuso em relação ao horário UTC):
<dhEvento>2012-08-18T20:26:58-03:00</dhEvento>, onde:
• 2012-08-18 = data;
• 20:26:58 = hora;
• -03:00 = fuso horário.
O objetivo da informação do fuso horário é permitir que equipamentos localizados em locais com fuso horário diferente do fuso horário da SEFAZ de recepção do evento não precise “adequar a hora” para a hora local da SEFAZ de recepção do evento.
Exemplo:
Uma filial localizada no Mato Grosso do Sul que utiliza o servidor da matriz localizada em São Paulo pode ter problemas ao informar a hora.
A data e hora do equipamento localizado em São Paulo tem horário diferente do horário local de Mato Grosso do Sul, assim em princípio, a aplicação pode gerar a tag dhEvento com horário local de São Paulo que vai estar adiantado uma hora em relação ao horário local do Mato Grosso do Sul, gerando a necessidade de “ajustar a hora” para a hora local do Mato Grosso do Sul.
A adoção do formato UTC “elimina” a necessidade deste “ajuste”, pois a aplicação da SEFAZ vai tratar o horário de forma correta considerando o fuso horário, entendendo que o horário de São Paulo: <dhEvento>2012-08-18T20:26:58-03:00</dhEvento> equivalente a 19:26:58 no horário local do Mato Grosso do Sul (<dhEvento>2012-08-18T19:26:58-04:00</dhEvento>).
Horário de verão
O horário de verão equivale a adoção de um fuso horário diferente do fuso horário local, assim a data e hora no formato UTC de uma localidade que está adotando o horário de verão vai mostrar o fuso diferente do fuso horário local.
Exemplo:
O fuso horário de São Paulo é UTC-3, durante o período do horário de verão, o relógio será adiantado em uma hora no fuso horário oficial local. É importante ressaltar que durante o horário de verão, a região adota um fuso horário diferente do padrão, ou seja, o fuso horário de São Paulo durante o horário de verão será UTC-2.
Os equipamentos devem configurados de forma que o sistema operacional faça o ajuste para o horário de verão de forma automática, evite adiantar a hora do equipamento, pois isto não repercute no fuso horário e a DLL vai gerar a data e hora no formato UTC com UTC-3 que é um horário diferente do horário verão que considera o fuso UTC-2.
Durante o horário de verão, as localidades que adotam o horário de verão estarão com o fuso horário adiantado em uma hora, isto é se o fuso horário normal for UTC-3, o fuso do horário durante o horário de verão será UTC-2.
data e hora no horário de verão
<dhEvento>2012-11-18T17:13:21-02:00</dhEvento> –> horário normal equivalente: <dhEvento>2012-11-18T18:13:21-03:00</dhEvento>
<dhRegEvento>2012-11-18T17:13:54-02:00</dhRegEvento>
cliente com data e hora no horário normal e servidor no horário de verão
<dhEvento>2012-11-18T17:13:21-03:00</dhEvento>
<dhRegEvento>2012-11-18T17:13:54-02:00</dhRegEvento>
Como 17:13:21-03:00 equivale a 16:13:21-02:00 vai ocorrer rejeição do pedido pois o horário do cliente está adiantado em relação ao horário do Web Service: 17:13:54-02:00.