Realizando Pagamentos
Aqui iremos mostrar um exemplo de como realizar um pagamento utilizando o PaymentActivity.
Criando o launcher
Primeiro, defina um ActivityResultLauncher<Intent>, informado-o um callback para receber e tratar a resposta da PaymentActivity da forma que desejar.
O trecho de código de exemplo abaixo está apenas escrevendo os dados retornados em log.
val paymentLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
val data = result.data
if (data != null) {
Toast.makeText(this, response.status.toString(), Toast.LENGTH_SHORT).show()
data.getStringExtra("RESULT_TRANSACTION_ID_EXTRA")
?.also { Log.d("TestIntent", "RESULT_TRANSACTION_ID_EXTRA = $it") }\
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") }
data.getStringExtra("RESULT_REFUND_CODE_EXTRA")
?.also { Log.d("TestIntent", "RESULT_REFUND_CODE_EXTRA = $it") }
finish()
}
}
Iniciando a PaymentActivity
Crie uma Intent para a PaymentActivity, informe os parâmetros da transação, e utilizando o launcher criado inicie o pagamento.
val paymentIntent = Intent()
/**
* Para o aplicativo de homologação(debug) utilize o package name com.getcard.hub.getcardpayapp.homolog
* Para o aplicativo de produção(release) utilize o package name com.getcard.hub.getcardpayapp
*/
paymentIntent.setClassName("com.getcard.hub.getcardpayapp", "com.getcard.hub.getcardpayapp.ui.PaymentActivity")
paymentIntent.putExtra("AMOUNT_EXTRA", 5000) // Valor da transação EM CENTAVOS
paymentIntent.putExtra("PAYMENT_TYPE_EXTRA", "CREDIT") // Tipo de pagamento
paymentIntent.putExtra("INSTALLMENT_TYPE_EXTRA", "INSTALLMENT_BUYER") // Tipo de parcelamento
paymentIntent.putExtra("INSTALLMENT_NUMBER_EXTRA", 2) // Quantidade de parcelas
//Verifica se o aplicativo existe no dispositivo
if (paymentIntent.resolveActivity(context.packageManager) != null) {
Log.d("Exemplo", "Iniciando GetCardPay")
paymentLauncher.launch(paymentIntent)
} else {
Log.e("Exemplo", "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 | Valores Possiveis |
|---|---|---|---|
AMOUNT_EXTRA | Valor da transação a ser realizada | String ou Int | 1 a 2147483647 |
PAYMENT_TYPE_EXTRA | Tipo de pagamento (ex: crédito, débito, PIX) | String | CREDIT, DEBIT, PIX, VOUCHER |
INSTALLMENT_TYPE_EXTRA | Tipo de parcelamento (ex: loja, administradora) | String | ONE_TIME, INSTALLMENT_BUYER, INSTALLMENT_SELLER |
INSTALLMENT_NUMBER_EXTRA | Número de parcelas | String ou Int | 1 a 2147483647 |
Extras de saída
Parâmetros recebidos como resposta de um pagamento.
| EXTRA | Descrição | Tipo | Valores Possiveis |
|---|---|---|---|
RESULT_TRANSACTION_ID_EXTRA | ID da transação (apenas se for autorizada) | String? | UUID? |
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, VOUCHER |
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? | ... |
RESULT_ACQUIRER_NAME_EXTRA | Nome da adquirente que processou a transação | String? | ... |
RESULT_ACQUIRER_SAT_CODE_EXTRA | Código SAT da adquirente que processou a transação. | String? | ... |
RESULT_ACQUIRER_CNPJ_EXTRA | CNPJ da adquirente que processou a transação. | String? | ... |
RESULT_NSU_EXTRA | Identificador único da transação. | String? | ... |
RESULT_CARD_EXPIRATION_DATE_EXTRA | Data de expiração do cartão de crédito, no padrão MM/yy | String? | ... |
RESULT_REFUND_CODE_EXTRA | Código de referência do estorno | String? | ... |
aviso
Todos os campos com ? podem retornar null dependendo do tipo de transação ou do status do processamento.