Pular para o conteúdo principal

Localizar Transação

Para Localizar uma Transação utilize os métodos getTransaction ou getLastTransaction da classe paykit. No primeiro método é possível especificar qual transação deseja consultar, já no segundo apenas a última transação é consultada. Note que alguns provedores ainda não permitem que seja consultada a transação (ou a última transação).

TransactionQueryParameters

CampoTipoDescrição
transactionIdString?NSU da Transação.
externalIdString?ID externo da transação (informado pela automação comercial).
Nota

Utilize o transactionId (NSU) ou o externalId para localizar a transação. Se ambos forem informados será utilizado apenas o transactionId para consultar.

Exemplo

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.linx.paykit.common.Callback
import com.linx.paykit.common.TransactionQueryResult
import com.linx.paykit.common.builder.Parameters
import com.linx.paykit.common.parameter.TransactionQueryParameters
import com.linx.paykit.core.Paykit
import com.linx.paykit.core.PaykitFactory

class MainActivity : AppCompatActivity() {

private lateinit var paykit: Paykit

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

paykit = PaykitFactory().build(Parameters(this, "Busca Transação", PaykitId("PAYKIT_ID")))

// Utilizar o ID da transação ou o ID externo para localizar
val transactionParameter = TransactionQueryParameters(
transactionId = "1", // (transactionId) NSU da Transação
// externalId = "123456" // ID externo da transação
)

paykit.getTransaction(transactionParameter, object : Callback<TransactionQueryResult?> {
override fun execute(result: TransactionQueryResult?) {
Log.i("TransactionQueryResult", "Transaction: ${result}")
}
})
}
}

TransactionQueryResult

O objeto TransactionQueryResult, retornado no callback da transação, contém informações da consulta.

CampoTipoDescrição
idString?Identificador único da transação.
externalIdString?Identificador externo da transação (Informado pela automação comercial).
processorPaymentProcessor?Indica o processador da transação (STONE, TEF, REDE, GETNET, PAGSEGURO, VERO, CIELO, SICOOB, SITEF).
statusTransactionStatus?Status da transação (PENDING, APPROVED, CANCELLED, PARTIALLY_CANCELLED, ERROR, DECLINED).
amountBigDecimal?Representa o valor da transação.
dateTimeDate?Representa data e hora da transação.
messageString?Mensagem de retorno (sucesso ou erro).
paymentTypePaymentType?Método de pagamento (CREDIT, DEBIT, VOUCHER, PIX, WALLET, FLEET, QR_CODE).
transactionTypeTransactionType?Modalidade da transação (CreditTransactionType, DebitTransactionType, VoucherTransactionType).
nsuInfoNsuInfo?Representa dados de NSU do retorno transacional da adquirente.
transactionInfoTransactionInfo?Representa dados de retorno transacional da adquirente.
rawDataMap<String, String>?Retorno estilo chave/valor recebido do provedor.

Localizar Transações Pendentes

Alguns provedores de pagamento, como, por exemplo, Stone, não possuem consulta de transações. Entretanto eles conseguem garantir sempre o envio do retorno da transação, mesmo que a aplicação da automação comercial seja fechado durante um pagamento ou cancelamento em curso. O SDK Único persiste essa informação e disponibiliza uma consulta para isso. A função getUnprocessedTransactionResults pode ser utilizada para isso em conjunto com a função changeTransactionStatus para que a automação comercial possa marcar essa transação como processada.

Exemplo

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.linx.paykit.common.Callback
import com.linx.paykit.common.TransactionQueryResult
import com.linx.paykit.common.builder.Parameters
import com.linx.paykit.common.parameter.TransactionQueryParameters
import com.linx.paykit.core.Paykit
import com.linx.paykit.core.PaykitFactory

class MainActivity : AppCompatActivity() {

private lateinit var paykit: Paykit

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

paykit = PaykitFactory().build(Parameters(this, "Busca Transações não Processadas", PaykitId("PAYKIT_ID")))

// Utilizar o ID da transação ou o ID externo para localizar
val transactionParameter = TransactionQueryParameters(
externalId = "123456" // ID externo da transação
)

paykit.getUnprocessedTransactionResults(transactionParameter, object : Callback<List<TransactionQueryResult>> {
override fun execute(result: List<TransactionQueryResult>) {
for (transaction in result) {
Log.i("TransactionQueryResult", "Transaction: ${transaction}")
val myId = transaction.externalId

// Processa resultado da transação
//...

// Informa o SDK Único que a transação foi processada

paykit.changeTransactionStatus(
TransactionQueryParameters(null, myId),
TransactionStatus.COMPLETED
) {
Log.i("TransactionQueryResult", "Transaction: ${myId}, Updated = ${it}")
}
}
}
})
}
}

Este conteúdo foi útil para você?