summaryrefslogtreecommitdiff
path: root/app/src/main/java/net/taler/merchantpos
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2019-09-01 18:32:32 +0200
committerFlorian Dold <florian.dold@gmail.com>2019-09-01 18:32:32 +0200
commitd783859b7928566090c88be05c6cf3871de6fbf2 (patch)
tree26bbb7fc6507b82f3438cd003397696f4bc3003f /app/src/main/java/net/taler/merchantpos
parent2a457a1c46a5da4985035d8bff1db914de161049 (diff)
downloadmerchant-terminal-android-d783859b7928566090c88be05c6cf3871de6fbf2.tar.gz
merchant-terminal-android-d783859b7928566090c88be05c6cf3871de6fbf2.tar.bz2
merchant-terminal-android-d783859b7928566090c88be05c6cf3871de6fbf2.zip
support for new backend API, bug fixes
Diffstat (limited to 'app/src/main/java/net/taler/merchantpos')
-rw-r--r--app/src/main/java/net/taler/merchantpos/CreatePayment.kt49
-rw-r--r--app/src/main/java/net/taler/merchantpos/MainActivity.kt2
-rw-r--r--app/src/main/java/net/taler/merchantpos/MerchantConfig.kt6
-rw-r--r--app/src/main/java/net/taler/merchantpos/MerchantSettings.kt12
-rw-r--r--app/src/main/java/net/taler/merchantpos/PosTerminalViewModel.kt2
-rw-r--r--app/src/main/java/net/taler/merchantpos/ProcessPayment.kt2
6 files changed, 33 insertions, 40 deletions
diff --git a/app/src/main/java/net/taler/merchantpos/CreatePayment.kt b/app/src/main/java/net/taler/merchantpos/CreatePayment.kt
index e07802f..c6a8066 100644
--- a/app/src/main/java/net/taler/merchantpos/CreatePayment.kt
+++ b/app/src/main/java/net/taler/merchantpos/CreatePayment.kt
@@ -1,14 +1,12 @@
package net.taler.merchantpos
-import android.content.Context
-import android.net.Uri
import android.os.Bundle
-import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.EditText
+import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import androidx.navigation.fragment.findNavController
import com.android.volley.Request
@@ -16,28 +14,30 @@ import com.android.volley.RequestQueue
import com.android.volley.Response
import com.android.volley.VolleyError
import com.android.volley.toolbox.Volley
-import org.json.JSONObject
import com.google.android.material.snackbar.Snackbar
+import org.json.JSONObject
-// TODO: Rename parameter arguments, choose names that match
-// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
-private const val ARG_PARAM1 = "param1"
-private const val ARG_PARAM2 = "param2"
-
/**
- * A simple [Fragment] subclass.
- * Activities that contain this fragment must implement the
- * [CreatePayment.OnFragmentInteractionListener] interface
- * to handle interaction events.
- * Use the [CreatePayment.newInstance] factory method to
- * create an instance of this fragment.
- *
+ * Fragment that allows the merchant to create a payment.
*/
class CreatePayment : Fragment() {
private lateinit var queue: RequestQueue
private lateinit var model: PosTerminalViewModel
+ private var paused: Boolean = false
+
+
+ override fun onPause() {
+ super.onPause()
+ this.paused = true
+ }
+
+ override fun onResume() {
+ super.onResume()
+ this.paused = false
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -54,16 +54,16 @@ class CreatePayment : Fragment() {
model.activeAmount = amount
model.activeSubject = activity!!.findViewById<EditText>(R.id.edit_payment_subject).text
- var order = JSONObject().also {
+ val order = JSONObject().also {
it.put("amount", amount)
it.put("summary", model.activeSubject!!)
it.put("fulfillment_url", "https://example.com")
it.put("instance", "default")
}
- var reqBody = JSONObject().also { it.put("order", order) }
+ val reqBody = JSONObject().also { it.put("order", order) }
- var req = MerchantInternalRequest(
+ val req = MerchantInternalRequest(
Request.Method.POST,
model.merchantConfig!!,
"order",
@@ -73,7 +73,6 @@ class CreatePayment : Fragment() {
Response.ErrorListener { onNetworkError(it) })
queue.add(req)
-
}
private fun onNetworkError(volleyError: VolleyError?) {
@@ -87,18 +86,24 @@ class CreatePayment : Fragment() {
val params = mapOf("order_id" to orderId, "instance" to merchantConfig.instance)
model.activeOrderId = orderId
- var req = MerchantInternalRequest(Request.Method.GET, model.merchantConfig!!, "check-payment", params, null,
+ val req = MerchantInternalRequest(Request.Method.GET, model.merchantConfig!!, "check-payment", params, null,
Response.Listener { onCheckPayment(it) }, Response.ErrorListener { onNetworkError(it) })
queue.add(req)
}
+ /**
+ * Called when the /check-payment response gave a result.
+ */
private fun onCheckPayment(checkPaymentResponse: JSONObject) {
+ if (paused) {
+ return
+ }
if (checkPaymentResponse.getBoolean("paid")) {
val mySnackbar = Snackbar.make(view!!, "Already paid?!", Snackbar.LENGTH_SHORT)
mySnackbar.show()
return
}
- model.activeContractUri = checkPaymentResponse.getString("contract_url")
+ model.activeTalerPayUri = checkPaymentResponse.getString("taler_pay_uri")
findNavController().navigate(R.id.action_createPayment_to_processPayment)
}
diff --git a/app/src/main/java/net/taler/merchantpos/MainActivity.kt b/app/src/main/java/net/taler/merchantpos/MainActivity.kt
index 23d0417..e8e9a2a 100644
--- a/app/src/main/java/net/taler/merchantpos/MainActivity.kt
+++ b/app/src/main/java/net/taler/merchantpos/MainActivity.kt
@@ -158,7 +158,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
isoDep.transceive(apduSelectFile())
- val contractUri: String? = model.activeContractUri
+ val contractUri: String? = model.activeTalerPayUri
if (contractUri != null) {
isoDep.transceive(apduPutTalerData(1, contractUri.toByteArray()))
diff --git a/app/src/main/java/net/taler/merchantpos/MerchantConfig.kt b/app/src/main/java/net/taler/merchantpos/MerchantConfig.kt
index b0552c1..3e043a0 100644
--- a/app/src/main/java/net/taler/merchantpos/MerchantConfig.kt
+++ b/app/src/main/java/net/taler/merchantpos/MerchantConfig.kt
@@ -6,10 +6,8 @@ data class MerchantConfig(val baseUrl: String, val instance: String, val apiKey:
fun urlFor(endpoint: String, params: Map<String, String>?): String {
val uriBuilder = Uri.parse(baseUrl).buildUpon()
uriBuilder.appendPath(endpoint)
- if (params != null) {
- params.forEach {
- uriBuilder.appendQueryParameter(it.key, it.value)
- }
+ params?.forEach {
+ uriBuilder.appendQueryParameter(it.key, it.value)
}
return uriBuilder.toString()
}
diff --git a/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt b/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
index e3dffb4..1903bce 100644
--- a/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
+++ b/app/src/main/java/net/taler/merchantpos/MerchantSettings.kt
@@ -8,19 +8,9 @@ import android.view.ViewGroup
/**
- * A simple [Fragment] subclass.
- * Activities that contain this fragment must implement the
- * [MerchantSettings.OnFragmentInteractionListener] interface
- * to handle interaction events.
- * Use the [MerchantSettings.newInstance] factory method to
- * create an instance of this fragment.
- *
+ * Fragment that displays merchant settings.
*/
class MerchantSettings : Fragment() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- }
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
diff --git a/app/src/main/java/net/taler/merchantpos/PosTerminalViewModel.kt b/app/src/main/java/net/taler/merchantpos/PosTerminalViewModel.kt
index bcbc0c8..a6548e4 100644
--- a/app/src/main/java/net/taler/merchantpos/PosTerminalViewModel.kt
+++ b/app/src/main/java/net/taler/merchantpos/PosTerminalViewModel.kt
@@ -8,7 +8,7 @@ class PosTerminalViewModel : ViewModel() {
var merchantConfig: MerchantConfig? = null
var activeOrderId: String? = null
var activeAmount: String? = null
- var activeContractUri: String? = null
+ var activeTalerPayUri: String? = null
fun activeAmountPretty(): String? {
val amount = activeAmount ?: return null
diff --git a/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt b/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
index 26ef1c7..fbd60c6 100644
--- a/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
+++ b/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
@@ -112,7 +112,7 @@ class ProcessPayment : Fragment() {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_process_payment, container, false)
val img = view.findViewById<ImageView>(R.id.qrcode)
- val talerPayUrl = "talerpay:" + URLEncoder.encode(model.activeContractUri!!, "utf-8")
+ val talerPayUrl = model.activeTalerPayUri!!;
val myBitmap = makeQrCode(talerPayUrl)
img.setImageBitmap(myBitmap)
val cancelPaymentButton = view.findViewById<Button>(R.id.button_cancel_payment)