Por que os cartões de transporte japoneses não funcionam com a maioria dos aplicativos?
A camada de rádio raramente é o obstáculo: a maioria dos celulares recentes detecta esses cartões, que usam a tecnologia que o Android expõe como NfcF. O que barra um aplicativo geral é o acesso aos dados, que são protegidos e só legíveis por software que tenha credenciais controladas pelas operadoras de transporte.
Dois obstáculos separados
“Meu aplicativo não consegue ler o meu cartão de transporte” junta duas perguntas que têm respostas diferentes. O celular consegue falar com o cartão? E o aplicativo consegue entender o que o cartão diz?
A primeira em geral está resolvida. A segunda em geral não está, e nenhuma quantidade de aplicativos diferentes muda isso.
A tecnologia por baixo
Esses cartões usam a família que o Android expõe como NfcF e documenta como JIS 6319-4 na referência de tecnologias dele. O NFC Forum adotou a mesma família como Tipo 3. A tecnologia é desenvolvida pela Sony, que publica uma visão geral do FeliCa.
O suporte de hardware fora do Japão foi irregular por anos e melhorou consideravelmente.
Por que o saldo fica escondido
Um cartão de transporte não é uma tag que guarda um número à vista. É um pequeno sistema seguro em que os dados interessantes ficam em áreas protegidas por chaves que a operadora detém.
Um aplicativo sem essas chaves em geral consegue estabelecer que um cartão está presente e ler os identificadores que o cartão expõe livremente. Ele não consegue ler o saldo, o histórico de viagens nem qualquer outra coisa que a operadora considere sua, porque o cartão não as entrega.
Isso é um projeto deliberado e não uma limitação. Um cartão com valor armazenado que deixasse qualquer aplicativo próximo ler o conteúdo dele seria um projeto ruim para um instrumento de pagamento.
O que você pode esperar razoavelmente
Os aplicativos publicados pelas próprias operadoras de transporte, e os recursos de carteira embutidos nas plataformas dos celulares no Japão, funcionam porque têm as credenciais necessárias e os acordos necessários. Um utilitário NFC de uso geral não tem e não pode ter.
Então a expectativa honesta para uma ferramenta genérica é a inspeção técnica em vez do conteúdo útil: o cartão é detectado, a tecnologia dele é identificada, e aí termina o que qualquer desenvolvedor independente pode oferecer.
Se um anúncio afirma outra coisa para um aplicativo geral, trate a afirmação com desconfiança. A barreira aqui é contratual e criptográfica, não uma questão de escrever software melhor.
Perguntas frequentes
Falta o hardware no meu celular?
Possivelmente, em modelos mais antigos vendidos fora do Japão, mas muito menos vezes do que as pessoas presumem. Antes de culpar o hardware, note que mesmo um celular com suporte completo não vai ler dados protegidos sem as chaves da operadora.
Algum aplicativo pode mostrar o saldo do meu cartão?
Só aplicativos com autorização da operadora, o que na prática quer dizer o software da própria operadora e os recursos de carteira da plataforma disponíveis no Japão. É uma barreira comercial e criptográfica, não de qualidade de software.
Por que meu celular lê um cartão-chave de hotel e não um cartão de transporte?
Muitos cartões de hotel usam tecnologias simples com proteção padrão ou fraca, então um leitor geral vai mais longe. Os cartões de transporte são construídos para resistir exatamente a isso, porque carregam valor armazenado.
Isso vale para cartões de transporte fora do Japão?
O princípio vale. A maioria dos sistemas de transporte protege os dados deles com chaves que controlam, qualquer que seja a tecnologia de base. O que varia é a tecnologia, não o fato de as partes interessantes estarem trancadas.