edit card handler

nfc button
backend_nfc
Serik.Uvaissov 2020-08-23 14:19:25 +06:00
parent 1b9a8af2c5
commit 273aba6ce8
3 changed files with 79 additions and 17 deletions

View File

@ -52,12 +52,12 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler<Result
private TransactionTypeConv transactionTypeConv; private TransactionTypeConv transactionTypeConv;
private final Gson gson = new Gson(); private final Gson gson = new Gson();
public CardPaymentHandlerImpl(BankNfcPlugins plugin, MethodChannel.Result result, long amount) { public CardPaymentHandlerImpl(BankNfcPlugins plugin, MethodChannel.Result result, long amount, TransactionTypeConv type) {
this.result = result; this.result = result;
this.plugin = plugin; this.plugin = plugin;
this.amount = amount; this.amount = amount;
customKeyBoardDilalog = new CustomKeyBoardDilalog(); customKeyBoardDilalog = new CustomKeyBoardDilalog();
transactionTypeConv = TransactionTypeConv.UNKNOWN; transactionTypeConv = type;
} }
public CardPaymentHandlerImpl setTransactionTypeConv(TransactionTypeConv transactionTypeConv) { public CardPaymentHandlerImpl setTransactionTypeConv(TransactionTypeConv transactionTypeConv) {
@ -199,7 +199,13 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler<Result
@Override @Override
public void onWrongApiCalled() { public void onWrongApiCalled() {
System.out.println("----->---->---->onWrongApiCalled"); System.out.println("----->---->---->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<String> dao = new AmanDao<>();
dao.setSuccess(false);
dao.setMsg("onWrongApiCalled");
this.result.success(gson.toJson(dao));
});
} }
@Override @Override
@ -230,7 +236,7 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler<Result
plugin.getActivity().runOnUiThread(() -> { plugin.getActivity().runOnUiThread(() -> {
AmanDao<String> dao = new AmanDao<>(); AmanDao<String> dao = new AmanDao<>();
dao.setSuccess(false); 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)); 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(); Toast.makeText(plugin.getActivity(), String.format("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getFinalDescription()), Toast.LENGTH_LONG).show();
}); });

View File

@ -189,9 +189,10 @@ public class BankNfcPlugins implements MethodCallHandler {
Integer value = call.argument("amount"); Integer value = call.argument("amount");
long amount = value.longValue(); long amount = value.longValue();
clientInterface.cancel(); clientInterface.cancel();
CardPaymentHandlerImpl handler = new CardPaymentHandlerImpl(this, result, amount); // CardPaymentHandlerImpl handler = new CardPaymentHandlerImpl(this, result, amount);
handler.setTransactionTypeConv(TransactionTypeConv.PAYMENT); // handler.setTransactionTypeConv(TransactionTypeConv.PAYMENT);
clientInterface.getTransactionManager().makeCardPayment(handler); // clientInterface.getTransactionManager().makeCardPayment(handler);
clientInterface.getTransactionManager().makeCardPayment(new CardPaymentHandlerImpl(this, result, amount, TransactionTypeConv.PAYMENT));
} catch (Exception e) { } catch (Exception e) {
System.out.println("=============>ERROR:"+e.getMessage()); System.out.println("=============>ERROR:"+e.getMessage());
result.error("2", e.getMessage(), e.getLocalizedMessage()); result.error("2", e.getMessage(), e.getLocalizedMessage());

View File

@ -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/product_dao.dart';
import 'package:aman_kassa_flutter/core/models/response.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/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/DataService.dart';
import 'package:aman_kassa_flutter/core/services/dialog_service.dart'; import 'package:aman_kassa_flutter/core/services/dialog_service.dart';
import 'package:aman_kassa_flutter/core/services/navigator_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/actions/user_actions.dart';
import 'package:aman_kassa_flutter/redux/constants/operation_const.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/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/calc_state.dart';
import 'package:aman_kassa_flutter/redux/state/kassa_state.dart'; import 'package:aman_kassa_flutter/redux/state/kassa_state.dart';
import 'package:aman_kassa_flutter/redux/store.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:aman_kassa_flutter/widgets/loader/Dialogs.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.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 { class PaymentView extends StatefulWidget {
final PaymentModel model; final PaymentModel model;
@ -36,13 +40,26 @@ class _PaymentViewState extends State<PaymentView> {
final GlobalKey<State> _keyLoader = new GlobalKey<State>(); final GlobalKey<State> _keyLoader = new GlobalKey<State>();
final DataService _dataService = locator<DataService>(); final DataService _dataService = locator<DataService>();
final DialogService _dialogService = locator<DialogService>(); final DialogService _dialogService = locator<DialogService>();
BankService _bankService = locator<BankService>();
final NavigatorService _navigatorService = locator<NavigatorService>(); final NavigatorService _navigatorService = locator<NavigatorService>();
bool isBusy; bool isBusy;
bool isBankApiAccess;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
isBusy = false; isBusy = false;
isBankApiAccess = false;
_bankInit();
}
_bankInit() async {
int version = await _bankService.version();
if(version>=24){
setState(() {
isBankApiAccess = true;
});
}
} }
@override @override
@ -148,11 +165,8 @@ class _PaymentViewState extends State<PaymentView> {
], ],
), ),
), ),
Container( verticalSpaceLarge,
child: IconButton(icon: Icon(Icons.nfc), onPressed: () { _nfsButtonRender(),
_navigatorService.push(PaymentNfcViewRoute, arguments: widget.model);
}),
),
verticalSpaceLarge, verticalSpaceLarge,
Expanded( Expanded(
child: Container(), child: Container(),
@ -170,6 +184,46 @@ class _PaymentViewState extends State<PaymentView> {
); );
} }
Widget _nfsButtonRender() {
if(!isBankApiAccess){
return Container();
}
return StoreConnector<AppState, BankState>(
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 { pressPayment(String type) async {
setState(() { setState(() {
isBusy = true; isBusy = true;
@ -196,7 +250,7 @@ class _PaymentViewState extends State<PaymentView> {
setState(() { setState(() {
isBusy = false; isBusy = false;
}); });
if( response != null) { if (response != null) {
if (response.operation) { if (response.operation) {
String message = response.body['message']; String message = response.body['message'];
String check = response.body['check']; String check = response.body['check'];
@ -212,8 +266,9 @@ class _PaymentViewState extends State<PaymentView> {
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
_navigatorService.pop(); _navigatorService.pop();
_navigatorService.push(ImageShowRoute, _navigatorService.push(ImageShowRoute,
arguments: ImageShowModel(data:check, title: message, url: url )); arguments: ImageShowModel(data: check, title: message, url: url));
} else if (!response.operation && ![401,402,403,412,500].contains(response.status)) { } else if (!response.operation &&
![401, 402, 403, 412, 500].contains(response.status)) {
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
_dialogService.showDialog(description: response.body['message']); _dialogService.showDialog(description: response.body['message']);
} else { } else {
@ -226,7 +281,6 @@ class _PaymentViewState extends State<PaymentView> {
print(e); print(e);
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop(); Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
} finally { } finally {
//Navigator.of(context, rootNavigator: true).pop(); //Navigator.of(context, rootNavigator: true).pop();
setState(() { setState(() {
isBusy = false; isBusy = false;
@ -260,5 +314,6 @@ class _PaymentViewState extends State<PaymentView> {
class PaymentModel { class PaymentModel {
String operationType; String operationType;
String mode; String mode;
PaymentModel({this.mode, this.operationType}); PaymentModel({this.mode, this.operationType});
} }