From 5b1163311192e9adf15ef3d626c72812e638f90c Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 3 Aug 2020 13:31:26 -0300 Subject: [pos] improve payment processing - cancel orders that have been abandoned and will not be paid - show unpaid orders in history (in case one makes it through) - set deadlines when creating orders in case it helps with enabling refunds --- .../main/java/net/taler/merchantpos/payment/PaymentManager.kt | 9 ++++++++- .../java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/payment') diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt index fc4f642..bc1e35f 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt @@ -25,13 +25,16 @@ import androidx.lifecycle.MutableLiveData import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import net.taler.common.Duration import net.taler.merchantlib.CheckPaymentResponse import net.taler.merchantlib.MerchantApi +import net.taler.merchantlib.PostOrderRequest import net.taler.merchantlib.PostOrderResponse import net.taler.merchantpos.MainActivity.Companion.TAG import net.taler.merchantpos.R import net.taler.merchantpos.config.ConfigManager import net.taler.merchantpos.order.Order +import java.util.concurrent.TimeUnit.HOURS import java.util.concurrent.TimeUnit.MINUTES import java.util.concurrent.TimeUnit.SECONDS @@ -65,7 +68,11 @@ class PaymentManager( val merchantConfig = configManager.merchantConfig!! mPayment.value = Payment(order, order.summary, configManager.currency!!) scope.launch(Dispatchers.IO) { - val response = api.postOrder(merchantConfig, order.toContractTerms()) + val request = PostOrderRequest( + contractTerms = order.toContractTerms(), + refundDelay = Duration(HOURS.toMillis(1)) + ) + val response = api.postOrder(merchantConfig, request) response.handle(::onNetworkError, ::onOrderCreated) } } diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt index 5278a03..27ef366 100644 --- a/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt +++ b/merchant-terminal/src/main/java/net/taler/merchantpos/payment/ProcessPaymentFragment.kt @@ -60,6 +60,11 @@ class ProcessPaymentFragment : Fragment() { } } + override fun onDestroy() { + super.onDestroy() + paymentManager.cancelPayment(getString(R.string.error_cancelled)) + } + private fun onPaymentStateChanged(payment: Payment) { if (payment.error != null) { topSnackbar(requireView(), payment.error, LENGTH_LONG) -- cgit v1.2.3