import 'dart:convert'; import 'package:aman_kassa_flutter/core/base/base_service.dart'; import 'package:aman_kassa_flutter/core/models/aman_dao.dart'; import 'package:flutter/services.dart'; class BankService extends BaseService { static const String _url = 'http://195.200.74.83:5000'; final MethodChannel _channel = MethodChannel('channel:com.amanKassa/bank'); Future version() async { String result; try { result = await _channel.invokeMethod('version'); } catch (e, stack) { log.e("BankService", e, stack); result = '0'; } log.i(result); return int.parse(result) ?? 0; } Future imei() async { String result; try { result = await _channel.invokeMethod('imei'); } catch (e, stack) { log.e("BankService", e, stack); result = '0'; } log.i(result); return result; } Future init() async { try { String response = await _channel.invokeMethod('init', { 'serverUrl': _url, }); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao.success; } catch (e, stack) { log.e("BankService", e, stack); return false; } } Future connect() async { try { String response = await _channel.invokeMethod("connection"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao.success; } catch (e, stack) { log.e("BankService", e, stack); return false; } } Future currency() async { try { String response = await _channel.invokeMethod("currency"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao.success; } catch (e, stack) { log.e("BankService", e, stack); return false; } } Future permissions() async { try { String response = await _channel.invokeMethod("permissions"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao.success; } catch (e, stack) { log.e("BankService", e, stack); return false; } } Future auth({String login, String password}) async { try { String response = await _channel.invokeMethod("auth", {'login': login, 'password': password}); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao; } catch (e, stack) { log.e("BankService", e, stack); return new AmanDao(msg: 'Ошибка авторизации'); } } Future closeDay() async { try { String response = await _channel.invokeMethod("closeDay"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao; } catch (e, stack) { log.e("BankService", e, stack); return new AmanDao(msg: 'Ошибка при закрытии дня'); } } Future pay({double amount}) async { try { double total = amount * 100; log.i('total: $total, ${total.toInt()}'); String response = await _channel.invokeMethod("pay", {'amount': total.toInt()}); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao; } catch (e, stack) { log.e("BankService", e, stack); return new AmanDao(msg: 'Ошибка оплаты'); } } Future findTransaction({int transactionNumber, String authorizationCode}) async { try { log.i('transactionNumber: $transactionNumber'); String response = await _channel.invokeMethod("findTransaction", {'transactionNumber': transactionNumber, 'authorizationCode': authorizationCode}); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao; } catch (e, stack) { log.e("BankService", e, stack); return new AmanDao(msg: 'Ошибка при поиске транзакии банка'); } } Future refund() async { try { String response = await _channel.invokeMethod("refund"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao; } catch (e, stack) { log.e("BankService", e, stack); return new AmanDao(msg: 'Ошибка при возврате'); } } Future shutdown() async { try { String response = await _channel.invokeMethod("shutdown"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao.success; } catch (e, stack) { log.e("BankService", e, stack); return false; } } Future cancel() async { try { String response = await _channel.invokeMethod("cancel"); AmanDao dao = AmanDao.fromJson(json.decode(response)); log.i('${dao.success} - ${dao.msg}'); return dao.success; } catch (e, stack) { log.e("BankService", e, stack); return false; } } }