From 3ceaeb30c2eb1566f5580923c4965d7c23bd7806 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 30 Jul 2020 17:05:05 -0300 Subject: [wallet] upgrade payment flow to new API --- .../src/main/java/net/taler/wallet/payment/PaymentManager.kt | 11 +++++++---- .../main/java/net/taler/wallet/payment/PaymentResponses.kt | 12 +++++++++++- .../java/net/taler/wallet/payment/PromptPaymentFragment.kt | 7 ++++--- 3 files changed, 22 insertions(+), 8 deletions(-) (limited to 'wallet/src/main/java') diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt index c6351ee..2427afb 100644 --- a/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt +++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentManager.kt @@ -26,6 +26,8 @@ import net.taler.common.Amount import net.taler.common.ContractTerms import net.taler.wallet.TAG import net.taler.wallet.backend.WalletBackendApi +import net.taler.wallet.payment.PayStatus.AlreadyPaid +import net.taler.wallet.payment.PayStatus.InsufficientBalance import net.taler.wallet.payment.PreparePayResponse.AlreadyConfirmedResponse import net.taler.wallet.payment.PreparePayResponse.InsufficientBalanceResponse import net.taler.wallet.payment.PreparePayResponse.PaymentPossibleResponse @@ -40,7 +42,8 @@ sealed class PayStatus { data class Prepared( val contractTerms: ContractTerms, val proposalId: String, - val totalFees: Amount + val amountRaw: Amount, + val amountEffective: Amount ) : PayStatus() data class InsufficientBalance(val contractTerms: ContractTerms) : PayStatus() @@ -74,9 +77,9 @@ class PaymentManager( val response: PreparePayResponse = mapper.readValue(result.toString()) Log.e(TAG, "PreparePayResponse $response") mPayStatus.value = when (response) { - is PaymentPossibleResponse -> TODO() - is InsufficientBalanceResponse -> TODO() - is AlreadyConfirmedResponse -> TODO() + is PaymentPossibleResponse -> response.toPayStatusPrepared() + is InsufficientBalanceResponse -> InsufficientBalance(response.contractTerms) + is AlreadyConfirmedResponse -> AlreadyPaid } } } diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt index d2f8e6c..1ff8867 100644 --- a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt +++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt @@ -19,6 +19,7 @@ package net.taler.wallet.payment import com.fasterxml.jackson.annotation.JsonTypeInfo import com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME import com.fasterxml.jackson.annotation.JsonTypeName +import net.taler.common.Amount import net.taler.common.ContractTerms @JsonTypeInfo(use = NAME, property = "status") @@ -26,8 +27,17 @@ sealed class PreparePayResponse(open val proposalId: String) { @JsonTypeName("payment-possible") data class PaymentPossibleResponse( override val proposalId: String, + val amountRaw: Amount, + val amountEffective: Amount, val contractTerms: ContractTerms - ) : PreparePayResponse(proposalId) + ) : PreparePayResponse(proposalId) { + fun toPayStatusPrepared() = PayStatus.Prepared( + contractTerms = contractTerms, + proposalId = proposalId, + amountRaw = amountRaw, + amountEffective = amountEffective + ) + } @JsonTypeName("insufficient-balance") data class InsufficientBalanceResponse( diff --git a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt index 6f806b7..ce2b6f7 100644 --- a/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/payment/PromptPaymentFragment.kt @@ -95,7 +95,8 @@ class PromptPaymentFragment : Fragment(), ProductImageClickListener { when (payStatus) { is PayStatus.Prepared -> { showLoading(false) - showOrder(payStatus.contractTerms, payStatus.totalFees) + val fees = payStatus.amountEffective - payStatus.amountRaw + showOrder(payStatus.contractTerms, fees) confirmButton.isEnabled = true confirmButton.setOnClickListener { model.showProgressBar.value = true @@ -109,7 +110,7 @@ class PromptPaymentFragment : Fragment(), ProductImageClickListener { } is PayStatus.InsufficientBalance -> { showLoading(false) - showOrder(payStatus.contractTerms, null) + showOrder(payStatus.contractTerms) errorView.setText(R.string.payment_balance_insufficient) errorView.fadeIn() } @@ -141,7 +142,7 @@ class PromptPaymentFragment : Fragment(), ProductImageClickListener { } } - private fun showOrder(contractTerms: ContractTerms, totalFees: Amount?) { + private fun showOrder(contractTerms: ContractTerms, totalFees: Amount? = null) { orderView.text = contractTerms.summary adapter.setItems(contractTerms.products) if (contractTerms.products.size == 1) paymentManager.toggleDetailsShown() -- cgit v1.2.3