From 273aba6ce8336c9acb7cde7c8a90064d2f32a435 Mon Sep 17 00:00:00 2001 From: "Serik.Uvaissov" Date: Sun, 23 Aug 2020 14:19:25 +0600 Subject: [PATCH] edit card handler nfc button --- .../kassa/handler/CardPaymentHandlerImpl.java | 14 +++- .../aman/kassa/plugins/BankNfcPlugins.java | 7 +- lib/views/payment/payment_view.dart | 75 ++++++++++++++++--- 3 files changed, 79 insertions(+), 17 deletions(-) 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 d42650d..ce9ca8b 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 @@ -52,12 +52,12 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler---->---->onWrongApiCalled"); - plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), "Wrong method has been called", Toast.LENGTH_SHORT).show()); + plugin.getActivity().runOnUiThread(() -> { + //Toast.makeText(plugin.getActivity(), "Wrong method has been called", Toast.LENGTH_SHORT).show(); + AmanDao dao = new AmanDao<>(); + dao.setSuccess(false); + dao.setMsg("onWrongApiCalled"); + this.result.success(gson.toJson(dao)); + }); } @Override @@ -230,7 +236,7 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler { AmanDao dao = new AmanDao<>(); dao.setSuccess(false); - dao.setMsg(String.format("+++++++++++ onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getFinalDescription())); + dao.setMsg(String.format("%s", errorHandler.getFinalDescription())); this.result.success(gson.toJson(dao)); Toast.makeText(plugin.getActivity(), String.format("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getFinalDescription()), Toast.LENGTH_LONG).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 ce7b66c..d946ab4 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 @@ -189,9 +189,10 @@ public class BankNfcPlugins implements MethodCallHandler { Integer value = call.argument("amount"); long amount = value.longValue(); clientInterface.cancel(); - CardPaymentHandlerImpl handler = new CardPaymentHandlerImpl(this, result, amount); - handler.setTransactionTypeConv(TransactionTypeConv.PAYMENT); - clientInterface.getTransactionManager().makeCardPayment(handler); +// CardPaymentHandlerImpl handler = new CardPaymentHandlerImpl(this, result, amount); +// handler.setTransactionTypeConv(TransactionTypeConv.PAYMENT); +// clientInterface.getTransactionManager().makeCardPayment(handler); + clientInterface.getTransactionManager().makeCardPayment(new CardPaymentHandlerImpl(this, result, amount, TransactionTypeConv.PAYMENT)); } catch (Exception e) { System.out.println("=============>ERROR:"+e.getMessage()); result.error("2", e.getMessage(), e.getLocalizedMessage()); diff --git a/lib/views/payment/payment_view.dart b/lib/views/payment/payment_view.dart index 9f61099..0704523 100644 --- a/lib/views/payment/payment_view.dart +++ b/lib/views/payment/payment_view.dart @@ -3,6 +3,7 @@ import 'package:aman_kassa_flutter/core/models/calc_model.dart'; import 'package:aman_kassa_flutter/core/models/product_dao.dart'; import 'package:aman_kassa_flutter/core/models/response.dart'; import 'package:aman_kassa_flutter/core/route_names.dart'; +import 'package:aman_kassa_flutter/core/services/BankService.dart'; import 'package:aman_kassa_flutter/core/services/DataService.dart'; import 'package:aman_kassa_flutter/core/services/dialog_service.dart'; import 'package:aman_kassa_flutter/core/services/navigator_service.dart'; @@ -11,6 +12,7 @@ import 'package:aman_kassa_flutter/redux/actions/kassa_actions.dart'; import 'package:aman_kassa_flutter/redux/actions/user_actions.dart'; import 'package:aman_kassa_flutter/redux/constants/operation_const.dart'; import 'package:aman_kassa_flutter/redux/constants/setting_const.dart'; +import 'package:aman_kassa_flutter/redux/state/bank_state.dart'; import 'package:aman_kassa_flutter/redux/state/calc_state.dart'; import 'package:aman_kassa_flutter/redux/state/kassa_state.dart'; import 'package:aman_kassa_flutter/redux/store.dart'; @@ -22,6 +24,8 @@ import 'package:aman_kassa_flutter/widgets/fields/busy_button.dart'; import 'package:aman_kassa_flutter/widgets/loader/Dialogs.dart'; import 'package:flutter/material.dart'; import 'package:flutter_redux/flutter_redux.dart'; +import 'package:flutter_screenutil/screenutil.dart'; +import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; class PaymentView extends StatefulWidget { final PaymentModel model; @@ -36,13 +40,26 @@ class _PaymentViewState extends State { final GlobalKey _keyLoader = new GlobalKey(); final DataService _dataService = locator(); final DialogService _dialogService = locator(); + BankService _bankService = locator(); final NavigatorService _navigatorService = locator(); bool isBusy; + bool isBankApiAccess; @override void initState() { super.initState(); isBusy = false; + isBankApiAccess = false; + _bankInit(); + } + + _bankInit() async { + int version = await _bankService.version(); + if(version>=24){ + setState(() { + isBankApiAccess = true; + }); + } } @override @@ -148,11 +165,8 @@ class _PaymentViewState extends State { ], ), ), - Container( - child: IconButton(icon: Icon(Icons.nfc), onPressed: () { - _navigatorService.push(PaymentNfcViewRoute, arguments: widget.model); - }), - ), + verticalSpaceLarge, + _nfsButtonRender(), verticalSpaceLarge, Expanded( child: Container(), @@ -170,6 +184,46 @@ class _PaymentViewState extends State { ); } + Widget _nfsButtonRender() { + if(!isBankApiAccess){ + return Container(); + } + return StoreConnector( + converter: (store) => store.state.bankState, + builder: (_, state) { + if(state.password == null || state.login == null || state.password.length < 1 || state.login.length < 1 ){ + return Container(); + } + return InkWell( + onTap: () { + _navigatorService.push(PaymentNfcViewRoute, + arguments: widget.model); + }, + splashColor: primaryColor.withOpacity(0.4), + borderRadius: BorderRadius.circular(9.0), + highlightColor: primaryColor.withOpacity(0.1), + child: Container( + padding: const EdgeInsets.all(8.0), + decoration: BoxDecoration( + border: Border.all(color: primaryColor), + borderRadius: BorderRadius.circular(9.0) + ), + child: Column( + children: [ + Icon( + MdiIcons.nfc, + color: primaryColor, + size: ScreenUtil().setSp(60.0), + ), + Text('Tap2Phone',style: TextStyle(fontSize: ScreenUtil().setSp(10.0), color: primaryColor),), + ], + ), + ), + ); + } + ); + } + pressPayment(String type) async { setState(() { isBusy = true; @@ -196,7 +250,7 @@ class _PaymentViewState extends State { setState(() { isBusy = false; }); - if( response != null) { + if (response != null) { if (response.operation) { String message = response.body['message']; String check = response.body['check']; @@ -212,21 +266,21 @@ class _PaymentViewState extends State { Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); _navigatorService.pop(); _navigatorService.push(ImageShowRoute, - arguments: ImageShowModel(data:check, title: message, url: url )); - } else if (!response.operation && ![401,402,403,412,500].contains(response.status)) { + arguments: ImageShowModel(data: check, title: message, url: url)); + } else if (!response.operation && + ![401, 402, 403, 412, 500].contains(response.status)) { Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); _dialogService.showDialog(description: response.body['message']); } else { Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); } } else { - Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); + Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); } } catch (e) { print(e); Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); } finally { - //Navigator.of(context, rootNavigator: true).pop(); setState(() { isBusy = false; @@ -260,5 +314,6 @@ class _PaymentViewState extends State { class PaymentModel { String operationType; String mode; + PaymentModel({this.mode, this.operationType}); }