import 'package:aman_kassa_flutter/core/locator.dart'; import 'package:aman_kassa_flutter/core/logger.dart'; import 'package:aman_kassa_flutter/core/models/halyk/halyk_close_day_dao.dart' as Cd; import 'package:aman_kassa_flutter/core/models/halyk/halyk_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/halyk/halyk_post_session.dart'; import '../../core/services/BankService.dart'; import '../../redux/state/bank_state.dart'; BankService _bankService = locator(); DialogService _dialogService = locator(); final DataService _dataService = locator(); final NavigatorService _navigatorService = locator(); Logger log = getLogger('PaymentNfcView'); Future> paymentHalykPos(double total) async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа HalykPosSession? session = await _bankService.renewToken( token: token, login: bankState.login!, password: bankState.password!); if (session == null || session.token == null) { return sessionDeclineDao(session); } //Инициализация HalykResponse 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(HalykPosSession? 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> refundHalykPos( CardData refundData, double total) async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа HalykPosSession? session = await _bankService.renewToken( token: token, login: bankState.login!, password: bankState.password!); if (session == null || session.token == null) { return sessionDeclineDao(session); } HalykResponse 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> reversalHalykPos( CardData refundData, double total) async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа HalykPosSession? 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()); HalykResponse 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 closeDayHalykPos() async { //Авторизация String token = Redux.store!.state.userState!.user!.token!; BankState bankState = Redux.store!.state.bankState!; //права доступа HalykPosSession? session = await _bankService.renewToken( token: token, login: bankState.login ?? '', password: bankState.password ?? ''); if (session== null || session.token == null) { return new Cd.HalykCloseDayDao( result: Cd.ResultBean( description: 'Отказано в доступе к API банка', code: -1)); } //Инициализация Cd.HalykCloseDayDao? response = await _bankService.closeDay(token: session.token!); return response; }