aviso
As impressões via intent estão disponíveis a partir da versão 1.3.0 do aplicativo
Realizando Impressão
Por padrão, o GetCard Pay já realiza a impressão de um comprovante ao final das transação, mas é possível fazer impressões a qualquer momento.
O GetCard Pay suporta impressão de texto e impressão de imagems.
Para realizar a impressão de algo, podemos criar um launcher para nossa activity de impressão e depois inicia-la:
val printLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
val responseOperationStatus = result.data?.getStringExtra("RESULT_OPERATION_STATUS_EXTRA")
val responseMessage = result.data?.getStringExtra("RESULT_MESSAGE_EXTRA")
Toast.makeText(this, "$responseOperationStatus: $responseMessage", Toast.LENGTH_SHORT).show() //Toast
}
Impressão de texto
val printIntent = Intent()
printIntent.setClassName("com.getcard.hub.getcardpayapp", "com.getcard.hub.getcardpayapp.ui.PrintActivity")
printIntent.putExtra("RECEIPT", "String que será impressa")
//Verifica se o aplicativo existe no dispositivo
if (printIntent.resolveActivity(context.packageManager) != null) {
Log.d("Teste", "Iniciando GetCard Pay")
launcher.launch(printIntent)
} else {
Log.e("Teste", "Não existe GetCard Pay nesse dispositivo")
Toast.makeText(context, "App não instalado", Toast.LENGTH_SHORT).show()
}
Impressão de Imagem
Para usar a impressão de imagem, será necessário configurar um FileProvider do Android. Para mais informações, consulte a documentação oficial.
fun getImageUri(context: Context, bitmap: Bitmap): Uri {
val imagesFolder = File(context.cacheDir, "images")
imagesFolder.mkdirs()
val file = File(imagesFolder, "shared_image.png")
FileOutputStream(file).use { out ->
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)
}
return FileProvider.getUriForFile(context, "${context.packageName}.provider", file)
}
//###############
val uri = getImageUri(context, Mocks.generateReceiptBitmap())
val printIntent = Intent().apply {
setClassName(
"com.getcard.hub.getcardpayapp",
"com.getcard.hub.getcardpayapp.ui.PrintActivity"
)
putExtra("RECEIPT_IMAGE_URI", uri)
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
clipData = ClipData.newUri(context.contentResolver, "RECEIPT_IMAGE_URI", uri)
}
if (printIntent.resolveActivity(context.packageManager) != null) {
Log.d("Teste", "Iniciando GetCardPay")
launch(printIntent)
} else {
Log.e("Teste", "Não existe GetCardPay nesse dispositivo")
Toast.makeText(context, "App não instalado", Toast.LENGTH_SHORT).show()
}
Extras de entrada
Parâmetros para iniciar um pagamento.
| EXTRA | Descrição | Tipo |
|---|---|---|
RECEIPT | String a ser impressa | String |
RECEIPT_IMAGE_URI | URI da imagem que será impressa | URI |
aviso
Se AMBOS os extras forem utilizados, o GetCard Pay irá priorizar a impressão de imagem.
Extras de saída
Parâmetros recebidos como resposta de um pagamento.
| EXTRA | Descrição | Tipo | Valores Possiveis |
|---|---|---|---|
RESULT_OPERATION_STATUS_EXTRA | Status da operação (ex: autorizada, negada, cancelada) | String | SUCCESS, DECLINED, FAILED, CANCELLED, UNKNOWN, UNAUTHORIZED |
RESULT_MESSAGE_EXTRA | Mensagem complementar da operação | String | ... |