refund release
parent
4a1f65c681
commit
0de65ff2e9
|
|
@ -282,6 +282,7 @@ public class CardPaymentHandlerImpl implements CardPaymentCallbackHandler<Result
|
||||||
cardData.setCardPaymentSystemType(data.getCardPaymentSystemType());
|
cardData.setCardPaymentSystemType(data.getCardPaymentSystemType());
|
||||||
cardData.setTransactionNumber(data.getTransactionNumber());
|
cardData.setTransactionNumber(data.getTransactionNumber());
|
||||||
cardData.setTransactionType(data.getTransactionType().getCode());
|
cardData.setTransactionType(data.getTransactionType().getCode());
|
||||||
|
cardData.setAuthorizationCode(data.getAuthorizationCode());
|
||||||
AmanDao<CardData> dao = new AmanDao<>();
|
AmanDao<CardData> dao = new AmanDao<>();
|
||||||
dao.setSuccess(true);
|
dao.setSuccess(true);
|
||||||
dao.setData(cardData);
|
dao.setData(cardData);
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,12 @@ import io.flutter.plugin.common.MethodChannel;
|
||||||
import kz.com.aman.kassa.MainActivity;
|
import kz.com.aman.kassa.MainActivity;
|
||||||
import kz.com.aman.kassa.bank.M4BankActivity;
|
import kz.com.aman.kassa.bank.M4BankActivity;
|
||||||
import kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
|
import kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
|
||||||
|
import kz.com.aman.kassa.model.AmanDao;
|
||||||
|
import kz.com.aman.kassa.model.CardData;
|
||||||
import kz.com.aman.kassa.plugins.BankNfcPlugins;
|
import kz.com.aman.kassa.plugins.BankNfcPlugins;
|
||||||
import ru.m4bank.mpos.library.external.transactions.EasyCardRefundCallbackHandler;
|
import ru.m4bank.mpos.library.external.transactions.EasyCardRefundCallbackHandler;
|
||||||
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
|
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
|
||||||
|
import ru.m4bank.mpos.service.commons.data.ResultType;
|
||||||
import ru.m4bank.mpos.service.data.FiscalStatusData;
|
import ru.m4bank.mpos.service.data.FiscalStatusData;
|
||||||
import ru.m4bank.mpos.service.data.PrinterBaseData;
|
import ru.m4bank.mpos.service.data.PrinterBaseData;
|
||||||
import ru.m4bank.mpos.service.data.PrinterErrorData;
|
import ru.m4bank.mpos.service.data.PrinterErrorData;
|
||||||
|
|
@ -42,13 +45,19 @@ public class CardRefundAmanHandlerImpl implements EasyCardRefundCallbackHandler<
|
||||||
|
|
||||||
private final BankNfcPlugins plugin;
|
private final BankNfcPlugins plugin;
|
||||||
private final MethodChannel.Result result;
|
private final MethodChannel.Result result;
|
||||||
|
private final Integer transactionNumber;
|
||||||
|
private String authorizationCode;
|
||||||
private final Gson gson = new Gson();
|
private final Gson gson = new Gson();
|
||||||
private Transaction transaction;
|
private Transaction transaction;
|
||||||
|
|
||||||
private CustomKeyBoardDilalog customKeyBoardDilalog;
|
private CustomKeyBoardDilalog customKeyBoardDilalog;
|
||||||
|
|
||||||
public CardRefundAmanHandlerImpl(BankNfcPlugins plugin , MethodChannel.Result result) {
|
public CardRefundAmanHandlerImpl(BankNfcPlugins plugin , MethodChannel.Result result, Integer transactionNumber, String authorizationCode,Transaction transaction) {
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
this.result = result;
|
this.result = result;
|
||||||
|
this.transactionNumber = transactionNumber;
|
||||||
|
this.authorizationCode = authorizationCode;
|
||||||
|
this.transaction = transaction;
|
||||||
customKeyBoardDilalog = new CustomKeyBoardDilalog();
|
customKeyBoardDilalog = new CustomKeyBoardDilalog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,22 +73,38 @@ public class CardRefundAmanHandlerImpl implements EasyCardRefundCallbackHandler<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
|
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
|
||||||
Timber.d("onDeviceToUseSelectionRequested");
|
// Timber.d("onDeviceToUseSelectionRequested");
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity());
|
// AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity());
|
||||||
builder.setTitle("Choose device");
|
// builder.setTitle("Choose device");
|
||||||
|
//
|
||||||
|
// Spinner deviceListSpinner = new Spinner(plugin.getActivity());
|
||||||
|
// ArrayAdapter<Reader> adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(deviceList));
|
||||||
|
// adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
|
// deviceListSpinner.setAdapter(adapter);
|
||||||
|
//
|
||||||
|
// builder.setPositiveButton("OK", (dialog, which) -> {
|
||||||
|
// plugin.getClientInterface().getTransactionManager().setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
|
||||||
|
// dialog.dismiss();
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// builder.setView(deviceListSpinner);
|
||||||
|
// plugin.getActivity().runOnUiThread(() -> builder.create().show());
|
||||||
|
|
||||||
Spinner deviceListSpinner = new Spinner(plugin.getActivity());
|
System.out.println("----->---->---->onDeviceToUseSelectionRequested");
|
||||||
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(deviceList));
|
plugin.getActivity().runOnUiThread(() -> {
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
if (deviceList != null && !deviceList.isEmpty()) {
|
||||||
deviceListSpinner.setAdapter(adapter);
|
for (Reader reader : deviceList) {
|
||||||
|
String name = reader.toString();
|
||||||
builder.setPositiveButton("OK", (dialog, which) -> {
|
System.out.println("name: " + name);
|
||||||
plugin.getClientInterface().getTransactionManager().setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
|
if (name.contains("SOFT")) {
|
||||||
dialog.dismiss();
|
plugin.getClientInterface()
|
||||||
|
.getTransactionManager()
|
||||||
|
.setCardReaderToUse(reader);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.setView(deviceListSpinner);
|
|
||||||
plugin.getActivity().runOnUiThread(() -> builder.create().show());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -111,13 +136,19 @@ public class CardRefundAmanHandlerImpl implements EasyCardRefundCallbackHandler<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWrongApiCalled() {
|
public void onWrongApiCalled() {
|
||||||
Timber.d("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("Данная транзакция уже отменена или ее невозможно отменить через данный функционал");
|
||||||
|
this.result.success(gson.toJson(dao));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceiveCardData(OnlineCardDataDto data, boolean shouldConfirmBeManuallyCalled) {
|
public void onReceiveCardData(OnlineCardDataDto data, boolean shouldConfirmBeManuallyCalled) {
|
||||||
Timber.d("onReceiveCardData");
|
System.out.println("----->---->---->onReceiveCardData");
|
||||||
if (shouldConfirmBeManuallyCalled) {
|
if (shouldConfirmBeManuallyCalled) {
|
||||||
plugin.getClientInterface().getTransactionManager().processOnlineTransaction(false);
|
plugin.getClientInterface().getTransactionManager().processOnlineTransaction(false);
|
||||||
}
|
}
|
||||||
|
|
@ -146,8 +177,17 @@ public class CardRefundAmanHandlerImpl implements EasyCardRefundCallbackHandler<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
|
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
|
||||||
Timber.d("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getDescription());
|
if (transactionErrorData.getError() != null) {
|
||||||
plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
|
plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), transactionErrorData.getError().getDescription(), Toast.LENGTH_LONG).show());
|
||||||
|
} else {
|
||||||
|
plugin.getActivity().runOnUiThread(() -> {
|
||||||
|
AmanDao<String> dao = new AmanDao<>();
|
||||||
|
dao.setSuccess(false);
|
||||||
|
dao.setMsg(String.format("%s", errorHandler.getFinalDescription()));
|
||||||
|
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();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -170,9 +210,21 @@ public class CardRefundAmanHandlerImpl implements EasyCardRefundCallbackHandler<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTransactionDataReceived(TransactionData data) {
|
public void onTransactionDataReceived(TransactionData data) {
|
||||||
Timber.d("onTransactionDataReceived");
|
System.out.println("----->---->---->onTransactionDataReceived");
|
||||||
plugin.getActivity().runOnUiThread(() -> Toast.makeText(plugin.getActivity(), "Transaction data has been received", Toast.LENGTH_LONG)
|
plugin.getActivity().runOnUiThread(() -> {
|
||||||
.show());
|
CardData cardData = new CardData();
|
||||||
|
cardData.setCardExpiryDate(data.getCardExpiryDate());
|
||||||
|
cardData.setCardNumber(data.getCardNumber());
|
||||||
|
cardData.setCardPaymentSystemType(data.getCardPaymentSystemType());
|
||||||
|
cardData.setTransactionNumber(data.getTransactionNumber());
|
||||||
|
cardData.setTransactionType(data.getTransactionType().getCode());
|
||||||
|
AmanDao<CardData> dao = new AmanDao<>();
|
||||||
|
dao.setSuccess(true);
|
||||||
|
dao.setData(cardData);
|
||||||
|
this.result.success(gson.toJson(dao));
|
||||||
|
Toast.makeText(plugin.getActivity(), "Transaction data has been received", Toast.LENGTH_LONG)
|
||||||
|
.show();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -260,23 +312,55 @@ public class CardRefundAmanHandlerImpl implements EasyCardRefundCallbackHandler<
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTransactionsListReceived(List<Transaction> transactionList) {
|
public void onTransactionsListReceived(List<Transaction> transactionList) {
|
||||||
Timber.d("onTransactionsListReceived");
|
// Timber.d("onTransactionsListReceived");
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity());
|
// AlertDialog.Builder builder = new AlertDialog.Builder(plugin.getActivity());
|
||||||
builder.setTitle("Choose transaction");
|
// builder.setTitle("Choose transaction");
|
||||||
|
//
|
||||||
|
// Spinner transactionListSpinner = new Spinner(plugin.getActivity());
|
||||||
|
// ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(transactionList));
|
||||||
|
// adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
|
// transactionListSpinner.setAdapter(adapter);
|
||||||
|
//
|
||||||
|
// builder.setPositiveButton("OK", (dialog, which) -> {
|
||||||
|
// transaction = (Transaction) transactionListSpinner.getSelectedItem();
|
||||||
|
// plugin.getClientInterface().getTransactionManager().makeCardRefund(this);
|
||||||
|
// dialog.dismiss();
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// builder.setView(transactionListSpinner);
|
||||||
|
// plugin.getActivity().runOnUiThread(() -> builder.create().show());
|
||||||
|
this.transaction = null;
|
||||||
|
this.plugin.setTransaction(null);
|
||||||
|
for(Transaction transaction : transactionList){
|
||||||
|
if(this.authorizationCode.equalsIgnoreCase(transaction.getAuthorizationCode())
|
||||||
|
&& transactionNumber.equals(transaction.getTransactionNumber())
|
||||||
|
&& transaction.getTransactionType().equalsIgnoreCase("PAYMENT")) {
|
||||||
|
System.out.println("getCheck:"+ transaction.getCheck());
|
||||||
|
System.out.println("getCheckNumber:"+ transaction.getCheckNumber());
|
||||||
|
System.out.println("getAmount:"+ transaction.getAmount());
|
||||||
|
System.out.println("getCardHolderName:"+ transaction.getCardHolderName());
|
||||||
|
System.out.println("getCardType:"+ transaction.getCardType());
|
||||||
|
System.out.println("getPrinterCheckNumber:"+ transaction.getPrinterCheckNumber());
|
||||||
|
System.out.println("getTransactionNumber:"+ transaction.getTransactionNumber());
|
||||||
|
System.out.println("getAdditionalAuthorizationCode:"+ transaction.getAdditionalAuthorizationCode());
|
||||||
|
System.out.println("getAuthorizationCode:"+ transaction.getAuthorizationCode());
|
||||||
|
System.out.println("getCardExpiryDate:"+ transaction.getCardExpiryDate());
|
||||||
|
System.out.println("getTransactionType:"+ transaction.getTransactionType());
|
||||||
|
System.out.println("getTransactionDate:"+ transaction.getTransactionDate());
|
||||||
|
this.transaction = transaction;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Spinner transactionListSpinner = new Spinner(plugin.getActivity());
|
plugin.getActivity().runOnUiThread(() -> {
|
||||||
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(plugin.getActivity(), android.R.layout.simple_spinner_item, new ArrayList<>(transactionList));
|
AmanDao<String> dao = new AmanDao<>();
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
dao.setSuccess(this.transaction !=null );
|
||||||
transactionListSpinner.setAdapter(adapter);
|
this.plugin.setTransaction(this.transaction);
|
||||||
|
dao.setMsg(this.transaction == null ? "Транзакция не может быть отозвана т.к. все операции оп ней закрыты" : null);
|
||||||
builder.setPositiveButton("OK", (dialog, which) -> {
|
this.result.success(gson.toJson(dao));
|
||||||
transaction = (Transaction) transactionListSpinner.getSelectedItem();
|
|
||||||
plugin.getClientInterface().getTransactionManager().makeCardRefund(this);
|
|
||||||
dialog.dismiss();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.setView(transactionListSpinner);
|
|
||||||
plugin.getActivity().runOnUiThread(() -> builder.create().show());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,15 @@ public class CardData {
|
||||||
private String cardNumber;
|
private String cardNumber;
|
||||||
private String transactionType;
|
private String transactionType;
|
||||||
private String cardPaymentSystemType;
|
private String cardPaymentSystemType;
|
||||||
|
private String authorizationCode;
|
||||||
|
|
||||||
|
public String getAuthorizationCode() {
|
||||||
|
return authorizationCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAuthorizationCode(String authorizationCode) {
|
||||||
|
this.authorizationCode = authorizationCode;
|
||||||
|
}
|
||||||
|
|
||||||
public String getCardExpiryDate() {
|
public String getCardExpiryDate() {
|
||||||
return cardExpiryDate;
|
return cardExpiryDate;
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import kz.com.aman.kassa.bank.permissions.PermissionsManager;
|
||||||
import kz.com.aman.kassa.bank.permissions.PermissionsManagerImpl;
|
import kz.com.aman.kassa.bank.permissions.PermissionsManagerImpl;
|
||||||
import kz.com.aman.kassa.handler.AuthorizationHandlerImpl;
|
import kz.com.aman.kassa.handler.AuthorizationHandlerImpl;
|
||||||
import kz.com.aman.kassa.handler.CardPaymentHandlerImpl;
|
import kz.com.aman.kassa.handler.CardPaymentHandlerImpl;
|
||||||
|
import kz.com.aman.kassa.handler.CardRefundAmanHandlerImpl;
|
||||||
import kz.com.aman.kassa.handler.ConnectionCheckHandlerImpl;
|
import kz.com.aman.kassa.handler.ConnectionCheckHandlerImpl;
|
||||||
import kz.com.aman.kassa.handler.TransactionDetailsHandlerImpl;
|
import kz.com.aman.kassa.handler.TransactionDetailsHandlerImpl;
|
||||||
import kz.com.aman.kassa.handler.CloseDayHandlerImpl;
|
import kz.com.aman.kassa.handler.CloseDayHandlerImpl;
|
||||||
|
|
@ -25,12 +26,14 @@ import kz.com.aman.kassa.model.AmanDao;
|
||||||
import ru.m4bank.mpos.library.M4BankMposClient;
|
import ru.m4bank.mpos.library.M4BankMposClient;
|
||||||
import ru.m4bank.mpos.library.M4BankMposClientInterfaceFacade;
|
import ru.m4bank.mpos.library.M4BankMposClientInterfaceFacade;
|
||||||
import ru.m4bank.mpos.library.M4BankMposParameters;
|
import ru.m4bank.mpos.library.M4BankMposParameters;
|
||||||
|
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
|
||||||
import ru.m4bank.mpos.service.commons.data.ConfigurationSettings;
|
import ru.m4bank.mpos.service.commons.data.ConfigurationSettings;
|
||||||
import ru.m4bank.mpos.service.commons.data.NetworkConfiguration;
|
import ru.m4bank.mpos.service.commons.data.NetworkConfiguration;
|
||||||
import ru.m4bank.mpos.service.commons.data.TerminalConfiguration;
|
import ru.m4bank.mpos.service.commons.data.TerminalConfiguration;
|
||||||
import ru.m4bank.mpos.service.data.dynamic.CurrencyDataHolder;
|
import ru.m4bank.mpos.service.data.dynamic.CurrencyDataHolder;
|
||||||
import ru.m4bank.mpos.service.data.dynamic.objects.Currency;
|
import ru.m4bank.mpos.service.data.dynamic.objects.Currency;
|
||||||
import ru.m4bank.mpos.service.data.dynamic.objects.GetOperationType;
|
import ru.m4bank.mpos.service.data.dynamic.objects.GetOperationType;
|
||||||
|
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
|
||||||
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.TransactionTypeConv;
|
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.TransactionTypeConv;
|
||||||
import ru.m4bank.mpos.service.network.Format;
|
import ru.m4bank.mpos.service.network.Format;
|
||||||
import ru.m4bank.mpos.service.network.ServerChoose;
|
import ru.m4bank.mpos.service.network.ServerChoose;
|
||||||
|
|
@ -43,6 +46,16 @@ public class BankNfcPlugins implements MethodCallHandler {
|
||||||
//main activity
|
//main activity
|
||||||
private MainActivity activity;
|
private MainActivity activity;
|
||||||
|
|
||||||
|
private Transaction transaction;
|
||||||
|
|
||||||
|
public Transaction getTransaction() {
|
||||||
|
return transaction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTransaction(Transaction transaction) {
|
||||||
|
this.transaction = transaction;
|
||||||
|
}
|
||||||
|
|
||||||
//main client all work with him
|
//main client all work with him
|
||||||
private M4BankMposClientInterfaceFacade clientInterface;
|
private M4BankMposClientInterfaceFacade clientInterface;
|
||||||
//permissions
|
//permissions
|
||||||
|
|
@ -93,6 +106,12 @@ public class BankNfcPlugins implements MethodCallHandler {
|
||||||
case "transaction":
|
case "transaction":
|
||||||
showTransaction(call, result);
|
showTransaction(call, result);
|
||||||
break;
|
break;
|
||||||
|
case "findTransaction":
|
||||||
|
findTransaction(call, result);
|
||||||
|
break;
|
||||||
|
case "refund":
|
||||||
|
refund(call, result);
|
||||||
|
break;
|
||||||
case "version":
|
case "version":
|
||||||
result.success(String.valueOf(Build.VERSION.SDK_INT));
|
result.success(String.valueOf(Build.VERSION.SDK_INT));
|
||||||
break;
|
break;
|
||||||
|
|
@ -240,9 +259,6 @@ 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);
|
|
||||||
// handler.setTransactionTypeConv(TransactionTypeConv.PAYMENT);
|
|
||||||
// clientInterface.getTransactionManager().makeCardPayment(handler);
|
|
||||||
clientInterface.getTransactionManager().makeCardPayment(new CardPaymentHandlerImpl(this, result, amount, TransactionTypeConv.PAYMENT));
|
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());
|
||||||
|
|
@ -250,6 +266,29 @@ public class BankNfcPlugins implements MethodCallHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void findTransaction(MethodCall call, Result result) {
|
||||||
|
try {
|
||||||
|
Integer transactionNumber = call.argument("transactionNumber");
|
||||||
|
String authorizationCode = call.argument("authorizationCode");
|
||||||
|
clientInterface.getTransactionManager()
|
||||||
|
.getTransactionsList(new CardRefundAmanHandlerImpl(this, result, transactionNumber, authorizationCode , transaction), 1000,
|
||||||
|
0, GetOperationType.SHOW, null);
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("=============>ERROR:"+e.getMessage());
|
||||||
|
result.error("2", e.getMessage(), e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refund(MethodCall call, Result result) {
|
||||||
|
try {
|
||||||
|
clientInterface.getTransactionManager()
|
||||||
|
.makeCardRefund(new CardRefundAmanHandlerImpl(this, result, null, null, transaction));
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("=============>ERROR:"+e.getMessage());
|
||||||
|
result.error("2", e.getMessage(), e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void closeDay(MethodCall call, Result result) {
|
private void closeDay(MethodCall call, Result result) {
|
||||||
try {
|
try {
|
||||||
clientInterface.cancel();
|
clientInterface.cancel();
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,9 @@ class CardData {
|
||||||
final String cardNumber;
|
final String cardNumber;
|
||||||
final String transactionType;
|
final String transactionType;
|
||||||
final String cardPaymentSystemType;
|
final String cardPaymentSystemType;
|
||||||
|
final String authorizationCode;
|
||||||
|
|
||||||
CardData({this.transactionNumber, this.cardExpiryDate, this.cardNumber, this.transactionType, this.cardPaymentSystemType});
|
CardData({this.transactionNumber, this.cardExpiryDate, this.cardNumber, this.transactionType, this.cardPaymentSystemType, this.authorizationCode});
|
||||||
|
|
||||||
static CardData fromJson(Map<String, dynamic> json) {
|
static CardData fromJson(Map<String, dynamic> json) {
|
||||||
return json != null ?
|
return json != null ?
|
||||||
|
|
@ -15,6 +16,7 @@ class CardData {
|
||||||
cardNumber: json['cardNumber'],
|
cardNumber: json['cardNumber'],
|
||||||
transactionType: json['transactionType'],
|
transactionType: json['transactionType'],
|
||||||
cardPaymentSystemType: json['cardPaymentSystemType'],
|
cardPaymentSystemType: json['cardPaymentSystemType'],
|
||||||
|
authorizationCode: json['authorizationCode'],
|
||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
@ -25,5 +27,6 @@ class CardData {
|
||||||
'cardNumber': cardNumber,
|
'cardNumber': cardNumber,
|
||||||
'transactionType': transactionType,
|
'transactionType': transactionType,
|
||||||
'cardPaymentSystemType': cardPaymentSystemType,
|
'cardPaymentSystemType': cardPaymentSystemType,
|
||||||
|
'authorizationCode': authorizationCode,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -122,6 +122,31 @@ class BankService extends BaseService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<AmanDao> findTransaction({int transactionNumber, String authorizationCode}) async {
|
||||||
|
try {
|
||||||
|
log.i('transactionNumber: $transactionNumber');
|
||||||
|
String response = await _channel.invokeMethod("findTransaction", <String, dynamic>{'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<AmanDao> 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<bool> shutdown() async {
|
Future<bool> shutdown() async {
|
||||||
try {
|
try {
|
||||||
String response = await _channel.invokeMethod("shutdown");
|
String response = await _channel.invokeMethod("shutdown");
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,44 @@ class DataService extends BaseService {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<Response<dynamic>> refundM4Bank(
|
||||||
|
{
|
||||||
|
String token,
|
||||||
|
CheckData checkData,
|
||||||
|
CardData cardData}) async {
|
||||||
|
try {
|
||||||
|
checkData.cardData = cardData;
|
||||||
|
String data = jsonEncode(checkData.toJson());
|
||||||
|
|
||||||
|
log.i('token: $token');
|
||||||
|
log.i('data: $data');
|
||||||
|
Response<dynamic> response = await _api.sellReturn(token, data);
|
||||||
|
log.i('response status: ${response.status}');
|
||||||
|
log.i('response operation: ${response.operation}');
|
||||||
|
if (response.status == 200 && response.operation == true) {
|
||||||
|
User user = Redux.store.state.userState.user;
|
||||||
|
String check = response?.body['check'];
|
||||||
|
dynamic journal = response?.body['journal'];
|
||||||
|
String url = response?.body['link'];
|
||||||
|
int checkNum = journal['check_num'];
|
||||||
|
var summ = journal['summ'];
|
||||||
|
double total = summ != null ? double.parse(summ.toString()) : 0.0;
|
||||||
|
this.insertVoucher(
|
||||||
|
user: user,
|
||||||
|
name: 'Чек №$checkNum',
|
||||||
|
data: data,
|
||||||
|
base64Data: check,
|
||||||
|
total: total,
|
||||||
|
url: url,
|
||||||
|
type: VoucherTypeReturnPay);
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
} catch (e, stack) {
|
||||||
|
log.e("sellOrReturn", e, stack);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Future<Response<dynamic>> sellOrReturn(
|
Future<Response<dynamic>> sellOrReturn(
|
||||||
{String paymentType,
|
{String paymentType,
|
||||||
String tradeType,
|
String tradeType,
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,17 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'package:aman_kassa_flutter/core/entity/Voucher.dart';
|
||||||
import 'package:aman_kassa_flutter/core/locator.dart';
|
import 'package:aman_kassa_flutter/core/locator.dart';
|
||||||
|
import 'package:aman_kassa_flutter/core/models/aman_dao.dart';
|
||||||
|
import 'package:aman_kassa_flutter/core/models/card_data.dart';
|
||||||
import 'package:aman_kassa_flutter/core/models/dialog_models.dart';
|
import 'package:aman_kassa_flutter/core/models/dialog_models.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/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';
|
||||||
import 'package:aman_kassa_flutter/shared/app_colors.dart';
|
import 'package:aman_kassa_flutter/shared/app_colors.dart';
|
||||||
import 'package:aman_kassa_flutter/shared/ui_helpers.dart';
|
import 'package:aman_kassa_flutter/shared/ui_helpers.dart';
|
||||||
|
import 'package:aman_kassa_flutter/views/payment/payment_view.dart';
|
||||||
import 'package:aman_kassa_flutter/widgets/fields/busy_button_icon.dart';
|
import 'package:aman_kassa_flutter/widgets/fields/busy_button_icon.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||||
|
|
@ -44,8 +49,10 @@ class ImageShowModel {
|
||||||
final String data;
|
final String data;
|
||||||
final String title;
|
final String title;
|
||||||
final String url;
|
final String url;
|
||||||
|
final CardData cardData;
|
||||||
|
final Voucher voucher;
|
||||||
|
|
||||||
ImageShowModel({this.data, this.title, this.url});
|
ImageShowModel({this.data, this.title, this.url, this.cardData, this.voucher});
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyFloatingActionButton extends StatefulWidget {
|
class MyFloatingActionButton extends StatefulWidget {
|
||||||
|
|
@ -60,10 +67,34 @@ class _MyFloatingActionButtonState extends State<MyFloatingActionButton> {
|
||||||
DialogService _dialog = locator<DialogService>();
|
DialogService _dialog = locator<DialogService>();
|
||||||
NavigatorService _navigatorService = locator<NavigatorService>();
|
NavigatorService _navigatorService = locator<NavigatorService>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return showFab
|
if (showFab) {
|
||||||
? FloatingActionButton(
|
return Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: [
|
||||||
|
if (widget.data.cardData != null && widget.data.cardData.transactionType == "payment") FloatingActionButton(
|
||||||
|
backgroundColor: redColor,
|
||||||
|
child: Icon(
|
||||||
|
Icons.settings_backup_restore,
|
||||||
|
color: whiteColor,
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
_navigatorService.replace(HomeViewRoute);
|
||||||
|
PaymentModel model = new PaymentModel(voucher: widget.data.voucher, cardData: widget.data.cardData);
|
||||||
|
_navigatorService.push(PaymentNfcViewRoute,
|
||||||
|
arguments: model);
|
||||||
|
},
|
||||||
|
heroTag: null,
|
||||||
|
) else SizedBox(
|
||||||
|
height: 0,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10,
|
||||||
|
),
|
||||||
|
FloatingActionButton(
|
||||||
child: Icon(Icons.share),
|
child: Icon(Icons.share),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
var bottomSheetController = showBottomSheet(
|
var bottomSheetController = showBottomSheet(
|
||||||
|
|
@ -107,13 +138,17 @@ class _MyFloatingActionButtonState extends State<MyFloatingActionButton> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)));
|
)));
|
||||||
showFoatingActionButton(false);
|
showFloatingActionButton(false);
|
||||||
bottomSheetController.closed.then((value) {
|
bottomSheetController.closed.then((value) {
|
||||||
showFoatingActionButton(true);
|
showFloatingActionButton(true);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
)
|
),
|
||||||
: Container();
|
],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Container();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void shareFile() async {
|
void shareFile() async {
|
||||||
|
|
@ -156,7 +191,6 @@ class _MyFloatingActionButtonState extends State<MyFloatingActionButton> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print(url());
|
|
||||||
if (await canLaunch(url())) {
|
if (await canLaunch(url())) {
|
||||||
await launch(url());
|
await launch(url());
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -164,7 +198,7 @@ class _MyFloatingActionButtonState extends State<MyFloatingActionButton> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void showFoatingActionButton(bool value) {
|
void showFloatingActionButton(bool value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
showFab = value;
|
showFab = value;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,10 @@ class _HistoryViewState extends State<HistoryView> {
|
||||||
arguments: ImageShowModel(
|
arguments: ImageShowModel(
|
||||||
data: voucher.base64Data,
|
data: voucher.base64Data,
|
||||||
title: voucher.name,
|
title: voucher.name,
|
||||||
url: voucher.url));
|
url: voucher.url,
|
||||||
|
cardData: cardData,
|
||||||
|
voucher: voucher,
|
||||||
|
));
|
||||||
},
|
},
|
||||||
title: buildText(voucher),
|
title: buildText(voucher),
|
||||||
subtitle: Column(
|
subtitle: Column(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
|
import 'package:aman_kassa_flutter/core/entity/Voucher.dart';
|
||||||
import 'package:aman_kassa_flutter/core/locator.dart';
|
import 'package:aman_kassa_flutter/core/locator.dart';
|
||||||
import 'package:aman_kassa_flutter/core/models/calc_model.dart';
|
import 'package:aman_kassa_flutter/core/models/calc_model.dart';
|
||||||
|
import 'package:aman_kassa_flutter/core/models/card_data.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';
|
||||||
|
|
@ -317,6 +319,8 @@ class _PaymentViewState extends State<PaymentView> {
|
||||||
class PaymentModel {
|
class PaymentModel {
|
||||||
String operationType;
|
String operationType;
|
||||||
String mode;
|
String mode;
|
||||||
|
Voucher voucher;
|
||||||
|
CardData cardData;
|
||||||
|
|
||||||
PaymentModel({this.mode, this.operationType});
|
PaymentModel({this.mode, this.operationType, this.voucher, this.cardData});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:aman_kassa_flutter/core/entity/Voucher.dart';
|
||||||
import 'package:aman_kassa_flutter/core/locator.dart';
|
import 'package:aman_kassa_flutter/core/locator.dart';
|
||||||
import 'package:aman_kassa_flutter/core/logger.dart';
|
import 'package:aman_kassa_flutter/core/logger.dart';
|
||||||
import 'package:aman_kassa_flutter/core/models/aman_dao.dart';
|
import 'package:aman_kassa_flutter/core/models/aman_dao.dart';
|
||||||
import 'package:aman_kassa_flutter/core/models/calc_model.dart';
|
import 'package:aman_kassa_flutter/core/models/calc_model.dart';
|
||||||
import 'package:aman_kassa_flutter/core/models/card_data.dart';
|
import 'package:aman_kassa_flutter/core/models/card_data.dart';
|
||||||
|
import 'package:aman_kassa_flutter/core/models/check_data.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';
|
||||||
|
|
@ -37,7 +41,6 @@ import 'package:logger/logger.dart';
|
||||||
|
|
||||||
class PaymentNfcView extends StatefulWidget {
|
class PaymentNfcView extends StatefulWidget {
|
||||||
final PaymentModel model;
|
final PaymentModel model;
|
||||||
|
|
||||||
const PaymentNfcView({Key key, this.model}) : super(key: key);
|
const PaymentNfcView({Key key, this.model}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -65,6 +68,8 @@ class _PaymentNfcViewState extends State<PaymentNfcView> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void start() async {
|
void start() async {
|
||||||
|
|
||||||
|
|
||||||
//права доступа
|
//права доступа
|
||||||
bool success = await _bankService.permissions();
|
bool success = await _bankService.permissions();
|
||||||
log.i(success);
|
log.i(success);
|
||||||
|
|
@ -74,6 +79,19 @@ class _PaymentNfcViewState extends State<PaymentNfcView> {
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var today = new DateTime.now();
|
||||||
|
var yesterday = today.subtract(new Duration(days: 1));
|
||||||
|
if( Redux.store.state.userState == null
|
||||||
|
|| Redux.store.state.userState.smena == null
|
||||||
|
|| Redux.store.state.userState.smena.startedAt == null
|
||||||
|
|| yesterday.isAfter(Redux.store.state.userState.smena.startedAt)) {
|
||||||
|
_dialogService.showDialog(description: 'Текущая смена открыта более 24 ч. Необходимо закрыть смену и открыть ее заново.');
|
||||||
|
_navigatorService.pop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Инициализация
|
//Инициализация
|
||||||
bool initialized = await _bankService.init();
|
bool initialized = await _bankService.init();
|
||||||
log.i(initialized);
|
log.i(initialized);
|
||||||
|
|
@ -121,7 +139,53 @@ class _PaymentNfcViewState extends State<PaymentNfcView> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(widget.model.voucher == null) {
|
||||||
pay();
|
pay();
|
||||||
|
} else {
|
||||||
|
refund();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
refund() async {
|
||||||
|
CardData _cardData = widget.model.cardData;
|
||||||
|
AmanDao findTransaction = await _bankService.findTransaction(transactionNumber: _cardData.transactionNumber, authorizationCode: _cardData.authorizationCode);
|
||||||
|
if(!findTransaction.success){
|
||||||
|
_dialogService.showDialog(description: findTransaction.msg);
|
||||||
|
setState(() {
|
||||||
|
status = 8;
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
status = 1;
|
||||||
|
isPhoneScaled = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
AmanDao refundDao = await _bankService.refund();
|
||||||
|
if (!refundDao.success) {
|
||||||
|
int _status = 7;
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
status = _status;
|
||||||
|
isPhoneScaled = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (refundDao.msg != null) {
|
||||||
|
log.i(refundDao.msg);
|
||||||
|
_dialogService.showDialog(description: refundDao.msg);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
status = 3;
|
||||||
|
isPhoneScaled = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
//check
|
||||||
|
pressRefund('card' , refundDao.data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pay() async {
|
pay() async {
|
||||||
|
|
@ -245,6 +309,57 @@ class _PaymentNfcViewState extends State<PaymentNfcView> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pressRefund(String type, dynamic cardDataDynamic) async {
|
||||||
|
setState(() {
|
||||||
|
isBusy = true;
|
||||||
|
});
|
||||||
|
Dialogs.showLoadingDialog(context, _keyLoader);
|
||||||
|
try {
|
||||||
|
AppState _state = Redux.store.state;
|
||||||
|
String _token = _state.userState.user.token;
|
||||||
|
CardData _cardData = cardDataDynamic != null ? CardData.fromJson(cardDataDynamic) : null;
|
||||||
|
CheckData _checkData = CheckData.fromJson(json.decode(widget.model.voucher.data));
|
||||||
|
Response<dynamic> response = await _dataService.refundM4Bank(
|
||||||
|
token: _token,
|
||||||
|
cardData: _cardData,
|
||||||
|
checkData: _checkData
|
||||||
|
);
|
||||||
|
setState(() {
|
||||||
|
isBusy = false;
|
||||||
|
});
|
||||||
|
if (response != null) {
|
||||||
|
if (response.operation) {
|
||||||
|
String message = response.body['message'];
|
||||||
|
String check = response.body['check'];
|
||||||
|
String url = response?.body['link'];
|
||||||
|
print('url : $url');
|
||||||
|
Redux.store.dispatch(checkMoney);
|
||||||
|
Redux.store.dispatch(openSmenaPseudo);
|
||||||
|
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||||
|
_navigatorService.replace(HomeViewRoute);
|
||||||
|
_navigatorService.push(ImageShowRoute,
|
||||||
|
arguments: ImageShowModel(data: check, title: message, url: url));
|
||||||
|
} else if (!response.operation &&
|
||||||
|
![401, 402, 403, 412, 500].contains(response.status)) {
|
||||||
|
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||||
|
_dialogService.showDialog(description: response.body['message']);
|
||||||
|
} else {
|
||||||
|
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
Navigator.of(_keyLoader.currentContext, rootNavigator: true).pop();
|
||||||
|
} finally {
|
||||||
|
//Navigator.of(context, rootNavigator: true).pop();
|
||||||
|
setState(() {
|
||||||
|
isBusy = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_bankService.shutdown();
|
_bankService.shutdown();
|
||||||
|
|
@ -357,6 +472,19 @@ class _PaymentNfcViewState extends State<PaymentNfcView> {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case 8:
|
||||||
|
return ActionView(
|
||||||
|
show: true,
|
||||||
|
acceptText: 'Повторить',
|
||||||
|
acceptCallback: () {
|
||||||
|
refund();
|
||||||
|
},
|
||||||
|
declineText: 'Отмена',
|
||||||
|
declineCallback: () {
|
||||||
|
cancel();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -382,6 +510,17 @@ class _PaymentNfcViewState extends State<PaymentNfcView> {
|
||||||
fontSize: 35));
|
fontSize: 35));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if(widget.model.voucher !=null) {
|
||||||
|
return StoreConnector<AppState, KassaState>(
|
||||||
|
converter: (store) => store.state.kassaState,
|
||||||
|
builder: (_, vm) {
|
||||||
|
return Text('${widget.model.voucher.total} тнг',
|
||||||
|
style: TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: whiteColor,
|
||||||
|
fontSize: 35));
|
||||||
|
});
|
||||||
|
}
|
||||||
return StoreConnector<AppState, KassaState>(
|
return StoreConnector<AppState, KassaState>(
|
||||||
converter: (store) => store.state.kassaState,
|
converter: (store) => store.state.kassaState,
|
||||||
builder: (_, vm) {
|
builder: (_, vm) {
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,17 @@ class _PhoneViewState extends State<PhoneView> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(widget.status == 8){
|
||||||
|
return Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: <Widget>[
|
||||||
|
Icon(MdiIcons.closeOctagon, color: redColor,size: ScreenUtil().setSp(90.0),),
|
||||||
|
verticalSpaceSmall,
|
||||||
|
AutoSizeText('Ошибка транзакции', style: TextStyle(fontWeight: FontWeight.bold),),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return Container();
|
return Container();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue