import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/logger.dart'; import 'package:aman_kassa_flutter/core/models/forte/forte_close_day_dao.dart' as Cd; import 'package:aman_kassa_flutter/core/models/forte/forte_response_dao.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'; import 'package:aman_kassa_flutter/redux/store.dart'; import 'package:logger/logger.dart'; import '../../core/models/aman_dao.dart'; import '../../core/models/card_data.dart'; import '../../core/models/forte/forte_post_session.dart'; import '../../core/services/ForteService.dart'; import '../../redux/state/bank_state.dart'; ForteService _bankService = locator(); DialogService _dialogService = locator(); final DataService _dataService = locator(); final NavigatorService _navigatorService = locator(); Logger log = getLogger('PaymentNfcView'); Future> paymentFortePos(double total) async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа FortePosSession? session = await _bankService.renewToken( token: token, login: bankState.login!, password: bankState.password!); if (session == null || session.token == null) { return sessionDeclineDao(session); } //Инициализация ForteResponse response = await _bankService.pay(token: session.token!, amount: total); if (response.result?.code == 0) { CardData cardData = new CardData( authorizationCode: response.transaction?.instrumentSpecificData?.authorizationCode, cardholderName: response.transaction?.instrumentSpecificData?.cardholderName, cardNumber: response.transaction?.instrumentSpecificData?.maskedPan, operationDay: response.transaction?.operationDay, transactionNumber: response.transaction?.transactionNumber, terminalId: response.transaction?.terminalId, transactionType: 'payment'); return AmanDao( msg: response.result?.description, success: true, data: cardData); } return AmanDao( msg: response.result?.errorData != null ? response.result!.errorData!.description : response.result!.description, success: false); } AmanDao sessionDeclineDao(FortePosSession? session) { String msg = 'Отказано в доступе к API банка'; if(session!=null && session.result?.Response?.Description != null) { msg = '${session.result?.Response?.Description} (${session.result?.Response?.Code}) '; } return AmanDao(success: false, msg: msg); } Future> refundFortePos( CardData refundData, double total) async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа FortePosSession? session = await _bankService.renewToken( token: token, login: bankState.login!, password: bankState.password!); if (session == null || session.token == null) { return sessionDeclineDao(session); } ForteResponse response = await _bankService.refund( token: session.token!, amount: total, operDay: refundData.operationDay!, terminalId: refundData.terminalId!, transNum: refundData.transactionNumber!); if (response.result?.code == 0) { CardData cardData = new CardData( authorizationCode: response.transaction?.instrumentSpecificData?.authorizationCode, cardholderName: response.transaction?.instrumentSpecificData?.cardholderName, cardNumber: response.transaction?.instrumentSpecificData?.maskedPan, operationDay: response.transaction?.operationDay, transactionNumber: response.transaction?.transactionNumber, terminalId: response.transaction?.terminalId, transactionType: 'refund'); return AmanDao( msg: response.result?.description, success: true, data: cardData); } return AmanDao( msg: response.result?.errorData != null ? response.result!.errorData!.description : response.result!.description, success: false); } Future> reversalFortePos( CardData refundData, double total) async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа FortePosSession? session = await _bankService.renewToken( token: token, login: bankState.login ?? '', password: bankState.password ?? ''); if (session == null || session.token == null) { return sessionDeclineDao(session); } log.i(refundData.toJson()); ForteResponse response = await _bankService.reversal( token: session.token!, operDay: refundData.operationDay!, terminalId: refundData.terminalId!, transNum: refundData.transactionNumber!); if (response.result?.code == 0) { CardData cardData = new CardData( authorizationCode: response.transaction?.instrumentSpecificData?.authorizationCode, cardholderName: response.transaction?.instrumentSpecificData?.cardholderName, cardNumber: response.transaction?.instrumentSpecificData?.maskedPan, operationDay: response.transaction?.operationDay, transactionNumber: response.transaction?.transactionNumber, terminalId: response.transaction?.terminalId, transactionType: 'reversal'); return AmanDao( msg: response.result?.description, success: true, data: cardData); } return AmanDao( msg: response.result?.errorData != null ? response.result!.errorData!.description : response.result!.description, success: false); } Future closeDayFortePos() async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа FortePosSession? session = await _bankService.renewToken( token: token, login: bankState.login ?? '', password: bankState.password ?? ''); if (session== null || session.token == null) { return new Cd.ForteCloseDayDao( result: Cd.ResultBean( description: 'Отказано в доступе к API банка', code: -1)); } //Инициализация Cd.ForteCloseDayDao? response = await _bankService.closeDay(token: session.token!); return response; }