Cashless: Mifare

A Cielo Smart oferece a solução de pagamento cashless via integração. Suportamos os cartões Mifare 1k, que possuem uma pequena antena que armazena dados e permite a comunicação com os leitores quando estão próximos. Atualmente, oferecemos suporte ao modelo Mifare 1k, que tem a memória dividida em setores e blocos: cada setor possui 4 blocos, e cada bloco armazena até 16 bytes, totalizando 64 bytes de dados.

Para utilizar o serviço no aplicativo de integração, siga os passos abaixo:

  1. Comece adicionando no arquivo AndroidManifest.xml a seguinte permissão:
<uses-permission android:name="cielo.lio.permission.CASHLESS"/>

  1. Em seguida, declare a visibilidade do pacote. A partir do Android 11 (API 30), tornou-se obrigatório declarar explicitamente a visibilidade do pacote cielo.lio.cashless para que o aplicativo possa interagir com o serviço Cashless Mifare. Essa exigência surgiu devido às novas restrições de visibilidade de pacotes introduzidas no Android 11, com o objetivo de reforçar a privacidade e a segurança do sistema. Sem essa declaração no bloco do AndroidManifest.xml, o sistema impedirá que o aplicativo:
  • Detecte a presença do serviço cielo.lio.cashless;
  • Inicie o serviço usando startService()ou startForegroundService();
  • Envie intents direcionadas ao pacote mencionado.

Para declarar a visibilidade do pacote, adicione a seguinte declaração dentro da tag manifest, no mesmo nível de application:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.seu.pacote">

    <uses-permission android:name="cielo.lio.permission.CASHLESS"/>
    
    <!-- Obrigatório para Android 11+ (API 30+) -->
    <queries>
        <package android:name="cielo.lio.cashless" />
    </queries>

    <application>
        <!-- Seu código aqui -->
    </application>
</manifest>
❗️

Sem essa configuração, você receberá erros como: "IllegalStateException: Not allowed to start service", "SecurityException: Permission Denial", ou falhas silenciosas ao tentar iniciar o serviço.

Nossa integração funciona sem depender do SDK, então, basta criar uma intent e passá-la como parâmetro no método startService, que pode ser acessado via o context da aplicação.

Intent(action)
    .setPackage("cielo.lio.cashless")
    .putExtra("cbType", 'B')
    .putExtra("cbPackage", packageName)
    .putExtra("cbAction", cbAction)
    .let(::startService)

Abaixo, você encontra a descrição dos parâmetros utilizados na operação:

ATRIBUTODESCRIÇÃODOMÍNIO
actionOperação que deseja realizar.cielo.lio.cashless.mifare.DETECT
cielo.lio.cashless.mifare.AUTHENTICATE
cielo.lio.cashless.mifare.READ
cielo.lio.cashless.mifare.WRITE
cielo.lio.cashless.mifare.INCREMENT
cielo.lio.cashless.mifare.DECREMENT
cbTypeForma que deseja receber o retorno da operaçãoA - Activity
(callback).B - Broadcast Reciver
É de responsabilidade do integradorS - Service
implementar a funcionalidade que irá tratar a
resposta do serviço.
cbPackagePackageName do app que está realizando a<seu_package_name>
integração.
cbActionAtributo que enviamos no retorno da operação.AUTH_CALLBACK_READ
Serve para o integrador descobrir, na resposta,AUTH_CALLBACK_WRITE
qual foi a operação executada.AUTH_CALLBACK_INCR
AUTH_CALLBACK_DECR
DETECT_CALLBACK
AUTHENTICATE_CALLBACK

Por fim, chamamos o método startService para iniciarmos o serviço Mifare na Cielo Smart.

Parâmetros de leitura e escrita via intent

ATRIBUTODESCRIÇÃODOMÍNIO
sectorO setor de cartões (inicia do zero)Byte
blockO bloco no setor (inicia do zero)Byte
dataOs dados a serem inseridos no blocoByteArray
valueO valor para incrementar ou decrementarByte
keyTypeO tipo de chave para autenticar no setor (A ou B)Char
keyA chave para autenticar no setorByteArray
destinationBlockO bloco para backup ou restaurarByte

Operações suportadas

Para realizar operações com cartão Mifare, basta criar uma intent seguindo nossa especificação e utilizá-la como parâmetro do método startService, disponível na classe context.

Confira as operações suportadas pelo Mifare.



Did this page help you?