Cancelamento

Cancelamento

  • Faz-se uso da classe DesktopPluginVoidRequestBuilder.

Exemplo de Cancelamento

val voidRequest = DesktopPlugin.createVoidRequestBuilder()
    .callback(object: Callback<VoidResponse>() {
        override fun onStart() {
            handleInitVoidTransaction()
        }

        override fun onSuccess(response: VoidResponse) {
            handleSucessfullVoid(response)
        }

        override fun onFail(error: Throwable) {
            handleVoidFailure(error)
        }

        override fun onComplete() {
            handleFinishVoidTransaction()
        }
    })
    .messageCallback(object: Callback<MessageCallbackRequestField.MessageData>() {
        override fun onSuccess(response: MessageCallbackRequestField.MessageData) {
            displayMessage()
        }

        override fun onFail(error: Throwable) {}
    })
    .voidTransactionCallback(object: Callback<UserSelection<VoidTransaction>>() {
        override fun onFail(error: Throwable) {}

        override fun onSuccess(response: UserSelection<VoidTransaction>) {
            val list = response
            assembleList(list)
        }
    })
    .build()

Zoop.post(voidRequest)

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 VoidResponsecontendo um *TransactionData, contendo todos os dados da transação.
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 como error.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.

Referência:

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
    var transactionId: String?,         // Id da transação
    val receiptId: String? = null,      // Id do recibo, caso aplicável (hoje, apenas transações Pix)
    val pixId: String? = null,          // Id do Pix
    val cardFingerprint: String? = null // Token único do cartão.
)
.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 (a lista é forncida neste callback).
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.
OnFail -> Não recebe nenhum dado, esta callback não é chamada.

Referência:

public final data class VoidTransaction(
    val id: String,
    val amount: String,
    val option: Option,
    val cardBrand: CardBrand,
    val date: String,
    val time: String
)
Observações
  • Deverá ser apresentada uma listagem de transações para o usuário, onde uma delas deverá ser selecionada. Então, a transação será cancelada e notificada na messageCallback.
  • A transação é selecionada utilizando o método: response.select(VoidTransaction) no objeto UserSelection<VoidTransaction>.
  • O tempo de seleção para transação de cancelamento é de 30 segundos. Esgotado esse tempo, a operação será cancelada e notificada na messageCallback.