Pular para o conteúdo principal
Versão: 2.5.x

PIN Pad

Abertura do PIN pad

aviso

O uso desta funcionalidade deve ser feito apenas em casos realmente necessários.

É possível abrir o PIN pad a qualquer momento oportuno. É por meio da função ScopeProvider.openPinpad() que uma solicitação de abertura do PIN pad ocorre.

ScopeProvider.openPinpad()

observação

A função de abertura é uma função suspend, enquanto as outras funções de interação com o PIN pad são funções comuns.
Sua execução dura aproximadamente 10 segundos.

suspend fun ScopeProvider.openPinpad(context: Context): ScopeReturnCodes

Parâmetros

ParâmetroTipoDescrição
contextContextContexto para execução da função.

Retorno

Um dos seguintes ScopeReturnCodes.

CódigoMensagemOperationStatus
-100PIN pad não conectadoOperationStatus.FAILED
-1Não é possível abrir o pinpad enquanto uma transação está em execuçãoOperationStatus.FAILED
-2Não é possível abrir o pinpad enquanto uma operação de fechamento está em execuçãoOperationStatus.FAILED
-3Não é possível abrir o pinpad enquanto uma operação de abertura já está em execuçãoOperationStatus.FAILED
-4Não é possível abrir o pinpad enquanto uma operação de exibição está em execuçãoOperationStatus.FAILED
0Sucesso na operação.OperationStatus.SUCCESS
14PIN pad já estava aberto.OperationStatus.SUCCESS
outrosErro desconhecidoOperationStatus.FAILED

Fechamento do PIN pad

aviso

O uso desta funcionalidade deve ser feito apenas em casos realmente necessários.

É possível fechar o PIN pad a qualquer momento oportuno. É por meio da função ScopeProvider.closePinpad() que uma solicitação de fechamento do PIN pad ocorre.

ScopeProvider.closePinpad()

fun ScopeProvider.closePinpad(): ScopeReturnCodes

Retorno

Um dos seguintes ScopeReturnCodes.

CódigoMensagemOperationStatus
-1Não é possível fechar o pinpad enquanto uma transação está em execuçãoOperationStatus.FAILED
-2Não é possível fechar o pinpad enquanto uma operação de fechamento já está em execuçãoOperationStatus.FAILED
-3Não é possível fechar o pinpad enquanto uma operação de abertura está em execuçãoOperationStatus.FAILED
-4Não é possível fechar o pinpad enquanto uma operação de exibição está em execuçãoOperationStatus.FAILED
0Sucesso na operação.OperationStatus.SUCCESS
211PIN pad não foi aberto pela aplicação.OperationStatus.FAILED
outrosErro desconhecidoOperationStatus.FAILED

Exibição de mensagem

É possível exibir uma mensagem personalizada no PIN pad. Para isto é necessário que o PIN pad esteja aberto, estado no qual ele se encontra após toda transação (pagamento ou estorno) finalizada com aprovação, ou após chamar a função ScopeProvider.openPinpad().

É por meio da função ScopeProvider.displayOnPinpadScreen() que uma solicitação de exibição de texto ocorre.

ScopeProvider.displayOnPinpadScreen()

fun ScopeProvider.displayOnPinpadScreen(context: Context, message: String): ScopeReturnCodes

Parâmetros

ParâmetroTipoDescrição
contextContextContexto para execução da função.
messageStringMensagem de até 32 caracteres, sendo 16 caracteres por linha, que será exibida no visor do PIN pad.

Retorno

Um dos seguintes ScopeReturnCodes.

CódigoMensagemOperationStatus
-1Não é possível exibir uma mensagem no pinpad enquanto uma transação está em execuçãoOperationStatus.FAILED
-2Não é possível exibir uma mensagem no pinpad enquanto uma operação de fechamento está em execuçãoOperationStatus.FAILED
-3Não é possível exibir uma mensagem no pinpad enquanto uma operação de abertura está em execuçãoOperationStatus.FAILED
-4Não é possível exibir uma mensagem no pinpad enquanto uma operação de exibição já está em execuçãoOperationStatus.FAILED
0Sucesso na operação.OperationStatus.SUCCESS
209PIN pad não configurado.OperationStatus.FAILED
210Display do PIN pad não permitido neste momento ou situação.OperationStatus.SUCCESS
211PIN pad não foi aberto pela aplicação.OperationStatus.FAILED
outrosErro desconhecidoOperationStatus.FAILED

Exemplo de uso

class MainActivity : AppCompatActivity() {

private val scopeProvider = ScopeProvider(/* Configurações */)

override fun onCreate() {
//...

binding.btnDisplayMessageOnPinpad.setOnClickListener {
lifecycleScope.launch {
val resultCode = scopeProvider.displayOnPinpadScreen(this@MainActivity, " UPDATE SCREEN ")
Log.d("MainActivity", resultCode.toString())
Toast.makeText(
this@MainActivity,
"'displayOnPinpadScreen()' retornou $resultCode",
Toast.LENGTH_LONG
).show()
}
}
}
}

ScopeReturnCodes

data class ScopeReturnCodes(
val code: Int,
val message: String,
val operationStatus: OperationStatus
)
CampoTipoDescrição
codeIntCódigo de retorno.
messageStringMensagem descrevendo o resultado da operação.
operationStatusOperationStatusEnumeração indicando sucesso ou falha da operação.