summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-02-03 09:52:33 -0300
committerTorsten Grote <t@grobox.de>2020-02-03 09:52:33 -0300
commit5be8ea6403fbb7026c8df3402014dd375aa94458 (patch)
tree22dd03933843c2706483d4613f137a3e62ca7c13 /app
parent98125ea57089b714a1fe44bf1f22520928aa0f3b (diff)
downloadmerchant-terminal-android-5be8ea6403fbb7026c8df3402014dd375aa94458.tar.gz
merchant-terminal-android-5be8ea6403fbb7026c8df3402014dd375aa94458.tar.bz2
merchant-terminal-android-5be8ea6403fbb7026c8df3402014dd375aa94458.zip
Add ordered products to order's contract terms
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/net/taler/merchantpos/MainViewModel.kt2
-rw-r--r--app/src/main/java/net/taler/merchantpos/config/ConfigManager.kt4
-rw-r--r--app/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt18
3 files changed, 20 insertions, 4 deletions
diff --git a/app/src/main/java/net/taler/merchantpos/MainViewModel.kt b/app/src/main/java/net/taler/merchantpos/MainViewModel.kt
index 716c1e7..c07c996 100644
--- a/app/src/main/java/net/taler/merchantpos/MainViewModel.kt
+++ b/app/src/main/java/net/taler/merchantpos/MainViewModel.kt
@@ -22,7 +22,7 @@ class MainViewModel(app: Application) : AndroidViewModel(app) {
val configManager = ConfigManager(app, viewModelScope, mapper, queue).apply {
addConfigurationReceiver(orderManager)
}
- val paymentManager = PaymentManager(configManager, queue)
+ val paymentManager = PaymentManager(configManager, queue, mapper)
@Deprecated("Use ConfigManager instead!", ReplaceWith("configManager.merchantConfig"))
val merchantConfig
diff --git a/app/src/main/java/net/taler/merchantpos/config/ConfigManager.kt b/app/src/main/java/net/taler/merchantpos/config/ConfigManager.kt
index 563394f..5bc8e4b 100644
--- a/app/src/main/java/net/taler/merchantpos/config/ConfigManager.kt
+++ b/app/src/main/java/net/taler/merchantpos/config/ConfigManager.kt
@@ -128,8 +128,8 @@ class ConfigManager(
.apply()
}
- private fun onNetworkError(it: VolleyError) {
- val authError = it.networkResponse.statusCode == 401
+ private fun onNetworkError(it: VolleyError?) {
+ val authError = it?.networkResponse?.statusCode == 401
mConfigUpdateResult.value = ConfigUpdateResult(null, authError)
}
diff --git a/app/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt b/app/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt
index 5f8935e..bb030e2 100644
--- a/app/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt
+++ b/app/src/main/java/net/taler/merchantpos/payment/PaymentManager.kt
@@ -11,10 +11,13 @@ import com.android.volley.RequestQueue
import com.android.volley.Response.ErrorListener
import com.android.volley.Response.Listener
import com.android.volley.VolleyError
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.databind.node.ObjectNode
import net.taler.merchantpos.config.ConfigManager
import net.taler.merchantpos.config.MerchantRequest
import net.taler.merchantpos.order.Order
import net.taler.merchantpos.order.getTotalAsString
+import org.json.JSONArray
import org.json.JSONObject
import java.util.concurrent.TimeUnit.MINUTES
import java.util.concurrent.TimeUnit.SECONDS
@@ -24,7 +27,8 @@ private val CHECK_INTERVAL = SECONDS.toMillis(1)
class PaymentManager(
private val configManager: ConfigManager,
- private val queue: RequestQueue
+ private val queue: RequestQueue,
+ private val mapper: ObjectMapper
) {
private val mPayment = MutableLiveData<Payment>()
@@ -62,6 +66,7 @@ class PaymentManager(
// fulfillment_url needs to be unique per order
put("fulfillment_url", "https://example.com/${order.hashCode()}")
put("instance", "default")
+ put("products", order.getProductsJson())
})
}
@@ -72,6 +77,17 @@ class PaymentManager(
queue.add(req)
}
+ private fun Order.getProductsJson(): JSONArray {
+ val json = JSONArray()
+ forEach { product, quantity ->
+ val node = mapper.valueToTree<ObjectNode>(product).apply {
+ put("quantity", quantity)
+ }
+ json.put(JSONObject(mapper.writeValueAsString(node)))
+ }
+ return json
+ }
+
private fun onOrderCreated(orderResponse: JSONObject) {
val orderId = orderResponse.getString("order_id")
mPayment.value = mPayment.value!!.copy(orderId = orderId)