Skip to content

Tap2Pix NFC Card Emulation Service é um serviço Android que utiliza Host-based Card Emulation (HCE) para emular um cartão NFC e transmitir mensagens NDEF, como texto ou URLs, para leitores NFC. Ideal para aplicações que precisam simular cartões NFC e responder a comandos APDU.

License

Notifications You must be signed in to change notification settings

estige/tap2pix_hce

Repository files navigation



GitHub tag (latest SemVer) status-badge License GitHub issues

Tap2Pix ❤️ Super App Wallet 100% Tupiniquim for IOS & Android


[ Tap2Pix NFC Card Emulation Service ]

Este projeto Android implementa um serviço de emulação de cartão NFC (Host-based Card Emulation, HCE), que permite ao dispositivo simular um cartão NFC e responder a comandos APDU (Application Protocol Data Units). A aplicação emula um cartão NDEF, permitindo a interação com leitores NFC compatíveis. O principal uso é fornecer informações como mensagens de texto ou URLs via NFC.

Prints do Tap2Pix

Links dos apps Tap2Pix



Important

Somente o Android possui a funcionadade para a transmição do NFC! Sendo assim, os Vendedores precisarão sempre ser Android. Já o Comprador, pode ser qualquer plataforma (Android ou IOS)


Note

Para a realização do teste, faça o download em um Android do Tap2Pix, coloque o valor a ser cobrado e aproxime de qualquer IPhone ou Android.

Note

Nesse momento para os testes, somente temos listado 3 bancos, são eles: Itaú Unibanco, Mercado Pago e Bradesco.

Note

O modelo atual para o pagamento com aproximação é com a Jornada COM Redirecionamento. Porém nosso app está preparado para ser um ITP e rodar o JSR quando disponível pelo Banco Central do Brasil e Open Finance Brasil.



A proposta da Tap2Pix.org

A proposta da Tap2Pix.org destaca-se como um Super App Wallet soberano, 100% tupiniquim, disponível em multiplataformas (iOS e Android - IPhone, Google e Samsung)

Que permite a iniciação automática dos pagamentos pela aproximação do celular via NFC ou através da leitura de QR Code.

Além disso, é o único que oferece ambas as jornadas de pagamento, com e sem redirecionamento. Permitindo uma gradual adaptação dos usuários.

O mais impressionante é que tudo isso é conduzido sob a governança e total controle dos associados no consórcio!

NfcFCardEmulation

NfcFCardEmulation é um serviço Android que utiliza a tecnologia Host-based Card Emulation (HCE) para emular um cartão NFC e transmitir mensagens NDEF, como textos ou URLs, para leitores NFC. Ele é ideal para aplicações que precisam simular cartões NFC e responder a comandos APDU.

Veja mais em: https://developer.android.com/reference/android/nfc/cardemulation/NfcFCardEmulation

Important

Nenhum dos participantes do Tap2Pix precisará se preocupar com o desenvolvimento dos aplicativos instantâneos para integração com o Tap2Pix. Toda a jornada e adaptação necessária já foi realizada pela equipe do Tap2Pix.

Padrão do Banco Central para o Pix por Aproximação

O Banco Central do Brasil, por meio do Grupo de Trabalho de Padronização e Requisitos Técnicos, propôs uma padronização para pagamentos com PIX por Aproximação + APP Iniciador de Pagamentos no contexto do Open Finance, utilizando a Jornada Sem Redirecionamento (JSR).

Especificações do Formato

O fluxo proposto consiste no envio, por meio do comando APDU, de uma URI padronizada por terminais de pagamento (maquininhas, smartphones ou pin pads), seguindo o seguinte formato:

pix://<hostname>?qr=<uri-encoded-emv-qr-string>&sig=<signature>

Warning

O DEEPLINK NÃO É UTILIZADO PELO TAP2PIX!

  • “pix://”: 🟥 Permite o uso do deeplink, que oferece uma camada de segurança fraca. Contudo, qualquer aplicativo poderia utilizar esse deeplink. Quando combinado com o parâmetro "&sig=<signature>", seria possível criptografar o valor do parâmetro "qr=<uri-encoded-emv-qr-string>", aumentando a segurança, mas criando redundância, pois o “copie e cole” do Pix já possui criptografia suficiente.

  • “<hostname>?”: 🟩 Permite o uso do domínio (Universal Link) https://tap2pix.app, com um certificado RSA, garante a camada de segurança necessária para comprovação de propriedade e execução exclusiva dos aplicativos instantâneos.

  • “qr=<uri-encoded-emv-qr-string>”: 🟩 Este é o elemento central da interoperabilidade proposta pelo Banco Central. O QR code precisa estar em formato URI encode, para que os aplicativos bancários possam filtrar e absorver as informações transmitidas via GET. A informação contida no “copie e cole” é essencial para a realização da transação, enquanto as demais informações apenas compõem a personalização dos aplicativos e seus formatos de leitura.

[ Transmissão do NFC com Tap2Pix ]

Descrição das Funcionalidades

  • Emulação de cartão NFC (HCE): O dispositivo Android atua como um cartão NFC emulado.
  • Resposta a comandos APDU: O serviço interpreta e responde a comandos APDU, como a seleção de aplicação, container de capacidade e arquivos NDEF.
  • Envio de mensagens NDEF: Permite o envio de mensagens NDEF contendo texto ou URLs para dispositivos/leitores NFC.
  • Suporte a mensagens dinâmicas: O serviço pode gerar mensagens NDEF com base em URLs fornecidas via Intent.

Estrutura do Projeto

A principal classe do projeto é Tap2PixApduService, que herda de HostApduService e implementa a lógica de resposta aos comandos NFC.

Principais Componentes

  • onCreate(): Inicializa o serviço, preparando uma mensagem NDEF padrão.
  • onStartCommand(): Atualiza a mensagem NDEF com base nos dados recebidos via Intent.
  • processCommandApdu(): Lida com os comandos APDU recebidos, respondendo com dados NDEF ou informações do container de capacidade.
  • onDeactivated(): Reseta os estados quando o serviço NFC é desativado.

Comandos APDU

Os comandos APDU são usados para selecionar diferentes arquivos e responder com as informações correspondentes:

  • Selecionar Aplicação: Seleciona a aplicação NDEF emulada.
  • Selecionar Container de Capacidade: Seleciona o arquivo de capacidade NDEF.
  • Selecionar Arquivo NDEF: Seleciona o arquivo que contém a mensagem NDEF.

Estrutura da Mensagem NDEF

A mensagem NDEF pode conter:

  • Texto: Uma string em formato de texto (padrão).
  • URL: Uma URL passada por Intent para emular um redirecionamento.

Pré-requisitos

  • Android Studio
  • Um dispositivo Android com suporte a NFC e Host-based Card Emulation (HCE)

[ Envio da URL do Pix transmitida pelo NFC ]

Padronização da URL Tap2Pix

O formato padrão da URL para ser transmitido no Tap2Pix é o seguinte:

https://tap2pix.app/?qr=encodeURI(copie&cole)

A URL tap2pix.app foi configurada para garantir a segurança da aplicação, sendo compatível com os aplicativos instantâneos da Apple (App Clip) e Android (Instant App). O uso de Universal Links garante que apenas o domínio tap2pix.app inicie esses apps instantâneos, além de estar alinhado à proposta enviada pelo Banco Central do Brasil (BCB).

Exemplo de Transmissão de URL

Abaixo está um exemplo de como seria a transmissão da URL do Tap2Pix com um QR code estático:

See demo  IOS/Apple: APP Clip

See demo Android/Google: Instant APP

Warning

O Instant APP precisa rodar com o navegador do Google Chrome

Ou... Se estiver no desktop, faça a leitura do QR Code (IOS ou Android)

image a

Essa estrutura segue as diretrizes de segurança e padronização exigidas pelo Banco Central, garantindo a eficácia e segurança do Tap2Pix em diferentes cenários de uso.

[ Listagem dos APPs na Tap2Pix ]

Adição dos APPs bancários junto ao TAP2PIX

Para listar seu app no Tap2Pix, é necessário entrar em contato e fornecer os schemes do seu app. Vale lembrar que o Tap2Pix aceitará apps de BaaS e Bancos Sociais. Esses apps não são obrigatórios para o Open Finance na Jornada SEM Redirecionamento, que será lançada em fevereiro de 2025. Contudo, apps de BaaS, Bancos Sociais e de exchanges (optantes pelo OFF Ramp) podem solicitar inclusão via Jornada COM Redirecionamento.

É necessário fornecer os schemes do app junto com o Universal Link. Exemplo:

	"name": "BANCO-A",
	"brand": "https://static.eb.tech/img/BANCO-A.png",
	"universal_link": "https://www.BANCO-A.com.br/",
	"links": {
		"android": "BANCO-A://transferenciapix",
		"ios": "BANCO-A://transferenciapix"
	}

Exibição dos APPs e sua ordenação [ Em evolução ]

O Tap2Pix mapeia os apps instalados nos smartphones dos clientes [ Já desenvolvido para IOS ]. Checamos se os apps estão instalados no Smartphone (IOS e Android) dos clientes.

E iremos checar de 20 à 30 dad instituições mais utilizadas no Brasil estão presentes no Smartphone [ Estamos mapeando os universal link e schemes ].

Caso não estejam presente no Smartphone, os links dos apps serão removidos da listagem, garantindo que apenas os apps instalados [ A checagem dos 20 a 30 apps ] sejam exibidos.

A ordenação será feita com base nos últimos 3 apps utilizados pelo cliente [ Em desenvolvimento ], armazenando essa informação para que sejam listados primeiro, proporcionando uma experiência mais simples e eficaz.

Redução de Fricção e Taps Necessários

O Pix já é um sucesso para pagamentos online e de serviços. No entanto, no uso presencial, ele ainda enfrenta obstáculos devido à fricção envolvida.

Em testes de laboratório, observamos que a jornada com QR Code exige de 8 a 12 interações (taps), resultando em um tempo total entre 20 e 50 segundos.

O Tap2Pix busca reduzir essa fricção nos pagamentos presenciais com Pix, proporcionando uma experiência mais simplificada.

• Na proposta do Tap2Pix COM redirecionamento, a jornada varia de 3 a 6 interações. A melhor experiência de UX foi alcançada com 3 taps, e, entre os bancos testados, o Mercado Pago apresentou 4 taps, com tempo de transação variando entre 6 e 15 segundos em média.

Tip

O Tap2Pix é compatível com Apple Pay e Instant App Android, mantendo a mesma quantidade de interações nas Jornadas COM e SEM Redirecionamento em ambas as plataformas.

• Na proposta SEM redirecionamento, estimamos que o processo envolverá 2 cliques laterais + 1 ou 2 taps. Considerando que haverá mais um PSP intermediando a transação, acreditamos que a latência do JSR será ligeiramente maior devido às verificações de fraude, levando de 10 a 15 segundos em média.

• A experiência com a Wallet da Apple demonstrou ser extremamente eficiente, exigindo apenas 2 cliques laterais, com tempo médio de 5 a 10 segundos.

Para substituir a Wallet da Apple, outras wallets precisarão de 2 cliques laterais + 1 tap para ativar a leitura do NFC, levando de 10 a 15 segundos. No entanto, para que essas wallets sejam competitivas, é essencial que ofereçam uma UX superior à da Apple, para motivar os clientes a usá-las. Outros pontos identificados foram:

  • Necessidade de atualização dos smartphones dos clientes para iOS 18.1 ou superior;
  • Competição direta com a Wallet da Apple;
  • Necessidade de interação para ativar a leitura do NFC;
  • Competição com bandeiras de cartão de crédito;
  • Instalação de um novo aplicativo de wallet;
  • Limitação no suporte a NFCs de serviços, como cartão vacinal do governo, cartões de embarque, tickets de transporte, passaportes da Disney, entre outros.

O projeto Tap2Pix

O projeto Tap2Pix busca a democratização do Pix por Aproximação. Além de estar totalmente preparado para a Jornada SEM Redicionamento, ele também mantém a Jornada COM Redirecionamento.

Benefícios da Proposta do Tap2Pix:

  • Disponibilidade do Pix por Aproximação antes do lançamento do JSR com o Open Finance (Fevereiro de 2025)
  • A proposta do Tap2Pix não conflita com as bandeiras;
  • Não competirá com Apple Pay ou Wallet no duplo clique lateral;
  • Sua ativação é automática e instantânea;
  • Compatível com iOS 15 e Android 12
  • Prevê a jornada COM e SEM redirecionamento;
  • Utiliza QR Code, NFC ou Link para ativação do SuperApp Wallet;
  • Não requer instalação prévia;
  • Tem menos de 100KB;
  • Não necessita de autorização ou cadastro prévio dos clientes;
  • Facilita a adaptação da usabilidade para os clientes;
  • Não requer cadastro dos bancos (apenas mapeamento do Universal Link e sessão do Pix);
  • Não precisa de modificações nos aplicativos bancários;
  • Abrange BaaS e Bancos Sociais e não obrigatórios do #JSR;
  • É um Super App Wallet multiplataforma (iOS e Android);
  • Mantém todo o legado de segurança do método tradicional;
  • Está 100% em conformidade com a regulamentação e a LGPD;
  • É uma solução pioneira em nível mundial, desenvolvida por um grupo de empresas com uma proposta de padronização aberta para o uso de pagamentos via NFC, visando superar as limitações existentes;
  • Entrará em produção (com a Jornada COM Redirecionamento) até o início de outubro de 2024.

Desafios e Avanços

Os aplicativos instantâneos estão em constante evolução, e a equipe do Tap2Pix já realizou todas as adaptações necessárias, continuando seu desenvolvimento contínuo.

Atualmente, o Tap2Pix está em fase de pré-lançamento, com os participantes do consórcio e as suas equipes de desenvolvimento trabalhando junto para alinhar o processo de onboarding, a listagem e os fluxos operacionais.

É importante destacar que, após a integração dos parceiros do consórcio, o Tap2Pix avançará para a criação da sua associação e estruturação de sua governança.

Abaixo, detalhamos os desafios encontrados e as soluções instantâneas adotadas para iOS e Android.

Ambos os sistemas de aplicativos instantâneos (iOS e Android) possuem documentação limitada, mas as recentes atualizações feitas pelas plataformas mostram que estão em constante evolução (Principalmente a do Android, que como descrito anteriormente. Ainda não suporta a sua inicialização direta pelo NFC. Necessitando assim haver uma pagina web, que antecede e faz a sua chamada.

Vale ressaltar, que nenhum dos participantes do Tap2Pix precisará se preocupar com o desenolvimento dos aplicativos instantâneos para plugarem ao Tap2Pix, toda a jornada e adpação necessária já foi feita pela equipe do Tap2Pix.

Os aplicativos instantâneos precisaram ser desenvolvidos utilizando a linguagem nativa das plataformas, como Kotlin no Android e Swift no IOS.

IOS / Apple

O IOS possui um app instantâneo com ótima UX, onde exibe um card mesmo com Iphone bloqueado. A limitação que encotramos junto ao APP CLIP da Apple foi no que diz respeito a sua invocação através do link. A Apple ainda não permite a ativação do app instantâneo utilizando o universal link (dominio tap2pix.app).

Warning

Conforme o demo, conseguimos invocar o APP Clip via link, porem ainda não foi encontrado uma solução para personalizar o Universal Link e assim mantermos o mesmo do APP Clip. (Em estudo)

See demo IOS/Apple: APP Clip

Android / Google

O Android possui a sua limitação na invocação do app instantâneo através do NFC (O Google tem atualizado bastante o seu Instant APP e a comunidade tem exigido bastante essa invocação pelo NFC). O subterfúgio encontrado, foi em levar o cliente para o navegador e ao clicar em abrir ele executará o app instantâneo.

Note

O Android manteve a mesma quantidade de Taps (Cliques) do que no IOS.

See demo Android/Google: Instant APP

Warning

O Instant APP precisa rodar com o navegador do Google Chrome



[ Próximos passos ]

1 - Padronização do QR Code com logo Tap2Pix;
2 - Criação do Fingerprint;
3 - Criação do Tap2Crypto (P2P de Stablecoin ou com OFF Ramp para Pix)
4 - Criação e consolidação do Consócio Tap2Pix
5 - Implementação da JSR com OpF;
6 - Incorporação de uma ID e One Click Buy (Estilo Click2Pay da Visa e Mastercard)

Sugestão dos nomes para a Associação Tap2Pix: ABTAP - Associação Brasileira de Transações por Aproximação OU APAW - Associação de Pagamentos por Aproximação e Wallet

Contributions: Star History

Star History Chart

[ Junte-se ]

Vamos unir forças para demonstrar que, por meio da colaboração coletiva, que podemos não apenas estabelecer um novo padrão, mas também transformar a maneira como os brasileiros realizam pagamentos contactless utilizando o Pix? Entre em contato!

Contato via Whatsapp

Email: hi@tap2pix.org

Veja mais em https://www.tap2pix.org


[ Licença ]


A AGPL-3.0 (Affero General Public License) é uma licença de software livre que protege desenvolvedores ao garantir que qualquer modificação ou uso do software seja compartilhado com a comunidade, mesmo quando ele é oferecido como um serviço remoto, como em aplicações web. Ela estende os princípios da GPL, incluindo a exigência de que, se alguém modificar o software para oferecer um serviço, deve disponibilizar o código-fonte modificado a todos os usuários desse serviço, se solicitado. Isso impede que empresas ou indivíduos utilizem o software para lucrar ou oferecer serviços sem compartilhar as melhorias ou adaptações feitas. Assim, a AGPL-3.0 assegura que todo trabalho colaborativo e aberto seja mantido público, promovendo um ciclo contínuo de melhorias e garantindo que os benefícios e inovações sejam acessíveis a toda a comunidade de desenvolvedores.

Open-source - veja mais em: AGPL License


Copyright © tap2pix.org 2024

About

Tap2Pix NFC Card Emulation Service é um serviço Android que utiliza Host-based Card Emulation (HCE) para emular um cartão NFC e transmitir mensagens NDEF, como texto ou URLs, para leitores NFC. Ideal para aplicações que precisam simular cartões NFC e responder a comandos APDU.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published