O Componente NFC-e da Tecnospeed é um aplicativo Android projetado para simplificar a emissão da Nota Fiscal de Consumidor Eletrônica (NFC-e). Este componente oferece uma biblioteca de comunicação altamente eficiente, que torna a integração da NFC-e uma tarefa descomplicada para os clientes.
Para começar a usar este componente em seu aplicativo, basta instanciá-lo em seu projeto e implementar os métodos necessários de acordo com suas necessidades específicas. Este artigo fornece todas as informações necessárias para baixar o componente e orienta você na implementação de métodos para emitir e imprimir notas fiscais eletrônicas de forma incrivelmente simples.
Siga os passos fornecidos aqui para facilitar o processo de emissão de NFC-e em seu aplicativo Android.
1. Instalação - Componente NFC-e Android
2. Instanciar - Componente NFC-e Android
3. Propriedades - Componente NFC-e Android
4. Métodos - Componente NFC-e Android
Configurações
Fluxo de Emissão
Utilitários
Impressão
1. Criação de conta TecnoAccount - Instalação. - Componente NFC-e Android!
a) Conta TecnoAccount
O primeiro passo, é realizar a criação da sua Conta TecnoSpeed. Ela permite gerenciar as configurações e ferramentas para acessar os nossos produtos e serviços em um único lugar, de forma simples e fácil.
Após se cadastrar, você poderá visualizar o seu Token. Juntamente com o seu CNPJ ou CPF, este Token será utilizado para se autenticar na maioria de nossos serviços.
O Token juntamente com o CNPJ ou CPF será utilizado no método configurarSoftwareHouse, onde você deve passar ambos como parâmetro, eles também servem para autenticar a requisição caso utilize nossa API para o envio das informações.
Acesse a sua Conta TecnoSpeed >
b) Download da versão
Após aprovação do pedido de adesão, em até 24 horas úteis, nossa equipe financeira irá realizar o faturamento e disponibilizar o Componente NFC-e Android para download na Central do Cliente. Você pode acessar a Central do Cliente com os dados de acesso que você preencheu no formulário de registro.
Com o componente já disponível, na aba lateral Download, clique no botão Baixar. Caso o download não inicie, desabilite o bloqueador de pop-ups do seu navegador.
c) Instalação da biblioteca de integração (AAR)
Após realizado o download da versão, vamos realizar a instalação da biblioteca em seu projeto. Adicionando-a como uma dependência.
- Para manter uma padronização vamos adicionar o arquivo (.aar) baixado em uma pasta especifica do projeto android a pasta "libs". Caminho da pasta (app/libs).
- Agora no arquivo build.gradle (Module) vamos adicionar a implementação do arquivo copiado.
Após abrir este arquivo adicione o seguinte código no bloco "dependencies":dependencies {
...
//Importação da biblioteca
implementation files('libs/lib_nfce_tecnoaccount_1.0.0.0.aar');
*Atenção
Sempre valide a importação da biblioteca, verifique se a versão da importação é a mesma versão que está na pasta libs do componente.
Exemplo: Pasta libs está com a versão: lib_nfce_tecnoaccount_1.0.0.2.aar, no arquivo gradle, tem que estar com a mesma versão.
//Pacotes necessários para o funcionamento da biblioteca
implementation 'com.fasterxml.jackson.core:jackson-core:2.12.5'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.5'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.12.5'
}
d) Instalação da aplicação do Componente (APK)
Após a configuração de biblioteca no projeto, vamos realizar a instalação do componente (APK) no aparelho. Para seguir este passo será necessário um gerenciador de arquivos no aparelho.
- Com o (APK) baixado da central do cliente vai ser necessário enviar este APK para o aparelho. Obs: Salve em uma pasta de fácil localização.
Nesse exemplo vamos utilizar o APK salvo na pasta Downloads do aparelho.
- Execute a instalação padrão da APK.
2. Instanciar - Componente NFC-e Android
Finalizado a instalação do componente no aparelho, agora é necessário realizar a instanciação da classe utilizando nossa biblioteca de integração.
Java - Android Studio
Comece importando nosso pacote no seu projeto, assim você terá acesso à classe.
import com.tecnospeed.nfce.core.TspdNFCe;
Com o import realizado, você pode criar uma instância da classe como mostrado abaixo:
// Cria uma instância do objeto TspdNFCe.
TspdNFCe nfce = new TspdNFCe();
Para o correto funcionamento dessa classe, precisamos realizar algumas configurações para receber corretamente o retorno das chamadas dos métodos.
// Declaração de um objeto para iniciar atividades com resultados.
ActivityResultLauncher<Intent> launcher;
// Registra um contrato para iniciar uma atividade para resultados de alguma operação (neste caso, NFCe). launcher = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), nfce::onResult); // Define o "launcher" para processar os resultados da atividade. nfce.setLauncher(launcher); // Define o nome do pacote da aplicação que esta implementando a biblioteca de integração.
// Utilize o nome do pacote de sua aplicação nfce.setAppPackageName("com.seu.pacote");
** Atenção: Substitua "com.seu.pacote" pelo nome do seu pacote.
É necessário realizar o import dos seguintes packages:
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
Após esses passos vamos realizar uma configuração do provider para funcionar o metódo que faz a configuração do certificado digital no AndroidManifest.xml do projeto.
Insira o código abaixo na tag "application".
<application
...>
...
<provider
android:name="com.tecnospeed.nfce.core.TspdCertificateContentProvider"
android:authorities="com.seu.pacote.provider"
android:exported="true" />
</application>
** Atenção: Substitua "com.seu.pacote" pelo nome do seu pacote.
3. Propriedades - Componente NFC-e Android
Para preparar o componente, podemos ajustá-lo usando as configurações listadas na tabela abaixo.
Nome na classe | Descrição | Valor |
VersaoManual | Versão de Manual da Nota Técnica | VersaoManual.vm60 |
Ambiente | Determina ao Componente o servidor com o qual deverá interagir (Homologação ou Produção). | Ambiente.HOMOLOGACAO, Ambiente.PRODUCAO |
CNPJ | Propriedade que recebe o CNPJ do Emitente do NFC-e. | 88895624000165 |
IdTokenCSC | IdTokenCSC - Cada token possui associado um código sequencial de identificação (IdToken) de 6 dígitos para facilitar a identificação do respectivo token e validação do QR Code pelo Fisco quando da realização da consulta pelo consumidor. | 000001 |
TokenCSC | TokenCSC - O token corresponde a um código de segurança alfanumérico de conhecimento apenas da Secretaria da Fazenda do Estado do emitente e do próprio contribuinte. Desta forma é possível garantir a autoria do DANFCE NFC-e e do respectivo QR Code, pois somente o Fisco e o contribuinte emissor conhecem o valor válido do token para aquela empresa no Estado. | |
SenhaCertificado | Propriedade que recebe a senha do certificado digital | |
ModeloImpressora |
Propriedade que recebe o modelo da impressora* *Atualmente está homologado somente o modelo Leopardo A7 |
ModeloImpressora.LEOPARDO_A7 |
PortaComunicacao |
Propriedade que recebe a porta de comunicação da impressora* *Atualmente recebe o valor da porta bluetooth da impressora |
11:22:6C:D4:3F:44 |
4. Métodos - Componente NFC-e Android
A biblioteca de integração possui os seguintes métodos que faz a mensageria de comunicação com a SEFAZ, segue abaixo os métodos:
Configurações
Fluxo de Emissão
Utilitários
Impressão
Arquivo de Integração
Nossa forma de integração é através de um arquivo de texto conhecido como TX2, que é um padrão de comunicação criado pela TecnoSpeed. Esta será a forma de integração para gerar o xml da NFC-e e realizar o envio.
Para mais informações sobre como gerar esse arquivo de integração acesse aqui.
Retorno dos métodos
Por se tratar de uma comunicação de forma assíncrona entre a biblioteca de integração e o nosso componente, precisamos trabalhar com o retorno do tipo CompletableFuture, ou seja, ele faz com que ao ser chamado um método a resposta dele só ocorre após o final do processamento.
Para receber a resposta, precisamos utilizar o ".thenAccept" e tratar o retorno de sucesso. Já quando ocorrer uma situação de erro no método este retorno deve ser tratado com o ".exceptionally". Nos métodos abaixo será possível ver a chamada e esse tratamento de forma mais especifica.
Exemplo
nfce.converterLoteParaXml(tx2, "pl_009g")
.thenAccept(result -> {
Log.d("nfce", "Resultado converter lote para xml: " + result);
})
.exceptionally(error -> {
Log.d("nfce", "Error: " + error.getCause().getMessage());
});
* O método configurarSoftwareHouse ele é utilizado na configuração do componente, por isso o retorno dele é diferente dos outros métodos.
Comentários
0 comentário
Por favor, entre para comentar.