diff options
author | Torsten Grote <t@grobox.de> | 2020-02-03 09:52:33 -0300 |
---|---|---|
committer | Torsten Grote <t@grobox.de> | 2020-02-03 09:52:33 -0300 |
commit | 5be8ea6403fbb7026c8df3402014dd375aa94458 (patch) | |
tree | 22dd03933843c2706483d4613f137a3e62ca7c13 /app | |
parent | 98125ea57089b714a1fe44bf1f22520928aa0f3b (diff) | |
download | merchant-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')
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) |