matheusferreira Postado 19 Fevereiro Postado 19 Fevereiro 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. 2
Recommended Posts