For the complete documentation index, see llms.txt. This page is also available as Markdown.

Reagindo às mensagens

Aqui, obtemos a referência ao LiveData onMessage e começamos a observá-lo:

É importante observar o onMessage dentro do ciclo de vida correto, garantindo que não haja vazamentos de memória ou reações inesperadas.

private fun setupObserver() {
   mppProviderViewModel.onMessage.observe(this, ::onMessage)
}

O MPPPProviderViewModel fornece o LiveData onMessage, que receberá um objeto 'estendido' da classe MPPViewData'extended' object from the MPPViewData class.

Nota: Algumas classes MPPViewData contêm objetos que ajudam a entender a mensagem que deve ser exibida em uma etapa específica..

E reagimos aos eventos da seguinte forma

  private fun onMessage(viewData: MPPViewData?) {
        viewData?.let {
            when (viewData) {
                MPPViewData.TerminalInitializingViewData -> {
                    showLoadingDialog("Inicializando terminal")
                    binding.tvMessage.text = "Inicializando terminal"
                }

                MPPViewData.TerminalInitializingErrorViewData -> {
                    showFeedbackDialog("Erro ao inicializar terminal")
                    progressDialog.dismiss()
                }

                MPPViewData.TerminalInitializingSuccessViewData -> {
                    progressDialog.dismiss()
                    binding.tvMessage.text = "Inicialização concluída"
                }
                
                //Mapear todos os cenários de MPPViewData

            }
        }
    }

Neste projeto, usamos o conceito de Sealed Classes para uma abstração mais eficiente. Abaixo, listamos todos os objetos que podem ser retornados em onMessage e seus respectivos significados.

Class
Descrição do uso

TerminalInitializingViewData

O terminal iniciou o processo de inicialização.

TerminalInitializingErrorViewData

O terminal concluiu o processo de inicialização com um erro.

TerminalInitializingSuccessViewData

O terminal concluiu com sucesso o processo de inicialização.

TerminalNotCreatedViewData

A instância do terminal ainda não foi criada.

TerminalCreatingViewData

A instância do terminal está sendo criada.

TerminalCreatedSuccessViewData

A instância do terminal foi criada com sucesso.

TerminalCreatedErrorViewData

A instância do terminal não foi criada.

TerminalSessionCreatingViewData

A sessão de pagamento está sendo criada.

TerminalSessionCreatedSuccessViewData

A sessão de pagamento foi criada com sucesso.

TerminalSessionCreatedErrorViewData

A sessão de pagamento não foi criada.

TerminalSessionTimeoutViewData

A sessão de pagamento expirou.

TerminalPaymentStartingViewData

O processo de transação foi iniciado.

TerminalPaymentProcessingViewData

A transação está sendo processada.

TerminalPaymentCancelledViewData

A transação foi cancelada.

TerminalPaymentSuccessViewData

A transação foi concluída com sucesso.

TerminalPaymentErrorViewData

A transação foi concluída com erro.

TerminalPaymentFinishedViewData

O processo inteiro foi concluído.

TerminalRefundViewData

Etapa onde será retornada a lista de transações ou o recibo de cancelamento.

TerminalPaymentValueBelowMinimunLimitViewData

O valor do pagamento está abaixo do valor minimo(Necessário setar um valor minimo para o funcionamento desse recurso).

PaymentInformationInvalidViewData

As condições da transação estão incorretas(ex: uma transação de débito está com números de parcelas acima de 1).

OperationErrorViewData

Durante o fluxo de listagem ou de reembolso,caso ocorra algum erro durante a requisição com back-end,será notificado esse viewData para tratamento.

A seguir, explicaremos com mais detalhes as mensagens retornadas na interface onMessage, que são extensões do objeto MPPViewData.

As classes não detalhadas abaixo não possuem variáveis internas. Nesses casos, siga as orientações descritas na Tabela 2 – Lista de Retorno OnMessage.

1

TerminalCreatedErrorViewData | TerminalSessionCreatedErrorViewData

  • cause → Objeto Throwable retornado pelo SDK de pagamento, usado apenas para depuração.

  • logMessage → Conversão de cause para uma String.

2

TerminalPaymentProcessingViewData

uiMessage → Enumeração de todos os cenários possíveis durante o processamento de informações do cartão, incluindo:

  • APPROVED

  • NOT_AUTHORISED

  • PLEASE_ENTER_PIN

  • PROCESSING_ERROR

  • PRESENT_CARD

  • CARD_READ_OK_PLEASE_REMOVE

  • APPROVED_PLEASE_SIGN

  • AUTHORISING_PLEASE_WAIT

  • TRY_ANOTHER_CARD

  • CLEAR_DISPLAY

  • SEE_PHONE

  • PRESENT_CARD_AGAIN

  • HOLD_STILL

  • UNKNOWN

Uma mensagem padrão é fornecida para exibição na tela, mas os desenvolvedores têm a liberdade de personalizá-la, desde que cumpram as regulamentações da ABECS.

3

TerminalPaymentCancelledViewData

reason → Enumeração de cenários de erro que ocorrem durante a leitura e captura de informações do cartão, incluindo

  • TRANSACTION_WAS_TERMINATED

  • USER_CANCELLED_PIN_PAD

  • SESSION_DEACTIVATED

  • DEVICE_STATE_FAILURE

  • TIME_CHECK_ERROR

  • UNKNOWN

Uma mensagem padrão é fornecida para exibição na tela, mas os desenvolvedores têm a liberdade de personalizá-la, desde que cumpram as regulamentações da ABECS.

4

TerminalPaymentSuccessViewData

resultTransactionCompleted objeto contendo todos os detalhes do pagamento

Note: Isso não garante que a transação foi concluída com sucesso, pois podem ter ocorrido problemas com o adquirente. Todos os campos serão explicados nas seções seguintes.

cardHolder

Quando disponível, retorna a bandeira do cartão utilizada para a transação:

  • MASTERCARD

  • VISA

  • AMERICAN_EXPRESS

  • DISCOVER

  • EFTPOS

  • UNKNOWN

discretionaryTagData

Retorna as Tags EMV lidas pelo SDK. Dois métodos são fornecidos para melhor abstração:

  • getDiscretionaryTagDataHashMap() → Retorna um array de chave-valor contendo EMVTag e seu valor.

  • getDiscretionaryTagDataPrintable() → Mesma função acima, mas retorna uma String formatada para exibição.

metaData

Um ByteArray de metadados retornado pelo backend. Dois métodos estão disponíveis para melhor interpretação::

  • getMetaDataTranslated() → Retorna um objeto Metadata analisado com informações adicionais.

  • getMetaDataString() → mesmo que o método acima, mas retorna uma String formatada em JSON.

processingResult

Este objeto, como uma SealedClass, pode ter duas abstrações:

TransactionApproved

cardScheme → Quando disponível, retorna a bandeira do cartão utilizada na transação:/

  • MASTERCARD

  • VISA

  • AMERICAN_EXPRESS

  • DISCOVER

  • EFTPOS

  • UNKNOWN

TransactionNotAuthorised

reason → Enumeração de motivos de falha na autorização, incluindo:

  • ONLINE_DECLINED

  • OFFLINE_DECLINED

  • INVALID_AUTHORISATION_DATA

  • NO_CARD_APPLICATION

  • NO_CARD_APPLICATION_SELECTOR_MISMATCHED

  • PROCESSING_ERROR

  • CARD_ERROR

  • UNKNOWN

Uma mensagem padrão é fornecida para exibição na tela, mas os desenvolvedores têm a liberdade de personalizá-la, desde que cumpram as regulamentações da ABECS.

serviceTransactionId

Um identificador único para a transação (UUID).

uiMessage

Enumeração de todos os cenários possíveis durante o processamento de informações do cartão:

  • ONLINE_DECLINED

  • OFFLINE_DECLINED

  • INVALID_AUTHORISATION_DATA

  • NO_CARD_APPLICATION

  • NO_CARD_APPLICATION_SELECTOR_MISMATCHED

  • PROCESSING_ERROR

  • CARD_ERROR

  • UNKNOWN

subMessage

Tradução para Português Uma enumeração de submensagens que também devem ser exibidas quando retornadas, seguindo os padrões ABECS./

5

TerminalPaymentErrorViewData

Retornado quando um erro de pagamento é detectado.

  • errorCause → Enumeração de possíveis falhas

  • exception → Throwable retornado pelo SDK de pagamento, usado apenas para depuração

  • discretionaryTagData → Retorno de chave-valor das Tags EMV lidas pelo SDK.

Uma mensagem padrão é fornecida para exibição na tela, mas os desenvolvedores têm a liberdade de personalizá-la desde que cumpram as regulamentações da ABECS.

Atualizado