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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9d54723 · Oct 29, 2024

History

46 Commits
Oct 21, 2024
Oct 21, 2024
Oct 21, 2024
Oct 21, 2024
Oct 21, 2024
Oct 23, 2024
Oct 29, 2024
Oct 21, 2024
Oct 21, 2024
Oct 21, 2024
Oct 21, 2024
Oct 21, 2024

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