Reagindo às mensagens
Aqui, obtemos a referência ao LiveData onMessage e começamos a observá-lo:
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.
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.
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.
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.
TerminalPaymentSuccessViewData
result → TransactionCompleted 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./
TerminalPaymentErrorViewData
Retornado quando um erro de pagamento é detectado.
errorCause→ Enumeração de possíveis falhasexception→ Throwable retornado pelo SDK de pagamento, usado apenas para depuraçãodiscretionaryTagData→ 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

