94 lines
4.4 KiB
Dart
94 lines
4.4 KiB
Dart
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<BankService>();
|
|
DialogService _dialogService = locator<DialogService>();
|
|
final DataService _dataService = locator<DataService>();
|
|
final NavigatorService _navigatorService = locator<NavigatorService>();
|
|
Logger log = getLogger('PaymentNfcView');
|
|
|
|
Future<AmanDao<CardData>> 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.token == null) {
|
|
return AmanDao<CardData>(success: false, msg: 'Отказано в доступе к API банка');
|
|
}
|
|
|
|
//Инициализация
|
|
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<CardData>(msg: response.result.description, success: true, data: cardData);
|
|
}
|
|
return AmanDao<CardData>(msg: response.result.description, success: false);
|
|
}
|
|
|
|
Future<AmanDao<CardData>> 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.token == null) {
|
|
return AmanDao<CardData>(success: false, msg: 'Отказано в доступе к API банка');
|
|
}
|
|
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: 'payment'
|
|
);
|
|
return AmanDao<CardData>(msg: response.result.description, success: true, data: cardData);
|
|
}
|
|
return AmanDao<CardData>(msg: response.result.description, success: false);
|
|
}
|
|
|
|
Future<Cd.HalykCloseDayDao> 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.token == null) {
|
|
return new Cd.HalykCloseDayDao(result: Cd.ResultBean(description: 'Отказано в доступе к API банка', code: -1));
|
|
}
|
|
//Инициализация
|
|
Cd.HalykCloseDayDao response = await _bankService.closeDay(token: session.token);
|
|
return response;
|
|
}
|
|
|
|
|
|
|
|
|