Cancelamento
Cancelamento
Faz-se uso da classe mPOSVoidRequestBuilder
.
Na voidTransactionCallback
, deverá ser apresentada uma listagem de transações para o usuário. Neste ponto, uma transação deverá ser selecionada. Após a seleção, a transação deverá ser cancelada e notificada na messageCallback.
Dica
A transação é selecionada utilizando o método: response.select(transaction)
no objeto VoidTransaction
recebido na voidTransactionCallback
.
O tempo de seleção para transação de cancelamento é de 30 segundos, após, a operação será cancelada.
Exemplo
val voidRequest = MPOSPlugin.createVoidRequestBuilder()
.transactionId("")
.callback(object: Callback<mPOSVoidResponse>() {
override fun onStart() {
state = state.copy(status = Status.MESSAGE, message = "Processando")
}
override fun onSuccess(response: mPOSVoidResponse) {
state = state.copy(status = Status.MESSAGE, message = "Cancelamento realizado")
voidTransaction = null
}
override fun onFail(error: Throwable) {
state = state.copy(
status = Status.MESSAGE,
message = error.message ?: "Falha na operação"
)
voidTransaction = null
}
override fun onComplete() {
state = state.copy(status = Status.FINISHED, message = "")
}
})
.voidTransactionCallback(object: Callback<UserSelection<VoidTransaction>>() {
override fun onSuccess(response: UserSelection<VoidTransaction>) {
voidTransaction = response
state = state.copy(
transactionsList = voidTransaction!!.items.toList(),
status = Status.DISPLAY_VOID_LIST
)
}
override fun onFail(error: Throwable) {
}
})
.messageCallback(object: Callback<MessageCallbackRequestField.MessageData>() {
override fun onSuccess(response: MessageCallbackRequestField.MessageData) {
state = state.copy(status = Status.MESSAGE, message = response.message)
}
override fun onFail(error: Throwable) {
}
})
.build()
Zoop.post(voidRequest)
Parâmetros
.transactionId
Caso seja passado um transactionId
, o cancelamento será feito para a transação específica. Caso contrário, será feito o fluxo de listagem de transações. Ainda assim, a leitura do cartão será necessária.
transactionId
: ID da transação a ser cancelada.
Este é um parâmetro opcional, podendo ser omitido, null
ou vazio para seguir para o fluxo de listagem de transações.
Callbacks
.callback
Responsável pelo fluxo do cancelamento, início, processamento, conclusão (sucesso/falha).
onStart
Esta callback é sinalizada quando o fluxo do cancelamento começa, podendo ser sinalizado pela aplicação o início do processamento.
onSuccess
Neste momento, a transação foi cancelada, e você recebe o objeto MPOSVoidResponse
contendo um TransactionData
, contendo todos os dados da transação.
data class TransactionData(
val value: Int?, // Valor da transação em centavos
val paymentType: Int?, // Tipo de pagamento
val installments: Int?, // Parcelas
val status: String?, // Status (approved/canceled)
val brand: String?, // Marca do cartão ex: Visa
val address: String?, // Endereço do seller
val sellerName: String?, // Nome do seller
val acquiring: String?, // Adquirente
val pan: String?, // PAN do cartão
val autoCode: String?, // Código de autorização
val documentType: String?, // Tipo de documento, CPF/CNPJ
val document: String?, // Documento
val nsu: String?, // NSU
val date: String?, // Data da transação
val hour: String?, // Hora da transação
val cv: String?, // CV
val arqc: String?, // ARQC
val aid: String?, // AID
val sellerReceipt: String?, // Recibo do estabelecimento
val customerReceipt: String?, // Recibo do cliente
val approvalMessage: String?, // Mensagem de aprovação ex: APROVADA PELO EMISSOR
val aidLabel: String?, // Label do cartão
val transactionId: String?, // Id da transação
val receiptId: String? = null, // Id do recibo, caso aplicável (hoje, apenas transações Pix)
val pixId: Strting? = null, // Id do Pix
var cardFingerprint: String? = null, // Token único do cartão
val cardEntryMode: String? // Identifica qual o modo de entrada do cartão(TARJA, CHIP, NFC)
)
onFail
Falha no cancelamento, é recebido um exception, podendo ser do tipo:
ZoopPaymentException
: Falha no fluxo do pagamento, neste caso, passamos a mensagem de erro, podendo ser acessada comoexception.message
.ZoopTimeoutException
: Tempo excedido na operação.ZoopClosedConnectionException
: Conexão interrompida.ZoopNetworkException
: Falha de conexão.
onComplete
Sinaliza o final do fluxo do cancelamento, tanto em casos de sucesso/falha.
.messageCallback
Responsável pelas mensagens no fluxo do cancelamento. ex: “Aproxime, insira ou passe o cartão”.
onSuccess
Mensagem a ser exibida pela aplicação para o usuário, acessada como response.message
.
onFail
Não recebe nenhum dado, esta callback não é chamada.
.voidTransactionCallback
Responsável pela seleção da transação a ser cancelada, a partir de uma lista (fornecida neste callback).
A aplicação deverá exibir uma lista de transações para que o usuário selecione uma dentre elas em até 30 segundos. Esgotado esse limite de tempo, a operação será cancelada e notificada na messageCallback
.
Pode-se obter a lista de itens pela propriedade items
do objeto de UserSelection<VoidTransaction>
recebido em onSuccess()
. Seleciona-se a transação a cancelar pelo método select()
desse mesmo objeto.
onSuccess
É recebido um objeto UserSelection<VoidTransaction>
contendo um objeto iterable
(acessada por response.items
) a ser exibida pela aplicação para o usuário, a seleção de transação para cancelamento, é feita neste objeto. Cada item no objeto é uma transação.
data class VoidTransaction(
val id: String,
val amount: String,
val option: Option,
val cardBrand: CardBrand,
val date: String,
val time: String
)
onFail
Não recebe nenhum dado, esta callback não é chamada.