Uma vez instalado o aplicativo DFeMessengerService, será necessário em seu aplicativo Android, criar uma “conexão” entre seu aplicativo e o nosso serviço.


Para isso, segue abaixo um breve resumo da operação realizada em Xamarin com linguagem C#.

Foi criado uma Classe chamada DFeServiceConection que será transmitida a função BindService onde permitirá a conexão ao aplicativo criado, no caso DFeMessengerService.


Trecho que deverá constar em seus Activity’s nos métodos OnStart() e OnStop(), o código para permitir a conexão ao serviço e o encerramento do mesmo.

protected override void OnStart()
{
base.OnStart();
var dfeMessengerService = new
Intent("Br.Com.Vinco.iContDFe.AndroidService.DFeMessengerService");
_demoServiceConnection = new DFeServiceConnection(this);
BindService(dfeMessengerService, _demoServiceConnection,
Bind.AutoCreate);
}
protected override void OnDestroy()
{
base.OnDestroy();
if (_isBound) UnbindService(_demoServiceConnection);
_isBound = false;
}

Segue abaixo a classe auxiliar para gerenciar a conexão ao aplicativo com duas funções Conectar o serviço e Desconectar o serviço.

internal class DFeServiceConnection : Object, IServiceConnection
{
readonly ControleActivity _activity;
public DFeServiceConnection(ControleActivity activity)
{
_activity = activity;
}
public void OnServiceConnected(ComponentName name, IBinder service)
{
_activity._demoMessenger = new Messenger(service);
_activity._isBound = true;
}
public void OnServiceDisconnected(ComponentName name)
{
_activity._demoMessenger.Dispose();
_activity._demoMessenger = null;
_activity._isBound = false;
}
}

 

Segue abaixo classe auxiliar para gerenciar a conexão ao aplicativo com duas funções Conectar o serviço e Desconectar o serviço.

internal class DFeServiceConnection : Object, IServiceConnection
{
readonly ControleActivity _activity;
public DFeServiceConnection(ControleActivity activity)
{
_activity = activity;
}
public void OnServiceConnected(ComponentName name, IBinder service)
{
_activity._demoMessenger = new Messenger(service);
_activity._isBound = true;
}
public void OnServiceDisconnected(ComponentName name)
{
_activity._demoMessenger.Dispose();
_activity._demoMessenger = null;
_activity._isBound = false;
}
}


Por fim, também será necessário adicionar um Handler em cada Activity para permitir verificar a mensagem de retorno do nosso serviço. Exemplo:

internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var motivo = string.Format("Motivo: {0}", msg.Data.GetString("Motivo"));
var statusWhat = string.Format("What: {0} || Status: {1}", msg.What,
msg.Data.GetInt("Status"));
}
}

 

Portanto, em cada Activity realizado em nosso exemplo, colocamos estes métodos que permitem realizar a conexão e as operações com o serviço.

 

Funcionalidades do DFeMessengerService
O serviço para Android do VincoDFe possui 12 funcionalidades para emissão de documentos eletrônicos no ambiente Android. Segue lista abaixo:

1 - RegistrarApp;
2 - VerificarRegistoApp;
3 - ForcarAtualizacaoMetaDados;
4 - EnviarNfce;
5-PrepararNfceOffLine;
6-EnviarNfceOffline;
7-VerificaArquivosOffline;
8-EnviarCancelamento;
9-EnviarInutilizacao;
10-ApagarNfceOffline;
11-VerificaNfce;
12-Ping;

Importante ressaltar a numeração, pois, é desta forma que o serviço identifica a operação solicitada, exemplo ao solicitar a função RegistrarApp deve-se informar o valor 1:

var msg = Message.Obtain(null, 1);

Segue a descrição de cada funcionalidade disponibilizada.

 

1 - RegistrarApp
Permite o registro da empresa ao serviço Android. Em sua chamada são necessários quatro parâmetros:

IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe.- Tipo: String
Senha Digest: Informação fornecida pela Equipe Vinco para uso na aplicação Android – Tipo: String
Chave Privada: Obtida no site – Tipo: String
Posicao Chave Privada: Informação será fornecida junto com a chave privada. Cada chave privada terá uma posição (índice) – Tipo: Int

Exemplo de implementação:

  1. private Messenger demoMessenger;
  2. var returnMessage = new Messenger(new ReturnHandler());
  3. var b = new Bundle();
  4. var msg = Message.Obtain(null, 1);
  5. msg.ReplyTo = returnMessage;
  6. b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  7. b.PutString("SenhaDigest",” xxxxxxxxxxxx”);
  8. b.PutInt("Posicao, x);
  9. b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  10. msg.Data = b;
  11. demoMessenger.Send(msg).


Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler

{
public override void HandleMessage(Message msg)
{
var motivo = string.Format("Motivo: {0}", msg.Data.GetString("Motivo"));
var status = msg.Data.GetInt("Status"));
}
}

Propriedades Retornadas:
Motivo: Mensagem da operação realizada. Tipo: String.
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). Tipo: Int.

2 - VerificarRegistroApp
Utilizado para verificar se o serviço está registrado corretamente. Não exige parâmetros.


Exemplo de implementação:

  1. private Messenger demoMessenger;
  2. var returnMessage = new Messenger(new ReturnHandler());
  3. var msg = Message.Obtain(null, 2);
  4. msg.ReplyTo = returnMessage;
  5. demoMessenger.Send(msg).

Exemplo de implementação Retorno. 

 internal class ReturnHandler : Handler

{
public override void HandleMessage(Message msg)
{
var motivo = string.Format("Motivo: {0}", msg.Data.GetString("Motivo"));
var status = msg.Data.GetInt("Status"));
}
}

 

Propriedades Retornadas:
Motivo: Mensagem da operação realizada. Tipo: String
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int

 

 3 - ForcarAtualizacaoMetaDados
Utilizado para atualizar as informações da empresa no cache. Procedimento importante no momento para permitir a contingência OffLine da NFC-e.


Exemplo de implementação.

  1.  private Messenger demoMessenger;
  2. var returnMessage = new Messenger(new ReturnHandler());
  3. var msg = Message.Obtain(null, 3);
  4. msg.ReplyTo = returnMessage;
  5. demoMessenger.Send(msg);


Exemplo de implementação Retorno.

internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var motivo = string.Format("Motivo: {0}", msg.Data.GetString("Motivo"));
var status = msg.Data.GetInt("Status"));
}
}


Propriedades Retornadas:
Motivo: Mensagem da operação realizada. – Tipo: String.
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int.

 

4 – EnviarNFCe
Utilizado para enviar NFCe de forma direta (não contingência).

Em sua chamada são necessários quatro parâmetros:

  1. IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe.- Tipo: String.
  2. KeySistema: IdKeySistema da empresa no ConfigExtractor (Opcional) – Tipo: String.
  3. Posicao Chave Privada: Informação será fornecida junto com a chave privada. Cada chave privada terá uma posição (índice) – Tipo: Int.
  4. Chave Privada: Obtida no site – Tipo: String.
  5. XmlNFCe: XML com dados gerais da NFCe – Tipo: String.

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 4);
  • b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  • b.PutString("KeySistema",”xxx-xxxx-xxxx-xxxx”);
  • b.PutInt("Posicao, x);
  • b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  • b.PutString("XmlNFCe", “arquivo XML”);
  • msg.Data = b;
  • demoMessenger.Send(msg).

 

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var ChaveDFe = msg.Data.GetString("ChaveDFe");
var Motivo = msg.Data.GetString("Motivo");
var UrlDanfe = msg.Data.GetString("UrlDanfe");
var Status = msg.Data.GetInt("Status ");
var XmlDFe = msg.Data.GetString("XmlDFe");
}
}

 

Propriedades Retornadas:

  • Motivo: Mensagem da operação realizada. Tipo: String.
  • Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). Tipo: Int.
  • ChaveDFe: Chave da NFCe Emitida. Tipo: String.
  • UrlDanfe: URL para consulta da NFCe. Tipo: String.
  • XmlDFe: XML do DFe autorizado. Tipo:String.

5 – PrepararNfceOffLine
Utilizado para emitir a nota em contingência.

A função “prepara” um arquivo com a extensão “.offLine”, que deverá ser encaminhado posteriormente através da funcionalidade “EnviarNfceOffline”.

A pasta onde o arquivo é armazenado é gerenciado pelo serviço.
Para a correta operação desta função, é necessário que o sistema tenha autorizado uma NFC-e de forma direta (online), ao menos uma vez.

Em sua chamada são necessários 4 parâmetros:

  1. IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe. - Tipo: String.
  2. Posicao Chave Privada: Informação será fornecida junto com a chave privada. Cada chave privada terá uma posição (índice) - Tipo: Int.
  3. Chave Privada: Obtida no site - Tipo: String.
  4. XmlNFCe: XML com dados gerais da NFCe – Tipo: String.

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 5);
  • b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  • b.PutInt("Posicao, x);
  • b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  • b.PutString("XmlNFCe", “arquivo XML”);
  • msg.Data = b;
  • demoMessenger.Send(msg).

 

Exemplo de implementação Retorno.

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var ChaveDFe = msg.Data.GetString("ChaveDFe");
var Motivo = msg.Data.GetString("Motivo");
var UrlDanfe = msg.Data.GetString("UrlDanfe");
var Status = msg.Data.GetInt("Status ");
var XmlDFe = msg.Data.GetString("XmlDFe");
}
}

 

Propriedades Retornadas:
Motivo: Mensagem da operação realizada. Tipo: String
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int
ChaveDFe: Chave da NFCe Emitida. – Tipo:String
UrlDanfe: URL para consulta da NFCe. – Tipo: String
XmlDFe: XML do DFe autorizado. – Tipo: String

 

6 – EnviarNfceOffLine
Utilizado para transmitir a nota preparada em contingência. A função encaminha o arquivo com a extensão “.offLine”. Tendo o retorno igual a função EnviarNFCe. Em sua chamada são necessários 4 parâmetros:

  1. IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe.
  2. Posicao Chave Privada: Informação será fornecida junto com a chave privada. Cada chave privada terá uma posição (índice).
  3. Chave Privada: Obtida no site.
  4. ChaveDFe: Chave da NFCe gerada em contingência.

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 6);
  • b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  • b.PutInt("Posicao, x);
  • b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  • b.PutString("ChaveDFe ", “Chave 44 posições da NFCe”);
  • msg.Data = b;
  • demoMessenger.Send(msg);

 

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var ChaveDFe = msg.Data.GetString("ChaveDFe");
var Motivo = msg.Data.GetString("Motivo");
var UrlDanfe = msg.Data.GetString("UrlDanfe");
var Status = msg.Data.GetInt("Status ");
var XmlDFe = msg.Data.GetString("XmlDFe");
}
}

 

Propriedades Retornadas:

  • Motivo: Mensagem da operação realizada. Tipo: String.
  • Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int.
  • ChaveDFe: Chave da NFCe Emitida. – Tipo:String.
  • UrlDanfe: URL para consulta da NFCe. – Tipo: String.
  • XmlDFe: XML do DFe autorizado. – Tipo: String.

 

7 –VerificaArquivosOffLine
Utilizado para Listar os arquivos preparados em contingência. Não exige parâmetros.

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var msg = Message.Obtain(null, 7);
  • msg.ReplyTo = returnMessage;
  • demoMessenger.Send(msg).

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var listaChaves = msg.Data.GetStringArrayList("Chaves");
var quantidade = msg.Data.GetInt("Quantidade")
}
}

 

Propriedades Retornadas:
Chaves: Array com as Chaves das NFCe’s preparadas em contingência, Array Tipo String.
Quantidade: Quantidade de notas preparadas em contingência - Tipo: Int.

 

8 – EnviarCancelamento
Utilizado para realizar o Cancelamento do DFe. Em sua chamada são necessários oito parâmetros:

  1.  IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe. - Tipo: String;
  2.  Posicao Chave Privada: Informação será fornecida junto com a chave privada. Cada chave privada terá uma posição (índice) – Tipo: String;
  3.  Chave Privada: Obtida no site.- Tipo: String;
  4.  Chave: Chave do DFe a ser cancelado – Tipo:String;
  5.  Ambiente: 1 – Produção ou 2 – Teste – Tipo: Int;
  6.  Protocolo: Protocolo de autorização do DFe – Tipo: Long;
  7.  DhEvento: Data de Hora do Cancelamento – Tipo: String;
  8.  Motivo – Justificativa do Cancelamento – Tipo: String.

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 8);
  • b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  • b.PutInt("Posicao, x);
  • b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  • b.PutString("Chave",”xxxxxxxxxxxx”);
  • b.PutInt("Ambiente", "2"); // 1 - Produção 2 - Testes
  • b.PutLong("Protocolo", "12345678"); //Número de Protocolo de Autorização
  • b.PutString("DhEvento", DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"));
  • b.PutString("Motivo", "Teste de Cancelamento);
  • msg.Data = b;
  • demoMessenger.Send(msg);

 

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var ChaveEvento= msg.Data.GetString("ChaveEvento");
var Motivo = msg.Data.GetString("Motivo");
var IdEvento = msg.Data.GetLong("IdEvento");
var Status = msg.Data.GetInt("Status ");
var XmlEvento= msg.Data.GetString("XmlEvento");
var ProtocoloEvento = msg.Data.GetLong("ProtocoloEvento ")
}
}

 

Propriedades Retornadas:

  • Motivo: Mensagem da operação realizada.- Tipo: Sting;
  • Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo:Int;
  • ChaveEvento: Chave da NFCe Emitida. – Tipo: String;
  • IdEvento: Id do Evento Retornado. – Tipo: Long;
  • UrlDanfe: URL para consulta da NFCe. – Tipo: String;
  • XmlEvento: XML do Evento Registrado. – Tipo: String;
  • ProtocoloEvento: Protocolo do Evento Registrado. – Tipo: Long.

 

9 – Enviar Inutilização
Utilizado para realizar a Inutilização do DF-e. Em sua chamada são necessários onze parâmetros:

  1.  IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe. – Tipo: String
  2.  Posicao Chave Privada: Informação será fornecida junto com a chave privada. Cada chave privada terá uma posição (índice) – Tipo: Int
  3.  Chave Privada: Obtida no site. – Tipo: String
  4.  Ambiente: 1 – Produção ou 2 – Teste - Tipo: Int
  5.  Serie – Serie do Número a ser Inutilizado - Tipo: Int
  6.  Cuf – Código da UF do Emitente - Tipo: Int
  7.  Ano – Ano da Operação. Exemplo: 17 - Tipo: Int
  8.  Cnpj - CNPJ do Emitente - Tipo: Long
  9.  Motivo – Justificativa da Inutilização. – Tipo: String
  10.  NumeroInicial – Número Inicial do Primeiro número a ser Inutilizado - Tipo: Int
  11.  NumeroFinal – Número Final do Último número a ser Inutilizado. - Tipo: Int

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 9);
  • b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  • b.PutInt("Posicao, x);
  • b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  • b.PutInt("Serie", 1); // 1 - Produção 2 - Testes
  • b.PutLong("Cnpj", 012345678901234);
  • b.PutInt("Ambiente", "2"); // 1 - Produção 2 - Testes
  • b.PutInt("Cuf", 35); //Número de Protocolo de Autorização
  • b.PutInt("Ano", 17); //Número de Protocolo de Autorização
  • b.PutString("Motivo", "Teste de Inutilizção);
  • b.PutInt("NumeroInicial", 1);
  • b.PutInt("NumeroFinal", 2);
  • msg.Data = b;
  • demoMessenger.Send(msg).

 

Exemplo de implementação Retorno.

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var Motivo = msg.Data.GetString("Motivo");
var Status = msg.Data.GetInt("Status ");
var XmlInutilizacao = msg.Data.GetString("XmlInutilizacao");
}
}

 

Propriedades Retornadas
Motivo: Mensagem da operação realizada. – Tipo: String
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int
XmlInutilizacao: XML da Inutilização – Tipo: String

 

10 – ApagarNfceOffLine
Utilizado para apagar os arquivos preparados OffLine, uma vez que tenham sido transmitidos. Em sua chamada é necessário apenas um parâmetro.
- ChaveDFe: Chave da NFCe contida no arquivo que deverá ser excluído. – Tipo: String

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 10);
  • b.PutString("ChaveDFe",”xxxxxxxxxxxx”);
  • msg.Data = b;
  • demoMessenger.Send(msg)

 

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var motivo = string.Format("Motivo: {0}", msg.Data.GetString("Motivo"));
var status = msg.Data.GetInt("Status"));
}
}

 

Propriedades Retornadas:
Motivo: Mensagem da operação realizada. – Tipo: String
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int

 

11 – VerificaNfce
Utilizado para verificar NFC-e em caso de exceção ou retorno inconclusivo da SEFAZ. 

São seus parâmetros:

  • IdKeyEmpresa: IdKeyEmpresa da empresa no VincoDFe.- Tipo: String
  • KeySistema: IdKeySistema da empresa no ConfigExtractor (Opcional) – Tipo: String
  • Posicao Chave Privada: Informação será fornecida junto com a chave privada.Cada chave privada terá uma posição (índice) – Tipo: Int
  • Chave Privada: Obtida no site – Tipo: String
  • XmlNFCe: XML com dados gerais da NFCe – Tipo: String

Exemplo de implementação:

  •  private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var b = new Bundle();
  • var msg = Message.Obtain(null, 4);
  • b.PutString("IdKeyEmpresa",”xxx-xxxx-xxxx-xxxx”);
  • b.PutString("KeySistema",”xxx-xxxx-xxxx-xxxx”);
  • b.PutInt("Posicao, x);
  • b.PutString("ChavePrivada",”xxxxxxxxxxxx”);
  • b.PutString("XmlNFCe", “arquivo XML”);
  • msg.Data = b;
  • demoMessenger.Send(msg).

 

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var ChaveDFe = msg.Data.GetString("ChaveDFe");
var Motivo = msg.Data.GetString("Motivo");
var UrlDanfe = msg.Data.GetString("UrlDanfe");
var Status = msg.Data.GetInt("Status ");
var XmlDFe = msg.Data.GetString("XmlDFe");
}
}

 

Propriedades Retornadas:

  • Motivo: Mensagem da operação realizada. Tipo: String.
  • Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). Tipo: Int
  • ChaveDFe: Chave da NFCe Emitida. Tipo: String.
  • UrlDanfe: URL para consulta da NFCe. Tipo: String.
  • XmlDFe: XML do DFe autorizado. Tipo:String.

 

12 – Ping
Utilizado para verificar se o serviço está onlinte. Em sua chamada não é necessário parâmetros.
Endereco: Endereço da URL da Api.

Exemplo de implementação:

  • private Messenger demoMessenger;
  • var returnMessage = new Messenger(new ReturnHandler());
  • var msg = Message.Obtain(null, 12);
  • demoMessenger.Send(msg);

Exemplo de implementação Retorno:

 internal class ReturnHandler : Handler
{
public override void HandleMessage(Message msg)
{
var motivo = string.Format("Motivo: {0}", msg.Data.GetString("Motivo"));
var status = msg.Data.GetInt("Status"));
}
}

 

Propriedades Retornadas.
Motivo: Mensagem da operação realizada. – Tipo: String
Status: Código de Status da operação. (Verificar Anexo I com as mensagens e os códigos retornados). – Tipo: Int

 

Anexo I – Tabela de Código de Status e Mensagens retornadas pela Solução.
Caso a transmissão com a SEFAZ ocorra com êxito serão retornados no campo Status o e Motivo o campo código Cstat e XMotivo retornados pelo Fisco nos processo de Autorização, Cancelamento, Inutilização e etc.

Status Motivo Operação
-1000

Registro de aplicativo falhou, faltam dados.

RegistrarApp
200 Registro de aplicativo aceito RegistrarApp
-200 Exceção Diversa RegistrarApp
-900 Exceção não tratada RegistrarApp
300 Registro OK!

VerificarRegistoApp, ForcarAtualizacaoMetaDados

-1001

Registro de aplicativo falho, faltam dados, refaça o registro de aplicativo

Validar em Todas as operações
-9999 Exceção não tratada Validar em Todas as operações
101

XmlNFCe ou Chave Df-e não informado

EnviarNfce, VerificaNfce,
PrepararNfceOffLine, EnviarNfceOffline

99 Arquivo preparo OffLine PrepararNfceOffLine
999 What/Operação desconhecido Todas as operações