Realizando Estornos
Aqui iremos mostrar um exemplo de como realizar um estorno utilizando a RefundActivity.
Criando o launcher
Primeiro, defina um ActivityResultLauncher<Intent>, informado-o um callback para receber e tratar a resposta da RefundActivity da forma que desejar.
O trecho de código de exemplo abaixo está apenas escrevendo os dados retornados em log.
val refundLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
val data = result.data
if (data != null) {
Toast.makeText(this, response.status.toString(), Toast.LENGTH_SHORT).show()
data.getStringExtra("RESULT_OPERATION_STATUS_EXTRA")
?.also { Log.d("TestIntent", "RESULT_OPERATION_STATUS_EXTRA = $it") }
data.getStringExtra("RESULT_MESSAGE_EXTRA")
?.also { Log.d("TestIntent", "RESULT_MESSAGE_EXTRA = $it") }
data.getLongExtra("RESULT_TRANSACTION_TIMESTAMP_EXTRA", -1)
.also { Log.d("TestIntent", "RESULT_TRANSACTION_TIMESTAMP_EXTRA = $it") }
data.getIntExtra("RESULT_TRANSACTION_AMOUNT_EXTRA", -1)
.also { Log.d("TestIntent", "RESULT_TRANSACTION_AMOUNT_EXTRA = $it") }
data.getStringExtra("RESULT_INSTALLMENT_TYPE_EXTRA")
?.also { Log.d("TestIntent", "RESULT_INSTALLMENT_TYPE_EXTRA = $it") }
data.getIntExtra("RESULT_INSTALLMENT_NUMBER_EXTRA", -1)
.also { Log.d("TestIntent", "RESULT_INSTALLMENT_NUMBER_EXTRA = $it") }
data.getStringExtra("RESULT_PAYMENT_TYPE_EXTRA")
?.also { Log.d("TestIntent", "RESULT_PAYMENT_TYPE_EXTRA = $it") }
data.getStringExtra("RESULT_CARD_NUMBER_EXTRA")
?.also { Log.d("TestIntent", "RESULT_CARD_NUMBER_EXTRA = $it") }
data.getStringExtra("RESULT_CARD_BRAND_EXTRA")
?.also { Log.d("TestIntent", "RESULT_CARD_BRAND_EXTRA = $it") }
data.getStringExtra("RESULT_CARD_HOLDER_EXTRA")
?.also { Log.d("TestIntent", "RESULT_CARD_HOLDER_EXTRA = $it") }
data.getStringExtra("RESULT_NSU_HOST_EXTRA")
?.also { Log.d("TestIntent", "RESULT_NSU_HOST_EXTRA = $it") }
data.getStringExtra("RESULT_AUTHORIZATION_CODE_EXTRA")
?.also { Log.d("TestIntent", "RESULT_AUTHORIZATION_CODE_EXTRA = $it") }
data.getStringExtra("RESULT_END_TO_END_ID_EXTRA")
?.also { Log.d("TestIntent", "RESULT_END_TO_END_ID_EXTRA = $it") }
data.getStringExtra("RESULT_CUSTOMER_RECEIPT_EXTRA")
?.also { Log.d("TestIntent", "RESULT_CUSTOMER_RECEIPT_EXTRA = $it") }
data.getStringExtra("RESULT_ESTABLISHMENT_RECEIPT_EXTRA")
?.also { Log.d("TestIntent", "RESULT_ESTABLISHMENT_RECEIPT_EXTRA = $it") }
finish()
}
}
Iniciando a RefundActivity
aviso
Só é possível estornar uma transação que foi realizada pelo Getcard Pay.
Crie uma Intent para a RefundActivity, informe o ID da transação a ser estornada, e utilizando o launcher criado inicie o estorno.
val refundIntent = Intent()
refundIntent.setClassName("com.getcard.hub.getcardpayapp", "com.getcard.hub.getcardpayapp.ui.RefundActivity")
refundIntent.putExtra("TRANSACTION_ID_EXTRA", "<transaction-id>") // ID da transação a ser estornada
if (refundIntent.resolveActivity(context.packageManager) != null) {
Log.d("Teste", "Iniciando GetCardPay")
refundLauncher.launch(refundIntent)
} else {
Log.e("Teste", "Não existe GetCardPay nesse dispositivo")
Toast.makeText(context, "GetCard Pay não instalado", Toast.LENGTH_SHORT).show()
}
Extras de entrada
Parâmetros para iniciar um pagamento.
| EXTRA | Descrição | Tipo |
|---|---|---|
TRANSACTION_ID_EXTRA | ID da transação a ser estornada | String |
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 | ... |
RESULT_TRANSACTION_TIMESTAMP_EXTRA | Timestamp da transação | Long | ... |
RESULT_TRANSACTION_AMOUNT_EXTRA | Valor da transação realizada | Int? | ... |
RESULT_INSTALLMENT_TYPE_EXTRA | Tipo de parcelamento utilizado | String? | ONE_TIME, INSTALLMENT_BUYER, INSTALLMENT_SELLER |
RESULT_INSTALLMENT_NUMBER_EXTRA | Número de parcelas utilizadas | Int? | ... |
RESULT_PAYMENT_TYPE_EXTRA | Tipo de pagamento utilizado | String? | CREDIT, DEBIT, PIX |
RESULT_CARD_NUMBER_EXTRA | Número do cartão (parcial) | String? | ... |
RESULT_CARD_BRAND_EXTRA | Bandeira do cartão (ex: Visa, Mastercard) | String? | ... |
RESULT_CARD_HOLDER_EXTRA | Nome do portador do cartão | String? | ... |
RESULT_NSU_HOST_EXTRA | NSU do host (número sequencial único) | String? | ... |
RESULT_AUTHORIZATION_CODE_EXTRA | Código de autorização da transação | String? | ... |
RESULT_END_TO_END_ID_EXTRA | End-to-end ID (usado em transações PIX) | String? | ... |
RESULT_CUSTOMER_RECEIPT_EXTRA | Comprovante do cliente | String | ... |
RESULT_ESTABLISHMENT_RECEIPT_EXTRA | Comprovante do estabelecimento | String? | ... |
aviso
Todos os campos com ? podem retornar null dependendo do tipo de transação ou do status do processamento.