Comunidade
Como inicializar o terminal de pagamento via emulador do android
Estou abrindo um projeto android via emulador para simular uma venda débito/crédito com a lib PlugPag e quando passo o código de ativação para esta classe: PlugPagInitializationResult initResult = plugPag.initializeAndActivatePinpad(new PlugPagActivationData("XXXXX")); não recebo o retorno e o emulador fica preso exatamente nessa linha onde foi feito essa chamada.
Gostaria de saber se o problema é porque estou no emulador e precisa de alguma configuração e mais.
Boa tarde Neto,
Conforme conversamos através do pipefy, não é possivel você realizar a integração através de emulador.
Marcos Paulo da Silva Silveira, fiz um pedido de uma maquina em modo dev ou a senha para por a minha em modo dev faz 20 dias e não tive nenhuma resposta
Estou abrindo um projeto android via maquinha Pos para simular uma venda débito/crédito com a lib PlugPag e quando passo o código de ativação para esta classe: PlugPagInitializationResult initResult = plugPag.initializeAndActivatePinpad(new PlugPagActivationData("XXXXX")); não recebo o retorno fica preso exatamente nessa linha onde foi feito essa chamada.
Gostaria de saber se o problema o que pode ser o problema.
Pessoal, na minha experiência, descobri que a aplicação trava quando não executamos o código de modo assíncrono.
Portanto, temos 2 opções:
- 1 - iniciar um novo thread para estas atividades relacionadas ao SDK;
- 2 - usar as versões assíncronas dos métodos: doAsyncInitializeAndActivatePinpad e doAsyncPayment;
Além disso, é importante lembrar que a documentação do Mundo Físico (SmartPOS) está desatualizada. Portanto, não desenvolvam utilizando os exemplos deixados por lá. Com toda certeza, o time de homologação irá solicitar que vocês atualizem o SDK e, portanto, refatorem a lógica do código.
Neste momento que escrevo, a última versão é 1.24.0.
A seguir, temos um POC usando Kotlin:
fun startPayment(context: Context) {
val length = 10
val random = Random.Default
val randomPrice = random.nextInt(2500, 2600)
val charPool = ('a'..'z') + ('A'..'Z') + ('0'..'9') // Defina o conjunto de caracteres permitidos
val randomString = (1..length)
.map { charPool.random() }
.joinToString("")
// Define payment data
val paymentData = PlugPagPaymentData(
PlugPag.TYPE_DEBITO,
randomPrice,
PlugPag.INSTALLMENT_TYPE_A_VISTA,
1,
randomString
)
// Create app identification
val appIdentification = PlugPagAppIdentification(context)
// Create PlugPag reference
val plugpag = PlugPag(context)
// Activate the terminal and make the payment
val result = plugpag.doAsyncInitializeAndActivatePinpad(
PlugPagActivationData("000000"), // seu código de ativação
object : PlugPagActivationListener {
override fun onActivationProgress(data: PlugPagEventData) {
Log.d("Activation:progress", PlugPagEventData.toString());
}
override fun onError(result: PlugPagInitializationResult) {
Log.d("Activation:error", result.toString());
}
override fun onSuccess(result: PlugPagInitializationResult) {
Thread {
Log.d("Activation:success", result.toString())
if (result.result == PlugPag.RET_OK) {
val result = plugpag.doPayment(paymentData)
Log.d("Payment:success", result.toString())
}
}.start()
}
}
)
Log.d("result.result", result.toString());
}
Obrigado por compartihar essa poc ajudo bastante aqui, funciono legal