Ir para conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Showing results for tags 'ANDROID'.

  • Search By Tags

    Digite tags separadas por vírgulas
  • Search By Author

Tipo de Conteúdo


Fóruns

  • Fórum Aberto - ACBr
    • Notícias do ACBr
    • Equipamentos testados
    • Base de Conhecimento
    • Dúvidas Gerais sobre o ACBr
    • ACBrSerial
    • ACBrSAT
    • ACBrNFe
    • ACBrDFe
    • Dúvidas sobre TEF
    • Dúvidas sobre PIX
    • ACBrMonitor PLUS
    • ACBrTXT
    • ACBrBoleto
    • ACBrDiversos
    • ACBrTCP
    • ACBrFramework
    • ACBrLIB
  • ACBr API
    • Duvidas Gerais ACBr API
    • Duvidas Privadas ACBr API
  • Suporte Nuvem Fiscal
    • Comunidade Nuvem Fiscal
  • Outros Assuntos
    • Boteco do ACBr
    • Legislação Fiscal e Tributária
    • Object Pascal - Delphi & Lazarus
    • Banco de Dados
    • Classificados
    • Dúvidas não relacionadas ao ACBr

Categorias

  • ACBr Pro
    • ACBrLib - PRO
    • ACBrMonitorPLUS - PRO
    • Utilitários - PRO
    • Dia do ACBr 1a edição
    • Dia do ACBr 2a edição
  • Download Livre
    • ACBrLib - DEMO
    • ACBrMonitorPLUS - DEMO
    • Demos / Testes / Utilitários
    • Apresentações - Palestras
  • ACBr TEF

Calendários

  • Eventos - Palestras - Webinars
  • Prazos SEFAZ
  • Calendário da Comunidade
  • ACBr Papo Pro
  • Feriados Nacionais

Find results in...

Find results that contain...


Data de Criação

  • Início

    End


Data de Atualização

  • Início

    End


Filter by number of...

Data de Registro

  • Início

    End


Grupo


Website URL

  1. Pessoal tenho algumas dúvidas para utilizar as libs dedicadas ao Android, como não existe uma documentação dedicada a explicar meandros da lib no ecossistema, espero sanar importantes dúvidas aqui. 1) As libs existentes para android, são atualizadas no mesmo período das outras libs mais populares? Existe o risco de alguma lib ter colisão de compatibilidade com outra lib? exemplo lib de cep requerer versão minima 26 mas a de nfe requerer 29? 2) há uma documentação detalham as alterações feitas? 3) as libs precisam trabalhar com algum recurso de webview? 4) há a necessidade de libs auxiliares como para geração de qrcode? 5) Quais as versões minima e máxima que o SDK deve suportar? 6) funções assincronas podem ser canceladas? E precisam serem executadas na thread principal? 7) existem configurações necessárias nos gradles de módulo e aplicação, há definições necessários no AndroidManifest.xml? há documentação ampla e dedicada sobre o desenvolvimento android? as chamadas expostas na documentação das libs (a geral) possui padronização na nomenclatura e as tipagens? 9) existem libs incompatíveis? Essas perguntas podem ser determinantes para a viabilidade do desenvolvimento android, me desculpe se foram extensas mas não achei documentação suficiente sobre as dúvidas acima.
  2. Entendendo o projeto Android - Flutter Criamos um programa exemplo que se integra com o m-SiTef que você pode utilizar como base para o seu sistema Android (Flutter). m-SiTef O m-SiTef é um aplicativo desenvolvido pela Fiserv para a plataforma Android e funciona através da comunicação por Intents, ou seja, os dados são passados de uma aplicação (Programa exemplo) para outra (m-SiTef) pela própria Intent, sem a necessidade de um SDK ou outra solução para essa comunicação. Para entender melhor como funciona a comunicação entre aplicativos android por intents: https://medium.com/@ashfaque-khokhar/intent-in-android-00f7be3197c0. Exemplo de dados sendo transmitidos de Intent para outra intent. Intent intent = new Intent (getApplicationContext(), SecondActivity.class); intent.putExtra( "NAME" , "Ashu" ); intent.putExtra( "ID" , 21 ); startActivity(intent); Para se integrar ao m-SiTef devemos passar os dados da forma como estão descritos no guia de integração, que você pode encontrar completo aqui: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Projeto O nosso projeto de integração está no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-flutter Antes de clonar o projeto e rodar, não se esqueça de iniciar o SitDemo e estar com o APK do m-SiTef instalado no terminal Android que fará os testes. Saiba mais sobre estes processos: Para conseguir rodar corretamente o nosso programa exemplo você precisa configurar alguns campos passados ao aplicativo do m-SiTef: Endereço IP do SitDemo CNPJ ou CPF CNPJ da Automação Utilize a tela de configuração da aplicação: Entendendo o projeto O Flutter não possui nativamente no lado Dart uma API interna que replique diretamente o comportamento de "mão dupla" das Intents do Android, como o startActivityForResult seguido pelo onActivityResult. Como o Flutter é projetado para ser multiplataforma, ele não expõe nativamente essas entranhas específicas do sistema operacional; por isso, para capturar o retorno de dados de outro aplicativo, você precisa obrigatoriamente recorrer ao MethodChannel. Ele funciona como uma ponte de comunicação essencial, permitindo que você saia do ambiente Dart para executar o comando de busca de dados no Kotlin ou Java e, assim que o sistema Android processar a resposta, essa informação seja transmitida de volta para a sua interface de forma assíncrona. Para entender melhor como funciona o MethodChannel: https://medium.com/kobe-tech/methodchannel-como-executar-código-nativo-no-flutter-8d02f6bb79a3 Por isso, você deverá necessariamente fazer a ponte entre sua aplicação dart e o código nativo (Java ou Kotlin) para a comunicação com a aplicação do m-SiTef. Do lado Dart a classe importante, que chama o lado Kotlin é: lib/data/msitef/msitef_payment_processor.dart Nela chamamos uma função específica do lado kotlin e aguardamos de forma assíncrona a resposta. Do lado Kotlin é onde ocorre a chamada, que no nosso projeto é feito na MainActivity (Tela principal) onde o motor da UI do Flutter atua. android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/MainActivity.kt É nela que mapeamos os parâmetros passados ao aplicativo do m-SiTef. Fora esta classe, temos: android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/payment/MSitefPaymentUtils.kt Classe utilizada para as funções auxiliares referentes ao mapeamento de parâmetros. android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/payment/MSitefPayment.kt Classe de dados criada a partir do mapping vindo do Dart. android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/payment/MSitefResponse.kt Classe de dados criada a partir da resposta do aplicativo m-SiTef. Menu administrativo O menu administrativo está na tela de configurações e é uma importante funcionalidade que deve ter na sua aplicação para acessar as principais funções como cancelamento, reimpressão, teste de comunicação, etc. O mapeamento dos campos passados para a chamada do menu administrativo fica na tela principal do lado Kotlin: android/app/src/main/kotlin/com/mjtech/fintesthub/flutter/fintesthub_flutter/MainActivity.kt Já a chamada do lado dart e a captura do retorno vindo do lado kotlin é feita na classe: lib/data/msitef/admin/msitef_admin_action.dart Roteiro de pré-homologação Uma etapa importante do processo de desenvolvimento e homologação é o roteiro de pré-homologação. Algumas etapas do roteiro de testes exigem valores exatos como R$25.000 ou R$15,00 e a troca de alguns campos de configurações, foi pensando nestes testes que fizemos este programa exemplo, onde você consegue informar o valor exato na tela de pagamento e modificar os campos de configuração em tempo de execução. Fluxo de pagamento: Esta aplicação já passou pelo roteiro de teste de pré-homologação e você pode utilizar como base para o seu projeto. Em nosso curso -> T.E.F e Meios de Pagamentos, já estão disponíveis as aulas sobre o Pré-Roteiro de Homologação - MSiTef. _________________________________________________________________ Referências - Toda a integração foi guiada pela documentação oficial disponibilizada pela própria Fiserv no link: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Estamos disponíveis para qualquer dúvida ou sugestão.
  3. Entendendo o projeto Android - Kotlin Criamos um programa exemplo que se integra com o m-SiTef que você pode utilizar como base para seu sistema Android (Kotlin ou Java). m-SiTef O m-SiTef é um aplicativo desenvolvido pela Fiserv para a plataforma Android e funciona através da comunicação por Intents, ou seja, os dados são passados de uma aplicação (Programa exemplo) para outra (m-SiTef) pela própria Intent, sem a necessidade de um SDK ou outra solução para essa comunicação. Para entender melhor como funciona a comunicação entre aplicativos android por intents: https://medium.com/@ashfaque-khokhar/intent-in-android-00f7be3197c0. Exemplo de dados sendo transmitidos de Intent para outra intent. Intent intent = new Intent (getApplicationContext(), SecondActivity.class); intent.putExtra( "NAME" , "Ashu" ); intent.putExtra( "ID" , 21 ); startActivity(intent); Para se integrar ao m-SiTef devemos passar os dados da forma como estão descritos no guia de integração, que você pode encontrar completo aqui: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Projeto O nosso projeto de integração está no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-android Antes de clonar o projeto e rodar, não se esqueça de iniciar o SitDemo e estar com o APK do m-SiTef instalado no terminal Android que fará os testes. Saiba mais sobre estes processos: Para conseguir rodar corretamente o nosso programa exemplo você precisa configurar alguns campos passados ao aplicativo do m-SiTef: Endereço IP do SitDemo CNPJ ou CPF CNPJ da Automação Utilize a tela de configuração da aplicação: Entendendo o projeto O core desta integração está na classe fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/payment/MSitefPaymentProcessor.kt Nesta classe é feito o mapeamento de todos os campos necessários para fazer os pagamentos na função Débito, Crédito (Á vista e parcelado), Pix e Voucher. Outra classe importante é a fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/payment/MSitefPaymentActivity.kt. Esta classe é responsável por abrir o APP do m-SiTef e receber e mapear o resultado retornado pelo m-SiTef acionando o callback conforme o retorno recebido. Menu administrativo O menu administrativo está na tela de configurações e é uma importante funcionalidade que deve ter na sua aplicação para acessar as principais funções como cancelamento, reimpressão, teste de comunicação, etc. O core do mapeamento dos parâmetros referente ao menu administrativo está nesta classe: fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/settings/MSitefAdminHandler.kt Já a classe fiserv/msitef/src/main/java/com/mjtech/fiserv/msitef/settings/MSitefAdminActivity.kt é responsável por chamar o aplicativo do m-SiTef passando os parâmetros necessários e responsável por capturar o retorno. Roteiro de pré-homologação Uma etapa importante do processo de desenvolvimento e homologação é o roteiro de pré-homologação. Algumas etapas do roteiro de testes exigem valores exatos como R$25.000 ou R$15,00 e a troca de alguns campos de configurações, foi pensando nestes testes que fizemos este programa exemplo, onde você consegue informar o valor exato na tela de pagamento e modificar os campos de configuração em tempo de execução. Fluxo de pagamento: Esta aplicação já passou pelo roteiro de teste de pré-homologação e você pode utilizar como base para o seu projeto. Em nosso curso -> T.E.F e Meios de Pagamentos, já estão disponíveis as aulas sobre o Pré-Roteiro de Homologação - MSiTef. _________________________________________________________________ Referências - Toda a integração foi guiada pela documentação oficial disponibilizada pela própria Fiserv no link: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Estamos disponíveis para qualquer dúvida ou sugestão.
  4. Olá comunidade Gostaria de compartilhar com todos vocês um guia de integração com o m-SiTef da Fiserv no Android. Sobre o ACBr O ACBr é Distribuidor dos produtos e serviços da FISERV Temos condições exclusivas para a comunidade do ACBr, Somos autoridade em TEF. Confira o nosso curso completo, sobre TEF e Meios de Pagamentos Tenha acesso ao nosso Suporte, Demos e Cursos, inscrevendo-se na página: https://projetoacbr.com.br/tef/ Sobre a FISERV A Fiserv é uma líder global em tecnologia para serviços financeiros e pagamentos, presente em mais de 100 países e com mais de 40 anos de atuação. O SiTef (Sistema Inteligente de Transferência Eletrônica de Fundos) é uma solução TEF desenvolvida pela Fiserv para integrar pagamentos eletrônicos diretamente aos sistemas de automação comercial (PDV, ERP, e-commerce). Ele é considerado líder no mercado brasileiro e movimenta bilhões de transações por ano. Sendo o mais aceito, e compatível dos TEFs do mercado Brasileiro O que é o m-SiTef? O m-SiTef é um aplicativo desenvolvido pela Fiserv para a plataforma Android, tanto em celular ou tablet como em POS, que realiza transações (TEF) através do servidor SiTef. https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Requisitos Mínimos O m-SiTef é compatível com Android versão 4.4ou superior. Características Gerais do m-SiTef Antes de apresentar as formas de integração, descreveremos neste capítulo as características gerais do m-SiTef. Ele disponibiliza para o integrador as mesmas funcionalidades da CliSiTef, descritas no documento "SiTef - Interface Simplificada com a aplicação", na Tabela de códigos de funções. Para executar as funções, é obrigatório enviar 4 parâmetros ao m-SiTef: empresaSitef, enderecoSitef, modalidade e CNPJ_CPF. Para a modalidade 0, também é obrigatório o parâmetro valor. data class MSitefConfig( val empresaSitef: String, val enderecoSitef: String, val modalidade: String, val cnpjCpf: String, val valor: String? = null // obrigatório para modalidade 0 ) { fun toIntent(): Intent { return Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", empresaSitef) putExtra("enderecoSitef", enderecoSitef) putExtra("modalidade", modalidade) putExtra("CNPJ_CPF", cnpjCpf) valor?.let { putExtra("valor", it) } } } } Importante: Todos os parâmetros apresentados neste documento em trechos de código são apenas ilustrativos e devem ser substituídos por valores válidos. A seguir, estão listados todos os parâmetros aceitos na aplicação. Tabela 1 - Parâmetros de entrada do m-SiTef Parâmetro Tipo Descrição empresaSitef Obrigatório Empresa SiTef. Tamanho de 8 dígitos alfanuméricos. enderecoSitef Obrigatório Endereço dos servidores do SiTef. Pode conter 1 a 3 endereços separados por ;. Formato: IP, IP:PORTA ou NOME:PORTA. Porta padrão: 4096. Não informar URL. terminalSitef Opcional Número de terminal SiTef. Se não informado, o m-SiTef usará o número de série do APOS ou o UUID do aparelho Android. modalidade Obrigatório Funcionalidade da CliSiTef. Ex: 0 = Pagamento, 200 = Cancelamento, 114 = Reimpressão. CNPJ_CPF Obrigatório CNPJ ou CPF do estabelecimento, sem caracteres especiais. valor Obrigatório p/ pagamento Valor da venda. Numérico até 12 dígitos, sendo os 2 últimos decimais. operador Opcional Código do operador. Alfanumérico até 20 caracteres. Data Obrigatório Data fiscal no formato AAAAMMDD. Hora Obrigatório Hora fiscal no formato HHMMSS. numeroCupom Obrigatório Número do cupom fiscal. Alfanumérico até 20 caracteres. numParcelas Opcional Número de parcelas em caso de compra parcelada. restricoes Opcional Opções de pagamento que não aparecerão no fluxo. Formato: <Opção>;<Opção>;... transacoesHabilitadas Opcional Opções de pagamento que serão habilitadas. Formato: {<Func1>;<Func2>;...} comExterna Obrigatório Define qual serviço TLS será usado: 0 = Sem TLS, 1 = TLS Software Express, 2 = TLS WNB Comnect, 3 = TLS Gsurf, 4 = TLS GWP (Fiserv). isDoubleValidation Obrigatório p/ TLS SE 0 = validação simples, 1 = validação dupla. cnpj_automacao Obrigatório CNPJ da empresa que desenvolveu a automação comercial. cnpj_facilitador Obrigatório CNPJ do Facilitador (Van). timeoutColeta Opcional Tempo de timeout em segundos para coletas. Padrão: 60s. Valor 0 ou negativo desativa o timeout. pinpadMac Opcional MAC Address Bluetooth do Pinpad. Formato: 00:00:00:00:00:00. tipoPinpad Obrigatório p/ USB ANDROID_USB = pinpad USB. ANDROID_BT = pinpad Bluetooth. acessibilidadeVisual Opcional 0 = desabilitado (padrão), 1 = habilitado. Ativa fontes maiores, alto contraste e text-to-speech. otp Opcional Código obrigatório quando utilizada comunicação com TLS GSurf. dadosSubAdqui Opcional Informações complementares para personalizar o que será impresso na fatura do comprador. tipoCampos Opcional Permite informar valores pré-determinados para campos solicitados pela CliSiTef. Formato JSON: {"campo1":"val1", "campo2":"val2"}. clsit Opcional Para adicionar, atualizar ou remover campos do arquivo de configuração CLSIT. Público-Alvo Parceiros que desenvolvam para Android, e desejam se integrar com o SiTef via m-SiTef, usando Intents. Como iniciar? Possuímos programa exemplo para Android Nativo (Kotlin) e Flutter de onde partiremos para explicarmos o passo a passo de como integrar o m-SiTef em seu projeto/solução. Etapas Para que você consiga testar em nossos programas exemplos siga as etapas abaixo primeiramente. Integração O primeiro passo é instanciar um objeto Intent passando o nome da aplicação como argumento: br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF. Através dessa informação, o Android buscará automaticamente o m-SiTef entre os aplicativos instalados no dispositivo. Em seguida, devem ser configurados os parâmetros obrigatórios através da função putExtra(String, String). Por fim, é executada a função startActivityForResult(Intent, int) passando o objeto Intent e um número inteiro arbitrário como ID (neste documento usaremos 1234). Menu Administrativo: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "110") putExtra("CNPJ_CPF", "12345678912345") } startActivityForResult(intent, 1234) Exemplo Pagamento: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("modalidade", "0") putExtra("valor", "9000") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Pagamento Débito à vista: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("modalidade", "2") putExtra("valor", "9000") putExtra("restricoes", "TransacoesHabilitadas=16") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Pagamento Crédito à vista: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("numParcelas", "1") putExtra("modalidade", "3") putExtra("valor", "9000") putExtra("restricoes", "TransacoesHabilitadas=26") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Pagamento Crédito parcelado: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("operador", "0001") putExtra("data", "20140312") putExtra("hora", "150000") putExtra("numeroCupom", "1") putExtra("numParcelas", "3") putExtra("modalidade", "3") putExtra("valor", "9000") putExtra("restricoes", "TransacoesHabilitadas=27") putExtra("CNPJ_CPF", "12345678912345") putExtra("timeoutColeta", "30") putExtra("comExterna", "0") } startActivityForResult(intent, 1234) Exemplo Transação PIX: Opção 1 - Pelo menu carteiras digitais (Modalidade 0) val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "0") putExtra("CNPJ_CPF", "12345678912345") putExtra("cnpj_automacao", "12345678912345") putExtra("transacoesHabilitadas", "7;8;") } startActivityForResult(intent, 1234) Opção 2 - Chamando PIX diretamente (Modalidade 122) val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "122") putExtra("CNPJ_CPF", "12345678912345") putExtra("cnpj_automacao", "12345678912345") putExtra("transacoesHabilitadas", "7;8;") putExtra("restricoes", "CarteirasDigitaisHabilitadas=027160110024") } startActivityForResult(intent, 1234) Exemplo Cancelamento: val intent = Intent("br.com.softwareexpress.sitef.msitef.ACTIVITY_CLISITEF").apply { putExtra("empresaSitef", "00000001") putExtra("enderecoSitef", "127.0.0.1") putExtra("modalidade", "200") putExtra("CNPJ_CPF", "12345678912345") } startActivityForResult(intent, 1234) O campo cnpj_automacao é de extrema importância — é através dele que a Fiserv reconhece o estabelecimento para o repasse financeiro. Retorno do m-SiTef Após a execução, o m-SiTef retorna ao app que o acionou através do método onActivityResult. O resultCode indica o status: RESULT_OK (-1) = sucesso ou RESULT_CANCELED (0) = cancelado. Tabela 2 - Parâmetros de saída do m-SiTef Parâmetro Descrição CODRESP Código de resposta da transação. COMP_DADOS_CONF Dados para confirmação da transação na CliSiTef. CODTRANS Código da transação: 00 = Cheque, 01 = Débito, 02 = Crédito. TIPO_PARC 00 = À vista, 01 = Pré-Datado, 02 = Parc. Estabelecimento, 03 = Parc. Administradora. REDE_AUT Rede autorizadora da transação. BANDEIRA Bandeira do cartão utilizado. NSU_SITEF NSU do servidor SiTef. NSU_HOST NSU do Host Autorizador. COD_AUTORIZACAO Código de autorização (somente crédito). NUM_PARC Quantidade de parcelas. Ausente ou 0/1 = à vista. VIA_ESTABELECIMENTO Cupom da via do estabelecimento. VIA_CLIENTE Cupom da via do cliente. VLTROCO Valor aprovado para troco (quando aplicável). TIPO_CAMPOS JsonObject com todos os campos da transação CliSiTef. Tabela 3 - Valores do CODRESP CODRESP Descrição 0 Sucesso. 1 Endereço IP inválido ou não resolvido. 2 Código da loja inválido. 3 Código de terminal inválido. 6 Erro na inicialização do Tcp/Ip. 7 Falta de memória. 8 CliSiTef não encontrada ou com problemas. 9 Configuração de servidores SiTef excedida. 10 Erro de acesso na pasta CliSiTef. 11 Dados inválidos passados pela automação. 12 Modo seguro não ativo. Outro positivo Negada pelo autorizador. -1 Módulo não inicializado. -2 Operação cancelada pelo operador. -3 Modalidade inexistente ou inválida. -4 Falta de memória no PDV. -5 Sem comunicação com o SiTef. -6 Operação cancelada pelo usuário no pinpad. -10 Parâmetro obrigatório não informado. -15 Operação cancelada pela automação comercial. -20 Parâmetro inválido. -40 Transação negada pelo servidor SiTef. -41 Dados inválidos. -43 Problema na execução de rotina no pinpad. -50 Transação não segura. -100 Erro interno do módulo. Outro negativo Erros detectados internamente. Exemplo de tratamento do retorno: override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == 1234) { if (resultCode == RESULT_OK) { println("CODRESP: " + data?.extras?.getString("CODRESP")) println("COMP_DADOS_CONF: " + data?.extras?.getString("COMP_DADOS_CONF")) println("CODTRANS: " + data?.extras?.getString("CODTRANS")) println("TIPO_PARC: " + data?.extras?.getString("TIPO_PARC")) println("REDE_AUT: " + data?.extras?.getString("REDE_AUT")) println("BANDEIRA: " + data?.extras?.getString("BANDEIRA")) println("NSU_SITEF: " + data?.extras?.getString("NSU_SITEF")) println("NSU_HOST: " + data?.extras?.getString("NSU_HOST")) println("COD_AUTORIZACAO: " + data?.extras?.getString("COD_AUTORIZACAO")) println("NUM_PARC: " + data?.extras?.getString("NUM_PARC")) println("VIA_ESTABELECIMENTO: " + data?.extras?.getString("VIA_ESTABELECIMENTO")) println("VIA_CLIENTE: " + data?.extras?.getString("VIA_CLIENTE")) } } } 🛜 Ambiente Para realizar as transações no m-SiTef você necessita de um endereço SiTef que pode ser emulado em sua máquina via SitDemo e o próprio m-SiTef instalado no terminal Android. Será necessário instalar o Emulador de SiTef em sua máquina, o SitDemo Se você já preencheu o formulário em https://projetoacbr.com.br/tef/ nossa equipe já lhe respondeu com um e-mail, com as instruções de como Baixar o SitDemo Acompanhe o processo de instalação do SitDemo, através desse vídeo abaixo: Após a instalação estar concluída, abra o SitDemo. APK do m-SiTef O APK do m-SiTef também será enviado a você pela equipe do ACBr, após o início da Parceria. É importante você nos informar, em qual dispositivo irá instalar o APK. Exemplos: Sumni P2 GPOS700 PAX A920 Newland N910 Ingenico DX8000 PDV D2 Mini com PinPad USB Os dispositivos do tipo SmartPOS, ou seja, com leitura de Cartão/Chip integrado, possuem segurança PCI. E isso requer que os aplicativos (APKs) sejam assinados com chaves específicas para poderem ser instalados nesses terminais. Por isso, existe uma versão específica de m-Sitef, para cada dispositivo SmartPOS Com o APK em mãos você deve instalar no terminal que irá fazer os testes... Projeto Atualmente possuímos exemplos de integração com o m-SiTef para Android Nativo com Kotlin e Flutter. Android (Kotlin) Clone o programa exemplo disponível no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-android Após clonar o projeto em sua máquina, abra o na sua IDE (Android Studio, VS Code, etc.). Entendendo a integração: Flutter Clone o programa exemplo disponível no nosso GitHub: https://github.com/Projeto-ACBr-Oficial/acbr-sitef-flutter Após clonar o projeto em sua máquina, abra o na sua IDE (Android Studio, VS Code, etc.). Entendendo a integração: Rodar o projeto Após essas etapas e configurações você consegue rodar nosso programa exemplo integrando com o m-SiTef em um terminal Android. Roteiro Pré-Homologação m-SiTef Em nosso curso -> T.E.F e Meios de Pagamentos, já estão disponíveis as aulas sobre o Pré-Roteiro de Homologação - MSiTef. Referências - Toda a integração foi guiada pela documentação oficial disponibilizada pela própria Fiserv no link: https://dev.softwareexpress.com.br/docs/m-sitef/m-SiTef/ Estamos disponíveis para qualquer dúvida ou sugestão.
  5. Projeto ACBr e compatibilização do Android 15+ Projeto ACBr está atualizando as bibliotecas Android para compatibilizar com alinhamento de páginas de 16 kB nos Android 64 bits. A Google determinou que a partir de 01/11/2025, todos os novos aplicativos (e atualizações) destinados ao Android 15 +(Google Play) devem ser recompilados com essa configuração. Por isso o Projeto ACBr recompilou a LibXML2 e OpenSSL para atender essa determinação. Nossas bibliotecas nativas e AAR também foram ajustados. A partir de 14/10/2025, todos os AAR e ACBrLib Android ARM64 serão compiladas com alinhamento de 16 KB por padrão. O que você precisa fazer para se adequar ? ACBrLib Android Recomendações gerais Se você usa bibliotecas nativas de terceiros, é importante verificar se elas estão alinhadas corretamente. Se você compila bibliotecas, terá que recompilar com o alinhamento de 16 KB Android Nativo (Java e Kotlin) Atualizar o plugin AGP (Android Gradle Plugin) para versão>= 8.6 (Mínimo recomendado é 8.5.1, mas usamos a versão 8.6.0) Se usa uma de nossas bibliotecas (AAR) deve atualizar o JNA para versão >= 5.17 SDK Mínimo : Android API 24 (Android 7.0) //build.gradle do módulo app implementation net.java.dev.jna:jna:5.17.0@aar //configuração do build.gradle.kts implementation("net.java.dev.jna:jna:5.17.0@aar") Recomendamos a remoção das seguintes linhas no build.gradle: android { ... packagingOptions { jniLibs { useLegacyPackaging true } } } React Native React Native, a versão mínima com suporte a 16 KB é 0.77 Aplicam-se as mesmas configurações que o Android Nativo Flutter Flutter oferece suporte a partir da versão 3.27 https://docs.flutter.dev/release/release-notes/release-notes-3.27.0 Aplicam-se as mesmas configurações que o Android Nativo Componentes ACBr (Delphi FMX) A Libxml2 foi recompilada com alinhamento de 16 KB Já a OpenSSL compilamos a versão 1.1.1w, https://svn.code.sf.net/p/acbr/code/trunk2/DLLs/Android/OpenSSL/openssl-1.1.1w/aarch64-linux-android/Dynamic/ Componentes que usam a OpenSSL, devem usar essa versão, exemplo: ACBrCEP, ACBrConsultaCNPJ, ACBrNFe, entre outros ... Delphi 12.3 já oferece suporte a alinhamento de páginas de 16 KB Referências https://docs.flutter.dev/release/release-notes/release-notes-3.27.0 https://android-developers.googleblog.com/2025/05/prepare-play-apps-for-devices-with-16kb-page-size.html https://developer.android.com/guide/practices/page-sizes?hl=pt-br#alignment-use-tools
  6. Adicionado Impressão via Intent da Cielo LIO e Stone. Alterado AJBarcode para geração no FMX. ACBrBase.pas AJBarcode.pas ACBrPosPrinterCielo.pas ACBrPosPrinterStone.pas
  7. Olá, pessoal! Acabamos de disponibilizar no SVN o novo AAR do ACBrConsultaCNPJ, que traz todas as funcionalidades do componente diretamente para bibliotecas Android. Informações Técnicas: API Mínima: 24 Fonte: https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Android/ConsultaCNPJ/ Download: Versão PRO Versão DEMO
  8. Olá, pessoal! Acabamos de disponibilizar no SVN o novo AAR do ACBrCEP, que traz todas as funcionalidades do componente diretamente para bibliotecas Android. Informações Técnicas: API Mínima: 24 Fonte: https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Android/CEP/ Download: Versão PRO Versão DEMO
  9. Olá, pessoal. Foi disponibilizado no SVN o novo AAR do ACBrBAL. Esta versão inicial já permite realizar a comunicação com balanças utilizando cabo serial. Próximos Passos: Comunicação via Bluetooth (em desenvolvimento). Informações Técnicas: API Mínima: 24 Fonte: https://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Android/BAL/ Download: Versão PRO Versão DEMO
  10. como setar o tamanho da imagem a ser impressa pel ocomponente TACBrSunmiPrinter? Quero deixar a imagem ser impressa na largura do papel. Hoje ela é impressa menor.
  11. Boa tarde pessoal. Estou iniciando nessa parte de TEF e aqui na empresa estamos fazendo uma aplicação android nativo usando o sitef. Meu problema esta logo no inicio da coisa... Recebi todos os dados e libs do fornecedor da sitef, junto com os arquivos vieram também 2 aplicações de teste para android, antes de testar uma implementação própria tentei rodar a aplicação de teste fornecida, que apresentou o seguinte erro: 08-21 19:02:19.756 6174-6174/br.com.softwareexpress.sitef.example.v2 W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa4ce4b20) 08-21 19:02:19.756 6174-6174/br.com.softwareexpress.sitef.example.v2 E/AndroidRuntime: FATAL EXCEPTION: main Process: br.com.softwareexpress.sitef.example.v2, PID: 6174 java.lang.UnsatisfiedLinkError: Couldn't load clisitef from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/br.com.softwareexpress.sitef.example.v2-1.apk"],nativeLibraryDirectories=[/data/app-lib/br.com.softwareexpress.sitef.example.v2-1, /vendor/lib, /system/lib]]]: findLibrary returned null at java.lang.Runtime.loadLibrary(Runtime.java:358) at java.lang.System.loadLibrary(System.java:526) at br.com.softwareexpress.sitef.JCliSiTefI.<clinit>(JCliSiTefI.java:148) at br.com.softwareexpress.sitef.android.CliSiTefI.<init>(CliSiTefI.java:678) at br.com.softwareexpress.sitef.android.CliSiTef.<init>(CliSiTef.java:265) at br.com.softwareexpress.sitef.example.v2.MainActivity.onCreate(MainActivity.java:49) at android.app.Activity.performCreate(Activity.java:5231) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) at android.app.ActivityThread.access$800(ActivityThread.java:135) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) ou seja não esta encontrando a lib do sistef, que esta aqui bonito na pasta libs estou importando a pasta libs e tentai importar a lib especifica, coloquei o jndi tambem, não sei mais o q fazer, alguém já passou por isso pode me ajudar? Obs, estou usando o emulador do android Studio, um nexus 4 na API 19.
  12. Boa tarde pessoal, Estou com um problema no momento do processo iterativo (método continuaFuncaoSiTefInterativo). Ao rodar esse método na minha aplicação Android tenho o seguinte erro: "Sem conexao Servidor", porém o SitDemo está de pé e rodando localmente na porta 4096. No método configuraIntSiTefInterativoEx estou passando os seguintes dados: e meu log retorna isso:
  13. Olá, instalei o delphi 10.4.2 e fui rodar o meu projeto que funciona normalmente no 10.2 e 10.3 onde ocorreu o seguinte erro: O que pode ser? Estou usando datasnap.
  14. Como alguns já devem saber, estamos fazendo um imenso trabalho nos fontes do ACBr, para compatibilizar o mesmo com os compiladores Delphi para Linux (POSIX), e Android (NEXTGEN). Essas plataformas, utilizam o Framework, FMX ou FireMonkey. Estou muito impressionado com a facilidade e capacidade do Delphi Rio, em gerar aplicações, Ricas, bonitas e rápidas, para Android... e creio que a FMX, será o futuro do Delphi. A compatibilização com esses novos compiladores, não foi algo trivial, pois infelizmente, eles introduziram grandes modificações na base do Object Pascal. Leia esse artigo, para saber mais sobre essas diferenças... Ok... legal... quero iniciar minhas aplicações em Android com o ACBr... o que devo fazer ? 1 - Informar que o seu projeto está usando FMX Para que o ACBr possa suportar compilação em VCL, FMX, LCL (Lazarus), Windows, Linux, Android... o código do ACBr, recebeu várias modificações com diretivas de compilação (IFDEFs) Para que essas diretivas sejam utilizadas, precisamos sinalizar para o ACBr, que o Projeto em questão, usa a FMX. Isso pode ser feito de duas maneiras: 1.1 - Inserindo uma Diretiva nas opções do Projeto (recomendado) Abra as opções do Projeto, Project -> Options (Shit-Ctrl-F11) Selecione: Building -> Delphi Compiler Em Target selecione All Configurations - All Plataforms Em Conditional Defines, escreva: FMX 1.2 - A segunda forma é modificar o ACBr.inc, ativando a diretiva FMX.. Porém use essa opção com cuidado, pois ela afetará todos os seus projetos, e você terá que comentar a linha novamente, quando for compilar um projeto VCL // Para usar FMX (Firemonkey) Windows / Delphi descomente essa linha {$DEFINE FMX} 2 - Informe o "Unit Scope Names" As novas versões do Delphi, usam notações com Pontos nas Units, como por exemplo: "System.SysUtils" ao invés de apenas "SysUtils". Para que o código fonte do ACBr, permaneça compatível com Delphi 7, não podemos modificar essa nomenclatura... Informar o Unit Scope Names, instruirá o compilador, a onde encontrar as Units com os novos nomes, mesmo usando a nomenclatura antiga... Vá em: Project -> Options -> Building -> Delphi Compiler (mesma tela do passo anterior) e informe os Unit Scopes necessários... exemplo: "System;Xml;Data;Datasnap;Web;Soap" 3 - Certifique-se que o Compilador conhece os Paths dos fontes Projeto ACBr Atualmente, o instalador do ACBr, adiciona automaticamente todos os diretórios dos Fontes do Projeto ACBr, em sua váriável Global, de LibPath dos Compiladores de Win32 e Win64... isso economiza um grande trabalho... Porém o instalador ainda não faz o mesmo, para os compiladores Linux e Android... então precisamos fazer isso manualmente... A maneira mais simples, é copiar os Paths do Compilador Win32 para o Android e Linux... Veja o passo a passo: 3.1 - Acesse: Tools -> Options -> Language -> Delphi -> Library Observe que a primeira Linha mostra o Library Path para Windos 32 bits... Marque toda a Linha e copie: 3.2 - Agora cole o conteúdo em um Editor (NotePad++), e modifique o texto isolando todos os diretórios do ACBr, Fortes Report, e outros que achar interessante... 3.3 - Mude a Plataforma selecionada, no combo box acima, para Android 32 3.4 - Vá ao final da Linha, e Cole o conteúdo, com os diretórios do ACBr (lembre-se de separar os diretórios com ; ) 3.5 - Repita o mesmo para Android 64 e Linux 64 4 - Solicite as permissões que o seu projeto precisará no Android A tela abaixo, é do Demo do ACBrMail para Android, que já disponível no SVN em: "\ACBr\Exemplos\ACBrTCP\ACBrMail\Android" Observe que marcamos a opção para ter acesso a internet, pois isso é necessário nessa aplicação De acordo com as novas políticas de segurança do Android, também será necessário, requisitar essas permissões em tempo de execução... Você pode ver como isso é feito, nos fontes do Demo do ACBrMail. Use a força, leia os fontes, e procure pelo método: function TACBrMailTestForm.PedirPermissoes: Boolean; 5 - Modifique o Deployment, para inserir as bibliotecas necessárias Vá em: Project -> Deployment, e adicione as Bibliotecas do OpenSSL, e substitua as Imagens que achar necessário Veja por exemplo, a tela do Deployment do Demo do ACBrMail Nota sobre as dependências externas do ACBr: OpenSSL e LibXML2 Após algum esforço, conseguimos compilar as bibliotecas do OpenSSL e a LibXML2, para Android em 32 e 64 Bits... e o binário delas já se encontram no SVN, na pasta: \ACBr\DLLs\Android\ Use as versões dinâmicas das bibliotecas, ou seja, os arquivos com extensão .SO Para 32 Bits use a biblioteca com prefixo "ARM" Para 64 Bits use e "AARCH64" Configure o "Remote Path", para ".\assets\internal\", pois é nesse local, que os fontes do ACBr, tentará encontrar as bibliotecas IMPORTANTE: Os arquivos da pasta remota: .\assets\internal\ poderão ser acessados de dentro da aplicação com: TPath.GetDocumentsPath (que na será traduzido para "$(ApplicationPath)\file") Porém, quem faz a copia dos arquivos da pasta de $(APK)\assets\internal\, para a pasta $(ApplicationPath)\file é a Unit System.StartUpCopy, que por padrão, é adicionada no inicio de Todo novo projeto FMX. Exemplo: program Project1; uses System.StartUpCopy, // <-- Olha ela aqui FMX.Forms, Se essa Unit não for adicionada, os arquivos que estão na pasta "assets\internal" do APK, não serão copiados para a pasta "files" de sua aplicação, após a mesma ser iniciada... e como consequencia, você não consegirá acessá-los.. A correção é bem simples.. basta adicionar a System.StartUpCopy, conforme demonstrado acima... Leia também:
  15. Boa tarde, estou com um problema usando o ACBr para android, estou criando um serviço remoto pelo delphi ACBr, sem o ACBrBase no projeto o service funciona, porém ao adicionar o ACBrBase ele não funciona ele da um erro de null pointer ao rodar o ACBr sem utilizar o service ele funciona normalmente pelo Firemonkey, porém gostaria apenas de um service ACBr em delphi e não uma aplicação inteira, alguem já passou por isso e sabe como usar o ACBr junto com services?? para utilizar o service estamos usando os arquivos (.so) gerados pelo delphi como bibliotecas nativas do android segui este tuto, porém foi possível solucionar o problema
  16. Gostaria de algumas dicas de como programar no Lazarus, e gerar apps (se possível) para Android e IOS sem reescrever o código, como no Delphi. Agradeço a todos.
  17. Boa tarde pessoal, não tenho certeza se estou postando no local adequado por ser a primeira vez que utilizo o fórum mas vamos lá. Surgiu um projeto em que preciso desenvolver um aplicativo para android, que entre suas funções permitirá o usuário efetuar a leitura via QR Code de uma nfce (estado: Goiás) e armazenar dados desta tais como: o nome/descrição dos itens da nota e o valor de cada um em uma base de dados, posteriormente esses dados poderão ser consultados através de pesquisa simples no app. Em anexo um exemplo que mostra a consulta com a chave no site da SEFAZ do estado de Goiás, marquei em vermelho os itens que eu preciso extrair. Eles estão dispostos no site em uma tabela com guias. Alguém já trabalhou com nfce para me dar um norte? Como é possível efetuar essa extração para a minha base de dados? Qualquer ajuda é bem vinda. Atenciosamente
  18. Boa tarde amigos, Estou passando aqui para convidar à todos para conhecer e acompanhar o projeto REST Dataware. O Rest Dataware é uma suíte de componentes que abstrai a complexidade para acesso à dados remotos em uma aplicação construída utilizando a arquitetura multicamadas. Totalmente free e de código fonte aberto, assim como o ACBr. O REST Dataware é mais uma iniciativa que visa fortalecer a comunidade Delphi, reduzindo o tempo de desenvolvimento e permitindo que o desenvolvedor foque naquilo que é importante: as regras de negócio da aplicação. Link para o Skype: https://join.skype.com/tpAo84MDZXP5
  19. Precisa criar rapidamente seus aplicativos? Precisa integrar suas soluções já existentes com o mundo mobile? Use React Native! Elaborei um curso que ensina passo-a-passo o processo de desenvolvimento de apps usando esse fantástico framework do Facebook. Em um só ambiente você desenvolve para Android e iOS. E mais! Basicamente tudo é feito com JavaScript e CSS. Curva de aprendizado muito curta. Produtividade imediata. Agilidade no desenvolvimento. Apps nativos de alta qualidade. Conheça o curso: academiaandroid.com.br
  20. Bom dia, Amigos, estou tentando debugar uma aplicação Mobile Android no XE.10.1 Berlin mais não entra, instala direto sem permitir o debug, preciso encontrar alguns erros, no XE5 era de boa, bastava marcar os breakpoint e F8. Alguém sabe de alguma configuração extra?
  21. Preciso de alguém que possa desenvolver conexão com uma impressora bloetooth, e enviar impressão para a mesma... interessados enviar e-mail para [email protected]
  22. Olá, gostaria de saber o preço para vcs desenvolverem um afinador de instrumentos para android (usando android studio de preferencia), pode ser algum open source se for o caso, mas que funcione legal. email: [email protected] obrigado.
  23. - Prestação de serviço em soluções: NFC-e modo centralizado ou distribuído com DANFE/Cancelado/Contingência automática/Consulta SEFAZ, TEF (D-TEF), SPED Fiscal ICMS com Bloco K, integração de dados e customizações de sistemas com Oracle, SQL Server, Firebird e MySQL; - WebService para transferência entre filiais; - Comanda Eletrônica Android/iOS (Restaurante/Bar/Delivery). Sérgio M. Fernandes (21) 98297-1754 (TIM) skype: smarcos.fernandes e-mail: [email protected]
  24. A ERPGeek criou 2 aplicativos para que todos os usuários que precisam ter um acompanhamento/monitoramento constante dos servidores da SEFAZ(NF-e, CT-e e MDF-e) possam realizar as ações a qualquer hora e em qualquer lugar, sem a necessidade de possuir certificado. Mais informações em: http://files.erpgeek.com.br/200000024-75422763f5/ERPGeek%20SEFAZ%20Solutions.ppt http://www.erpgeek.com.br ERPGeek SEFAZ Solutions.ppt
  25. Olá, somos software house no PR, temos solução de software pra diversas áreas, temos a parte fiscal (NFe, CT-e, NFC-e, Sintegra, SPED e etc) , contábil (balanços, DRE e etc), venda, condicional, orçamento, ordem de serviço, controle de produção, boletos e outros mais. Atendemos varejo, distribuição e indústria. Temos equipe de suporte específica pro revendedor. Pagamos 50% do valor das mensalidades recebidas e 100% do valor da implantação. Temos especial interesse na região norte e nordeste, porém estamos abertos a parcerias em qualquer região do país. Interessados: skype: comercias.softpar e-mail: [email protected] contato: 46 3532 1119 ou 46 9974 8888 com o Sr. Lucas Nicolini
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.