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
| Campo | Tipo | Descrição |
|---|---|---|
transactionId | String? | NSU da Transação. |
externalId | String? | ID externo da transação (informado pela automação comercial). |
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.
| Campo | Tipo | Descrição |
|---|---|---|
id | String? | Identificador único da transação. |
externalId | String? | Identificador externo da transação (Informado pela automação comercial). |
processor | PaymentProcessor? | Indica o processador da transação (STONE, TEF, REDE, GETNET, PAGSEGURO, VERO, CIELO, SICOOB, SITEF). |
status | TransactionStatus? | Status da transação (PENDING, APPROVED, CANCELLED, PARTIALLY_CANCELLED, ERROR, DECLINED). |
amount | BigDecimal? | Representa o valor da transação. |
dateTime | Date? | Representa data e hora da transação. |
message | String? | Mensagem de retorno (sucesso ou erro). |
paymentType | PaymentType? | Método de pagamento (CREDIT, DEBIT, VOUCHER, PIX, WALLET, FLEET, QR_CODE). |
transactionType | TransactionType? | Modalidade da transação (CreditTransactionType, DebitTransactionType, VoucherTransactionType). |
nsuInfo | NsuInfo? | Representa dados de NSU do retorno transacional da adquirente. |
transactionInfo | TransactionInfo? | Representa dados de retorno transacional da adquirente. |
rawData | Map<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ê?