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:
- Comece adicionando no arquivo AndroidManifest.xml a seguinte permissão:
<uses-permission android:name="cielo.lio.permission.CASHLESS"/>
- 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()oustartForegroundService(); - 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:
| ATRIBUTO | DESCRIÇÃO | DOMÍNIO |
|---|---|---|
action | Operaçã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 | ||
cbType | Forma que deseja receber o retorno da operação | A - Activity |
| (callback). | B - Broadcast Reciver | |
| É de responsabilidade do integrador | S - Service | |
| implementar a funcionalidade que irá tratar a | ||
| resposta do serviço. | ||
cbPackage | PackageName do app que está realizando a | <seu_package_name> |
| integração. | ||
cbAction | Atributo 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
| ATRIBUTO | DESCRIÇÃO | DOMÍNIO |
|---|---|---|
sector | O setor de cartões (inicia do zero) | Byte |
block | O bloco no setor (inicia do zero) | Byte |
data | Os dados a serem inseridos no bloco | ByteArray |
value | O valor para incrementar ou decrementar | Byte |
keyType | O tipo de chave para autenticar no setor (A ou B) | Char |
key | A chave para autenticar no setor | ByteArray |
destinationBlock | O bloco para backup ou restaurar | Byte |
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.
Updated 5 months ago