From e0c4ade93013bffd1ee4cf460f372e0636723493 Mon Sep 17 00:00:00 2001 From: "Serik.Uvaissov" Date: Sun, 2 Aug 2020 17:07:49 +0600 Subject: [PATCH] ui commit and debug fix --- android/app/build.gradle | 4 +- .../kassa/handler/CardPaymentHandlerImpl.java | 50 ++++++---- .../TransactionDetailsHandlerImpl.java | 92 +++++++++++++++++++ .../aman/kassa/plugins/BankNfcPlugins.java | 23 ++++- android/build.gradle | 3 +- lib/views/bank_view/bank_view.dart | 15 +++ 6 files changed, 161 insertions(+), 26 deletions(-) create mode 100644 android/app/src/main/java/kz/com/aman/kassa/handler/TransactionDetailsHandlerImpl.java diff --git a/android/app/build.gradle b/android/app/build.gradle index d5ef6df..311e2d5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -67,8 +67,8 @@ android { buildConfigField ("String[]", "SUPPORTED_DEVICES", collectSupportedDevicesToArray()) } debug { - applicationIdSuffix ".debug" - versionNameSuffix "-debug" + //applicationIdSuffix ".debug" + //versionNameSuffix "-debug" //resValue "string", "app_name", "Aman Kassa (debug)" defaultConfig { minSdkVersion 24 diff --git a/android/app/src/main/java/kz/com/aman/kassa/handler/CardPaymentHandlerImpl.java b/android/app/src/main/java/kz/com/aman/kassa/handler/CardPaymentHandlerImpl.java index 7adccaa..994f030 100644 --- a/android/app/src/main/java/kz/com/aman/kassa/handler/CardPaymentHandlerImpl.java +++ b/android/app/src/main/java/kz/com/aman/kassa/handler/CardPaymentHandlerImpl.java @@ -99,24 +99,39 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler deviceList) { System.out.println("----->---->---->onDeviceToUseSelectionRequested"); plugin.getActivity().runOnUiThread(() -> { - AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity()); - builder.setTitle("Choose device"); +// AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity()); +// builder.setTitle("Choose device"); +// +// Spinner deviceListSpinner = new Spinner(plugin.getActivity()); +// ArrayAdapter adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(deviceList)); +// adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); +// deviceListSpinner.setAdapter(adapter); +// +// builder.setPositiveButton("OK", (dialog, which) -> { +// plugin.getClientInterface() +// .getTransactionManager() +// .setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem()); +// dialog.dismiss(); +// }); +// +// builder.setView(deviceListSpinner); +// builder.create().show(); - Spinner deviceListSpinner = new Spinner(plugin.getActivity()); - ArrayAdapter adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(deviceList)); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - deviceListSpinner.setAdapter(adapter); - - builder.setPositiveButton("OK", (dialog, which) -> { - plugin.getClientInterface() - .getTransactionManager() - .setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem()); - dialog.dismiss(); - }); - - builder.setView(deviceListSpinner); - builder.create().show(); + if (deviceList != null && !deviceList.isEmpty()) { + for (Reader reader : deviceList) { + String name = reader.toString(); + System.out.println("name: " + name); + if (name.contains("SOFT")) { + plugin.getClientInterface() + .getTransactionManager() + .setCardReaderToUse(reader); + break; + } + } + } }); + + } @Override @@ -250,7 +265,7 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler { this.callbackResult.success("success"); Toast.makeText(plugin.getActivity(), "Transaction data has been received", Toast.LENGTH_LONG) - .show(); + .show(); }); } @@ -430,7 +445,6 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler---->---->onCreatePinPadButtons"); diff --git a/android/app/src/main/java/kz/com/aman/kassa/handler/TransactionDetailsHandlerImpl.java b/android/app/src/main/java/kz/com/aman/kassa/handler/TransactionDetailsHandlerImpl.java new file mode 100644 index 0000000..02acd59 --- /dev/null +++ b/android/app/src/main/java/kz/com/aman/kassa/handler/TransactionDetailsHandlerImpl.java @@ -0,0 +1,92 @@ +package kz.com.aman.kassa.handler; + +import android.app.AlertDialog; +import android.widget.ArrayAdapter; +import android.widget.Spinner; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; + +import kz.com.aman.kassa.bank.M4BankActivity; +import kz.com.aman.kassa.plugins.BankNfcPlugins; +import ru.m4bank.mpos.library.external.transactions.GetTransactionDetailsCallbackHandler; +import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler; +import ru.m4bank.mpos.service.data.dynamic.objects.Transaction; +import ru.m4bank.mpos.service.result.Result; + +public class TransactionDetailsHandlerImpl implements GetTransactionDetailsCallbackHandler, GetTransactionsListCallbackHandler { + private final BankNfcPlugins plugin; + + public TransactionDetailsHandlerImpl(BankNfcPlugins plugin) { + this.plugin = plugin; + } + + @Override + public void onTransactionDetailsReceived(Transaction transaction) { + plugin.getActivity().runOnUiThread(() -> { + System.out.println("getCheck:"+ transaction.getCheck()); + System.out.println("getCheckNumber:"+ transaction.getCheckNumber()); + Toast.makeText(plugin.getActivity(), "Transaction details received: " + transaction, Toast.LENGTH_SHORT) + .show(); + }); + + } + + @Override + public void onSuccessStatusTransaction(Transaction transaction) { + + } + + @Override + public void onErrorStatusTransaction() { + + } + + @Override + public void onTransactionsListReceived(List transactionList) { + plugin.getActivity().runOnUiThread(() -> { + AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity()); + builder.setTitle("Choose transaction"); + + Spinner transactionListSpinner = new Spinner(plugin.getActivity()); + ArrayAdapter adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(transactionList)); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + transactionListSpinner.setAdapter(adapter); + + builder.setPositiveButton("OK", (dialog, which) -> { + Transaction transaction = (Transaction) transactionListSpinner.getSelectedItem(); + plugin.getClientInterface() + .getTransactionManager() + .getTransactionDetails(this, transaction.getOperationalDayNumber(), transaction + .getTransactionNumber(), transaction.getMobileTerminalId()); + dialog.dismiss(); + }); + + builder.setView(transactionListSpinner); + builder.create().show(); + }); + + } + + @Override + public void notAuthorized() { + plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), "Not authorized", Toast.LENGTH_SHORT).show()); + } + + @Override + public void onCompleted(Result result) { + plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT) + .show()); + } + + @Override + public void onWrongApiCalled() { + plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), "Wrong method has been called", Toast.LENGTH_SHORT).show()); + } + + @Override + public void onRepeat(int attemptNumber) { + plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show()); + } +} diff --git a/android/app/src/main/java/kz/com/aman/kassa/plugins/BankNfcPlugins.java b/android/app/src/main/java/kz/com/aman/kassa/plugins/BankNfcPlugins.java index 685fb82..85ea329 100644 --- a/android/app/src/main/java/kz/com/aman/kassa/plugins/BankNfcPlugins.java +++ b/android/app/src/main/java/kz/com/aman/kassa/plugins/BankNfcPlugins.java @@ -19,14 +19,17 @@ import kz.com.aman.kassa.bank.permissions.PermissionsManagerImpl; import kz.com.aman.kassa.handler.AuthorizationHandlerImpl; import kz.com.aman.kassa.handler.CardPaymentHandlerImpl; import kz.com.aman.kassa.handler.ConnectionCheckHandlerImpl; +import kz.com.aman.kassa.handler.TransactionDetailsHandlerImpl; import ru.m4bank.mpos.library.M4BankMposClient; import ru.m4bank.mpos.library.M4BankMposClientInterfaceFacade; import ru.m4bank.mpos.library.M4BankMposParameters; import ru.m4bank.mpos.library.external.authorization.AuthorizationCallbackHandler; +import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler; import ru.m4bank.mpos.service.authorization.network.AuthorizationResponse; import ru.m4bank.mpos.service.commons.data.ConfigurationSettings; import ru.m4bank.mpos.service.commons.data.NetworkConfiguration; import ru.m4bank.mpos.service.commons.data.TerminalConfiguration; +import ru.m4bank.mpos.service.data.dynamic.objects.GetOperationType; import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.TransactionTypeConv; import ru.m4bank.mpos.service.network.Format; import ru.m4bank.mpos.service.network.ServerChoose; @@ -74,12 +77,12 @@ public class BankNfcPlugins implements MethodCallHandler { case "shutdown": shutdown(call, result); break; + case "transaction": + showTransaction(call, result); + break; case "version": - result.success("version: "+ Build.VERSION.SDK_INT); break; - - case "get": final List json = new ArrayList<>(); for (int i = 0; i < 2; i++) { @@ -178,10 +181,19 @@ public class BankNfcPlugins implements MethodCallHandler { } } + private void showTransaction(MethodCall call, Result result){ + clientInterface.getTransactionManager() + .getTransactionsList( + new TransactionDetailsHandlerImpl(this), + 20, 0, + GetOperationType.SHOW, + null); + } + private void cancel(MethodCall call, Result result) { try { clientInterface.cancel(); - result.success("canceled"); + result.success("success"); } catch (Exception e) { System.out.println("=============>ERROR:"+e.getMessage()); result.error("2", e.getMessage(), e.getLocalizedMessage()); @@ -191,7 +203,7 @@ public class BankNfcPlugins implements MethodCallHandler { private void shutdown(MethodCall call, Result result) { try { clientInterface.shutdown(); - result.success("canceled"); + result.success("success"); } catch (Exception e) { System.out.println("=============>ERROR:"+e.getMessage()); result.error("2", e.getMessage(), e.getLocalizedMessage()); @@ -200,6 +212,7 @@ public class BankNfcPlugins implements MethodCallHandler { //terminal config private TerminalConfiguration createTerminalConfiguration() { + System.out.println("=============>createTerminalConfiguration:"+new DeviceTypeDefiner().define()); return new TerminalConfiguration.Builder() .energySaverModeTime(150) .pinLengthsArray(new byte[]{4, 6}) diff --git a/android/build.gradle b/android/build.gradle index 1a9b1e6..d9ad62b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -107,7 +107,8 @@ buildscript { //TODO: 20.09.2019 for future refactoring: add gradle properties parameter to set supported device remotely if (ext.buildType.buildType == 'NFC') { - ext.supportedDevicesapp = ['SoftPos', 'Shtrih', 'Atol'] + //ext.supportedDevicesapp = ['SoftPos', 'Shtrih', 'Atol'] + ext.supportedDevicesapp = ['SoftPos'] } else { ext.supportedDevicesapp = ['Deftun', 'Singular', 'CctRed', 'RoamData', 'Rp350n', 'WisePad', 'RoamPad', 'Qpos', 'Icmp', 'Spire', 'D200', 'RoamPadNfc', 'IcmpUpos', 'WangPos', diff --git a/lib/views/bank_view/bank_view.dart b/lib/views/bank_view/bank_view.dart index b2ace18..f3d8b04 100644 --- a/lib/views/bank_view/bank_view.dart +++ b/lib/views/bank_view/bank_view.dart @@ -20,6 +20,7 @@ class _BankViewState extends State { String cancelValue; String shutdownValue; String versionValue; + String transactionValue; bool loading = false; @override @@ -43,6 +44,13 @@ class _BankViewState extends State { versionValue = result ?? 'none'; }); } + + transaction() async { + String result = await _channel.invokeMethod('transaction'); + setState(() { + transactionValue = result ?? 'none'; + }); + } connect() async { String result = await _channel.invokeMethod("connection"); @@ -163,6 +171,13 @@ class _BankViewState extends State { Text('shutdown: $shutdownValue'), RaisedButton(child: Text('Shutdown'), onPressed: shutdown), ], + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text('transaction: $transactionValue'), + RaisedButton(child: Text('Transaction'), onPressed: transaction), + ], ), Text('pay: $payValue'), RaisedButton(child: Text('Payment'), onPressed: pay),