up dependencies version

backend_nfc
Serik.Uvaissov 2020-07-17 20:28:43 +06:00
parent c3cf63fdbe
commit 49c3cc5b8d
48 changed files with 229 additions and 4903 deletions

View File

@ -62,6 +62,9 @@ android {
} }
} }
buildTypes { buildTypes {
all {
buildConfigField ("String[]", "SUPPORTED_DEVICES", collectSupportedDevicesToArray())
}
release { release {
signingConfig signingConfigs.release signingConfig signingConfigs.release
} }
@ -123,3 +126,9 @@ dependencies {
implementation deps.websockets // Only for useWebsockets parameter implementation deps.websockets // Only for useWebsockets parameter
} }
def collectSupportedDevicesToArray() {
return '{' + rootProject.ext."supportedDevices${getProject().name}".collect {
"\"${it}\""
}.join(",") + '}'
}

View File

@ -1,65 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.EditText;
import android.widget.Toast;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.library.external.authorization.ActivationCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.ActivationType;
import timber.log.Timber;
public class ActivationCallbackHandlerImpl implements ActivationCallbackHandler {
private final M4BankActivity activity;
public ActivationCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onActivationTypeAndInfoRequested() {
Timber.i("FIRST STEP STARTED");
activity.getClientInterface().getAuthorizationManager().sendActivationFirstStepData(ActivationType.EMAIL, "dm@centercorptech.net");
}
@Override
public void onActivationCodeRequested(Integer codeLifetime) {
Timber.i("FIRST STEP COMPLETED");
Timber.i("SECOND STEP STARTED");
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("ADD activation code:");
EditText editext = new EditText(activity);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface().getAuthorizationManager().sendActivationCode(editext.getText().toString());
dialog.dismiss();
});
builder.setView(editext);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onActivationConfirmRequested() {
Timber.i("SECOND STEP COMPLETED");
Timber.i("LAST STEP STARTED");
activity.getClientInterface().getAuthorizationManager().confirmActivation("1234", null);
}
@Override
public void onCompleted(Result result) {
Timber.i("COMPLETED WITH RESULT - " + result.getResultType());
}
@Override
public void onWrongApiCalled() {
Timber.i("WRONG API CALLED");
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,175 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.EditText;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.AlipayPaymentCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.dynamic.objects.AdditionalTransactionData;
import ru.m4bank.mpos.service.data.dynamic.objects.AlipayCodeType;
import ru.m4bank.mpos.service.data.dynamic.objects.IdentityCodeType;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import timber.log.Timber;
public class AlipayPaymentCallbackHandlerImpl implements AlipayPaymentCallbackHandler<Result> {
private final M4BankActivity activity;
public AlipayPaymentCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onWorkFlowDataRequested() {
Timber.d("WorkFlow requested");
}
@Override
public void onTransactionAmountRequested() {
activity.getClientInterface().getTransactionManager().setTransactionAmount(activity.getAmount());
}
@Override
public void onTransactionDataRequested() {
activity.getClientInterface().getTransactionManager().setAdditionalTransactionData(new AdditionalTransactionData.Builder(null).build());
}
@Override
public void onTransactionBarCodeRequested() {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("ADD QRCODE:");
EditText editext = new EditText(activity);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface().getTransactionManager().setTransactionBarCode(new IdentityCodeType(AlipayCodeType.QRCODE, editext.getText().toString()));
dialog.dismiss();
});
builder.setView(editext);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()),
Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription() == null ? "" : errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface()
.getTransactionManager()
.sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void notAuthorized() {
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction details received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
}
@Override
public void onErrorStatusTransaction() {
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult printerResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List printerList) {
}
}

View File

@ -1,42 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import ru.m4bank.mpos.library.external.authorization.AuthorizationCallbackHandler;
import ru.m4bank.mpos.service.authorization.network.AuthorizationResponse;
public class AuthorizationCallbackHandlerImpl implements AuthorizationCallbackHandler {
private final M4BankActivity activity;
public AuthorizationCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onLoginAndPasswordRequested() {
activity.getClientInterface().getAuthorizationManager().sendLoginAndPassword(activity.getLogin(), activity.getPassword());
}
@Override
public void onCompleted(ru.m4bank.mpos.service.result.Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()),
Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(ru.m4bank.mpos.service.result.Result result, AuthorizationResponse authorizationResponse) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()),
Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,465 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.CardPaymentCallbackHandler;
import ru.m4bank.mpos.service.commons.data.ResultType;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.AdditionalTransactionData;
import ru.m4bank.mpos.service.data.dynamic.objects.GoodsData;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.VendorData;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.AccountingSubject;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.TaxRate;
import ru.m4bank.mpos.service.data.dynamic.objects.result.ResultCode;
import ru.m4bank.mpos.service.hardware.error.AllError;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.ApplicationIdConv;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.TransactionTypeConv;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.VirtualKeyboardStyleTypeConv;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.ButtonKeyboardDto;
import ru.m4bank.mpos.service.transactions.data.MessageButtonData;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.VirtualPinKeyboardData;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import ru.m4bank.mpos.service.transactions.dto.OnlineCardDataDto;
import timber.log.Timber;
public class CardPaymentCallbackHandlerImpl implements CardPaymentCallbackHandler<Result> {
private final M4BankActivity activity;
private CustomKeyBoardDilalog customKeyBoardDilalog;
private TransactionTypeConv transactionTypeConv;
public CardPaymentCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
customKeyBoardDilalog = new CustomKeyBoardDilalog();
transactionTypeConv = TransactionTypeConv.UNKNOWN;
}
public CardPaymentCallbackHandlerImpl setTransactionTypeConv(TransactionTypeConv transactionTypeConv) {
this.transactionTypeConv = transactionTypeConv;
return this;
}
@Override
public void onDeviceToConnectSelectionRequested(List<String> deviceList) {
Timber.d("onDeviceToConnectSelectionRequested");
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, deviceList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getTransactionManager()
.selectCardReader(deviceListSpinner.getSelectedItem().toString());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
Timber.d("Reader has been received");
}
@Override
public void onNoBoundedDevicesFound() {
Timber.d("No bounded readers");
}
@Override
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
Timber.d("onDeviceToUseSelectionRequested");
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface()
.getTransactionManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onTransactionAmountRequested() {
Timber.d("onTransactionAmountRequested");
activity.getClientInterface().getTransactionManager().setTransactionAmount(activity.getAmount());
}
@Override
public void onTransactionDataRequested() {
Timber.d("onTransactionDataRequested");
List<GoodsData> goodsDataList = new ArrayList<>();
goodsDataList.add(new GoodsData.Builder()
.setOriginalPrice(100000L)
.setRealPrice(100000L)
.setName("Принтер")
.setQuantity(1)
.setCode("000001")
.setUnits("00")
.setDiscount(0L)
.setTaxRate(TaxRate.Tax_18)
.setExponent(2)
.setAccountingSubject(AccountingSubject.PRODUCT)
.build());
goodsDataList.add(new GoodsData.Builder()
.setOriginalPrice(30065L)
.setRealPrice(30065L)
.setName("Услуга")
.setQuantity(3)
.setCode("000002")
.setUnits("00")
.setDiscount(0L)
.setTaxRate(TaxRate.Tax_18)
.setExponent(2)
.setAccountingSubject(AccountingSubject.PRODUCT)
.build());
HashMap<String, String> vendorDescription = new HashMap<>();
vendorDescription.put("vendor", "description");
vendorDescription.put("vendor1", "description1");
vendorDescription.put("vendor2", "description2");
vendorDescription.put("vendor3", "description3");
VendorData vendorData = new VendorData(vendorDescription);
AdditionalTransactionData additionalTransactionData = new AdditionalTransactionData.Builder(goodsDataList).vendorData(vendorData).build();
activity.getClientInterface().getTransactionManager().setAdditionalTransactionData(additionalTransactionData);
}
@Override
public void onWorkFlowDataRequested() {
Timber.d("WorkFlow requested");
}
@Override
public void onCompleted(Result result) {
Timber.d("onCompleted");
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
Timber.d("onWrongApiCalled");
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onReceiveCardData(OnlineCardDataDto data, boolean shouldConfirmBeManuallyCalled) {
Timber.d("onReceiveCardData");
if (shouldConfirmBeManuallyCalled) {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
}
@Override
public void onTransactionInit() {
//Impossible
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
Timber.d("onTransactionExecutionStatusChanged: " + newStatus.name());
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
if (transactionErrorData.getError() != null) {
activity.runOnUiThread(() -> Toast.makeText(activity, transactionErrorData.getError().getDescription(), Toast.LENGTH_LONG).show());
} else {
Timber.d("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getDescription());
activity.runOnUiThread(() -> Toast.makeText(activity, String.format("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getFinalDescription()), Toast.LENGTH_LONG).show());
}
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
Timber.d("onErrorWithPossibilityToRetry: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getDescription());
activity.runOnUiThread(() -> Toast.makeText(activity, String.format("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getFinalDescription()), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
Timber.d("onTransactionDataReceivedError");
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
Timber.d("onUserInformationRequested");
if (transactionTypeConv != TransactionTypeConv.CANCEL) {
activity.getClientInterface()
.getTransactionManager()
.sendTransactionUserData("signature", "phone", "vsa@centercorptech.net");
} else {
onTransactionCompleted();
}
}
@Override
public void onTransactionDataReceived(TransactionData data) {
Timber.d("onTransactionDataReceived");
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
Timber.d("onTransactionCompleted");
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onRequiredHostAddress() {
Timber.d("onRequiredHostAddress");
activity.runOnUiThread(() -> Toast.makeText(activity, "Set Host Address", Toast.LENGTH_LONG)
.show());
activity.getClientInterface().getTransactionManager().setHostAddress("213.79.122.128", "8011");
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
Timber.d("onDisconnectedEventReceivedOrCanNotEstablishConnection");
if (reconnectAvailable) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and repeat last operation?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().tryToReconnectAndRepeatLast());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
}
@Override
public void onConnectingProcessStarted(String deviceName) {
Timber.d("Connecting process started: %s", deviceName);
}
@Override
public void onReconnectNeededToProcess() {
Timber.d("onReconnectNeededToProcess");
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and continue?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().getTransactionManager().tryToReconnectToCardReader());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
@Override
public void onReconciliationRequiredToProcess() {
Timber.d("onReconciliationRequiredToProcess");
Timber.d("Reconciliation required!!!");
activity.getClientInterface().getTransactionManager().makeReconciliationDuringTransaction();
}
@Override
public void onReconciliationCompleted(Result result) {
Timber.d("onReconciliationCompleted");
Timber.d("Reconciliation completed!!!");
if (result.getResultType() == ResultType.SUCCESSFUL) {
activity.getClientInterface().getTransactionManager().continueTransactionAfterReconciliation();
} else {
activity.runOnUiThread(() -> Toast.makeText(activity, "Reconciliation failed " + result.getDescription(), Toast.LENGTH_LONG)
.show());
}
}
@Override
public void notAuthorized() {
Timber.d("notAuthorized");
activity.runOnUiThread(() -> Toast.makeText(activity, "notAuthorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
Timber.d("onTransactionDetailsReceived");
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction details received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
Timber.d("onSuccessStatusTransaction");
}
@Override
public void onErrorStatusTransaction() {
Timber.d("onErrorStatusTransaction");
}
@Override
public void onRepeat(int attemptNumber) {
Timber.d("onRepeat");
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
Timber.d("onRequestedReportZ");
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
Timber.d("onCompletedPrinting");
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
Timber.d("onStatusFiscalModule");
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
Timber.d("onPrinterForRegistrationGettingCompleted");
}
@Override
public void onNoBoundedPrinterFound() {
Timber.d("onNoBoundedPrinterFound");
}
@Override
public void onPrinterToUseSelectionRequested(List<String> printerList) {
Timber.d("onPrinterToUseSelectionRequested");
}
@Override
public void onRequiredReversal(String description, ResultCode resultCode) {
Timber.d("onRequiredReversal: %s, resultCode: %s", description, resultCode.name());
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Revert last of operation?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().getTransactionManager().revertCurrentOperation(new RevertCurrentOperationCallbackHandlerImpl(activity)));
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().getTransactionManager().clearLastTransactionInformation());
builder.create().show();
});
}
@Override
public void onRequiredApplicationSelection(List<ApplicationIdConv> list) {
Timber.d("onRequiredApplicationSelection");
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose application identifier");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<ApplicationIdConv> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getTransactionManager()
.setTransactionApplicationIdentifier((ApplicationIdConv) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onActivityUpdateUiThread() {
Timber.d("onActivityUpdateUiThread");
activity.getClientInterface().getTransactionManager().addPinpadClickListener(activity);
}
@Override
public void onCreatePinPadButtons() {
Timber.d("onCreatePinPadButtons");
customKeyBoardDilalog.createDialog(activity);
customKeyBoardDilalog.show(activity);
ButtonKeyboardDto buttonKeyboardDto = new ButtonKeyboardDto.Build(
customKeyBoardDilalog.getBtnb1(),
customKeyBoardDilalog.getBtnb2(),
customKeyBoardDilalog.getBtnb3(),
customKeyBoardDilalog.getBtnb4(),
customKeyBoardDilalog.getBtnb5(),
customKeyBoardDilalog.getBtnb6(),
customKeyBoardDilalog.getBtnb7(),
customKeyBoardDilalog.getBtnb8(),
customKeyBoardDilalog.getBtnb9(),
customKeyBoardDilalog.getBtnb0(),
customKeyBoardDilalog.getBtncancel(),
customKeyBoardDilalog.getBtnconfirm(),
customKeyBoardDilalog.getBtnclean(),
activity.getWindowManager().getDefaultDisplay().getRotation()
).build();
activity.getClientInterface().getTransactionManager().addPinPadButtons(buttonKeyboardDto);
}
@Override
public void onShowPinPadKeyBoard(MessageButtonData messageButtonData) {
Timber.d("onShowPinPadKeyBoard");
customKeyBoardDilalog.setText(messageButtonData);
}
@Override
public void onUpdateElementPin(int count) {
Timber.d("onUpdateElementPin");
activity.runOnUiThread(() -> Toast.makeText(activity, "count = " + count, Toast.LENGTH_SHORT).show());
}
@Override
public void onCloseKeyboard() {
Timber.d("onCloseKeyboard");
customKeyBoardDilalog.close(activity);
}
@Override
public void onRequiredAdditionalVirtualKeyboardSettings(VirtualKeyboardStyleTypeConv virtualKeyboardStyleTypeConv) {
activity.showSelectStyleDialog(additionalData ->
activity.getClientInterface().getTransactionManager().addVirtualPinKeyboardData(additionalData));
}
public interface SelectStyleListener {
void onSelectStyle(VirtualPinKeyboardData virtualPinKeyboardData);
}
}

View File

@ -1,217 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.List;
import kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
import ru.m4bank.mpos.library.external.transactions.CardReadingCallbackHandler;
import ru.m4bank.mpos.service.commons.utils.ArrayUtils;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.ApplicationIdConv;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.SimpleCardTransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import timber.log.Timber;
public class CardReadingCallbackHandlerImpl implements CardReadingCallbackHandler<Result> {
private final M4BankActivity activity;
private CustomKeyBoardDilalog customKeyBoardDilalog;
public CardReadingCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
customKeyBoardDilalog = new CustomKeyBoardDilalog();
}
@Override
public void onDeviceToConnectSelectionRequested(List<String> deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, deviceList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getTransactionManager()
.selectCardReader(deviceListSpinner.getSelectedItem().toString());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
Timber.d("Reader has been received");
}
@Override
public void onNoBoundedDevicesFound() {
Timber.d("No bounded readers");
}
@Override
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, ArrayUtils.newArrayList(deviceList));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getTransactionManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + result.getDescription(), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData errorData) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface()
.getTransactionManager()
.sendTransactionUserData("signature", "phone", "vsa@centercorptech.net");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
if (reconnectAvailable) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and repeat last operation?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().tryToReconnectAndRepeatLast());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
}
@Override
public void onConnectingProcessStarted(String deviceName) {
Timber.d("Connecting process started");
}
@Override
public void onReconnectNeededToProcess() {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and continue?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().getTransactionManager().tryToReconnectToCardReader());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
@Override
public void notAuthorized() {
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onReceiveCommonCardData(SimpleCardTransactionData simpleCardTransactionData) {
String pan = simpleCardTransactionData.getCardNumber();
String expDate = simpleCardTransactionData.getCardExpiryDate();
String cardHolderName = simpleCardTransactionData.getCardHolderName();
activity.runOnUiThread(() -> Toast.makeText(activity, "card data: " + pan + " - " + expDate + " - " + cardHolderName, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequiredApplicationSelection(List<ApplicationIdConv> applicationOfList) {
// activity.runOnUiThread(() -> {
// AlertDialog.Builder builder = new AlertDialog.Builder(activity);
// builder.setTitle("Choose application identifier");
//
// Spinner deviceListSpinner = new Spinner(activity);
// ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, applicationOfList);
// adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// deviceListSpinner.setAdapter(adapter);
//
// builder.setPositiveButton("OK", (dialog, which) -> {
// activity.getClientInterface()
// .getTransactionManager()
// .setTransactionApplicationIdentifier(deviceListSpinner.getSelectedItem().toString());
// dialog.dismiss();
// });
//
// builder.setView(deviceListSpinner);
// builder.create().show();
// });
}
}

View File

@ -1,336 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.EasyCardRefundCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.result.ResultCode;
import ru.m4bank.mpos.service.data.dynamic.objects.transaction.RefundType;
import ru.m4bank.mpos.service.hardware.error.AllError;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.ApplicationIdConv;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.VirtualKeyboardStyleTypeConv;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.ButtonKeyboardDto;
import ru.m4bank.mpos.service.transactions.data.MessageButtonData;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import ru.m4bank.mpos.service.transactions.dto.OnlineCardDataDto;
import timber.log.Timber;
public class CardRefundCallbackHandlerImpl implements EasyCardRefundCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private Transaction transaction;
private CustomKeyBoardDilalog customKeyBoardDilalog;
public CardRefundCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
customKeyBoardDilalog = new CustomKeyBoardDilalog();
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
Timber.d("Reader has been received");
}
@Override
public void onNoBoundedDevicesFound() {
Timber.d("No bounded readers");
}
@Override
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
Timber.d("onDeviceToUseSelectionRequested");
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface().getTransactionManager().setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onDeviceToConnectSelectionRequested(List<String> deviceList) {
Timber.d("onDeviceToConnectSelectionRequested");
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, deviceList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface().getTransactionManager().selectCardReader(deviceListSpinner.getSelectedItem().toString());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onCompleted(Result result) {
Timber.d("onCompleted");
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()),
Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
Timber.d("onWrongApiCalled");
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onReceiveCardData(OnlineCardDataDto data, boolean shouldConfirmBeManuallyCalled) {
Timber.d("onReceiveCardData");
if (shouldConfirmBeManuallyCalled) {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
}
@Override
public void onRequiredReversal(String description, ResultCode resultCode) {
Timber.d("onRequiredReversal: %s, resultCode: %s", description, resultCode.name());
}
@Override
public void onRequiredApplicationSelection(List<ApplicationIdConv> list) {
Timber.d("onRequiredApplicationSelection");
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
Timber.d("onTransactionExecutionStatusChanged: %s", newStatus.name());
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
Timber.d("onError: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getDescription());
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
Timber.d("onErrorWithPossibilityToRetry: %s, description: %s", ((AllError) errorHandler).name(), errorHandler.getDescription());
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
Timber.d("onTransactionDataReceivedError");
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
Timber.d("onUserInformationRequested");
activity.getClientInterface().getTransactionManager().sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
Timber.d("onTransactionDataReceived");
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
Timber.d("onTransactionCompleted");
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
Timber.d("onDisconnectedEventReceivedOrCanNotEstablishConnection");
}
@Override
public void onConnectingProcessStarted(String name) {
Timber.d("onConnectingProcessStarted: %s", name);
}
@Override
public void onReconnectNeededToProcess() {
Timber.d("onReconnectNeededToProcess");
}
@Override
public void onReconciliationRequiredToProcess() {
Timber.d("onReconciliationRequiredToProcess");
Timber.d("Reconciliation required!!!");
activity.getClientInterface().getTransactionManager().makeReconciliationDuringTransaction();
}
@Override
public void onReconciliationCompleted(Result result) {
Timber.d("onReconciliationCompleted");
Timber.d("Reconciliation completed!!!");
}
@Override
public void notAuthorized() {
Timber.d("notAuthorized");
activity.runOnUiThread(() -> Toast.makeText(activity, "notAuthorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
Timber.d("onRepeat");
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
Timber.d("onRequestedReportZ");
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
Timber.d("onCompletedPrinting");
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
Timber.d("onStatusFiscalModule");
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
Timber.d("onPrinterForRegistrationGettingCompleted");
}
@Override
public void onNoBoundedPrinterFound() {
Timber.d("onNoBoundedPrinterFound");
}
@Override
public void onPrinterToUseSelectionRequested(List<String> printerList) {
Timber.d("onPrinterToUseSelectionRequested");
}
@Override
public void onRefundDataRequested() {
Timber.d("onRefundDataRequested");
activity.getClientInterface().getTransactionManager().setRefundData(transaction, transaction.getAmount(), RefundType.General);
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
Timber.d("onTransactionsListReceived");
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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();
activity.getClientInterface().getTransactionManager().makeCardRefund(this);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onActivityUpdateUiThread() {
Timber.d("onActivityUpdateUiThread");
activity.getClientInterface().getTransactionManager().addPinpadClickListener(activity);
}
@Override
public void onCreatePinPadButtons() {
Timber.d("onCreatePinPadButtons");
customKeyBoardDilalog.createDialog(activity);
customKeyBoardDilalog.show(activity);
ButtonKeyboardDto buttonKeyboardDto = new ButtonKeyboardDto.Build(
customKeyBoardDilalog.getBtnb1(),
customKeyBoardDilalog.getBtnb2(),
customKeyBoardDilalog.getBtnb3(),
customKeyBoardDilalog.getBtnb4(),
customKeyBoardDilalog.getBtnb5(),
customKeyBoardDilalog.getBtnb6(),
customKeyBoardDilalog.getBtnb7(),
customKeyBoardDilalog.getBtnb8(),
customKeyBoardDilalog.getBtnb9(),
customKeyBoardDilalog.getBtnb0(),
customKeyBoardDilalog.getBtncancel(),
customKeyBoardDilalog.getBtnconfirm(),
customKeyBoardDilalog.getBtnclean(),
activity.getWindowManager().getDefaultDisplay().getRotation()
).build();
activity.getClientInterface().getTransactionManager().addPinPadButtons(buttonKeyboardDto);
}
@Override
public void onShowPinPadKeyBoard(MessageButtonData messageButtonData) {
Timber.d("onShowPinPadKeyBoard");
customKeyBoardDilalog.setText(messageButtonData);
}
@Override
public void onUpdateElementPin(int count) {
Timber.d("onUpdateElementPin");
activity.runOnUiThread(() -> Toast.makeText(activity, "count = " + count, Toast.LENGTH_SHORT).show());
}
@Override
public void onCloseKeyboard() {
Timber.d("onCloseKeyboard");
customKeyBoardDilalog.close(activity);
}
@Override
public void onRequiredAdditionalVirtualKeyboardSettings(VirtualKeyboardStyleTypeConv virtualKeyboardStyleTypeConv) {
activity.showSelectStyleDialog(additionalData ->
activity.getClientInterface().getTransactionManager().addVirtualPinKeyboardData(additionalData));
}
@Override
public void onRequiredHostAddress() {
Timber.d("onRequiredHostAddress");
activity.runOnUiThread(() -> Toast.makeText(activity, "Set Host Address", Toast.LENGTH_LONG)
.show());
activity.getClientInterface().getTransactionManager().setHostAddress("213.79.122.128", "8011");
}
}

View File

@ -1,187 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.CashPaymentCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.dynamic.objects.AdditionalTransactionData;
import ru.m4bank.mpos.service.data.dynamic.objects.GoodsData;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.AccountingSubject;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.TaxRate;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import timber.log.Timber;
public class CashPaymentCallbackHandlerImpl implements CashPaymentCallbackHandler<Result> {
private final M4BankActivity activity;
public CashPaymentCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onWorkFlowDataRequested() {
Timber.d("WorkFlow requested");
}
@Override
public void onTransactionAmountRequested() {
activity.getClientInterface().getTransactionManager().setTransactionAmount(activity.getAmount());
}
@Override
public void onTransactionDataRequested() {
List<GoodsData> goodsDataList = new ArrayList<>();
goodsDataList.add(new GoodsData.Builder()
.setOriginalPrice(100000L)
.setRealPrice(100000L)
.setName("Принтер")
.setQuantity(1)
.setCode("000001")
.setUnits("00")
.setDiscount(0L)
.setTaxRate(TaxRate.Tax_18)
.setExponent(2)
.setAccountingSubject(AccountingSubject.PRODUCT)
.build());
goodsDataList.add(new GoodsData.Builder()
.setOriginalPrice(30065L)
.setRealPrice(30065L)
.setName("Услуга")
.setQuantity(3)
.setCode("000002")
.setUnits("00")
.setDiscount(0L)
.setTaxRate(TaxRate.Tax_18)
.setExponent(2)
.setAccountingSubject(AccountingSubject.PRODUCT)
.build());
AdditionalTransactionData additionalTransactionData = new AdditionalTransactionData.Builder(goodsDataList).build();
activity.getClientInterface().getTransactionManager().setAdditionalTransactionData(additionalTransactionData);
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()),
Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
Timber.d("onTransactionInit");
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface()
.getTransactionManager()
.sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "notAuthorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction details received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
}
@Override
public void onErrorStatusTransaction() {
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult printerResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List printerList) {
}
}

View File

@ -1,25 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import ru.m4bank.mpos.library.external.configuration.CheckConnectionCallbackHandler;
import ru.m4bank.mpos.service.result.CheckConnectionExternalResult;
public class CheckConnectionCallbackHandlerImpl implements CheckConnectionCallbackHandler {
private final M4BankActivity activity;
public CheckConnectionCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(CheckConnectionExternalResult result) {
activity.runOnUiThread(() ->
Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()) + " " + result.isOnlineRegistration(), Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,52 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.CloseDayCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.handling.result.CloseDayResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.network.closeday.CloseDayResponseInfo;
class CloseDayCallbackHandlerImpl implements CloseDayCallbackHandler<Result> {
private final M4BankActivity activity;
CloseDayCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList, List<CloseDayResponseInfo> list1) {
activity.runOnUiThread(() -> Toast.makeText(activity, "onTransactionsListReceived - " + transactionList, Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(CloseDayResult closeDayResult) {
activity.runOnUiThread(() -> Toast.makeText(activity, closeDayResult.getResultType() + " " + (closeDayResult.getDescription() == null ? "" : closeDayResult.getDescription()), Toast.LENGTH_SHORT)
.show());
}
}

View File

@ -1,21 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.Application;
import timber.log.Timber;
public class CustomApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler((thread, ex) -> {
Timber.v(ex.getMessage());
for (StackTraceElement element : ex.getStackTrace()) {
Timber.v(element.toString());
}
ex.printStackTrace();
System.exit(0);
});
}
}

View File

@ -1,81 +0,0 @@
package kz.com.aman.kassa.bank;
import org.apache.http.conn.scheme.LayeredSocketFactory;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.security.KeyStore;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManager;
public class CustomSSLSocketFactory implements LayeredSocketFactory {
private SSLContext sslcontext = null;
private KeyStore keyStore = null;
public CustomSSLSocketFactory() {
}
public CustomSSLSocketFactory(KeyStore keyStore) {
this.keyStore = keyStore;
}
private SSLContext createEasySSLContext() throws IOException {
try {
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new TrustManager[] { new CustomTrustManager(keyStore) }, null);
return context;
} catch (Exception e) {
throw new IOException(e.getMessage());
}
}
private SSLContext getSSLContext() throws IOException {
if (this.sslcontext == null) {
this.sslcontext = createEasySSLContext();
}
return this.sslcontext;
}
public Socket connectSocket(Socket sock, String host, int port,
InetAddress localAddress, int localPort, HttpParams params)
throws IOException {
int connTimeout = HttpConnectionParams.getConnectionTimeout(params);
int soTimeout = HttpConnectionParams.getSoTimeout(params);
InetSocketAddress remoteAddress = new InetSocketAddress(host, port);
SSLSocket sslSocket = (SSLSocket) ((sock != null) ? sock : createSocket());
if ((localAddress != null) || (localPort > 0)) {
// we need to bind explicitly
if (localPort < 0) {
localPort = 0; // indicates "any"
}
InetSocketAddress isa = new InetSocketAddress(localAddress,
localPort);
sslSocket.bind(isa);
}
sslSocket.connect(remoteAddress, connTimeout);
sslSocket.setSoTimeout(soTimeout);
return sslSocket;
}
public Socket createSocket() throws IOException {
return getSSLContext().getSocketFactory().createSocket();
}
public boolean isSecure(Socket socket) throws IllegalArgumentException {
return true;
}
public Socket createSocket(Socket socket, String host, int port,
boolean autoClose) throws IOException {
return getSSLContext().getSocketFactory().createSocket(socket, host, port, autoClose);
}
}

View File

@ -1,40 +0,0 @@
package kz.com.aman.kassa.bank;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
public class CustomTrustManager implements X509TrustManager {
private X509TrustManager standardTrustManager;
public CustomTrustManager(KeyStore keystore) throws NoSuchAlgorithmException, KeyStoreException {
super();
TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
factory.init(keystore);
TrustManager[] trustManagers = factory.getTrustManagers();
if (trustManagers.length == 0) {
throw new NoSuchAlgorithmException("no trust manager found");
}
standardTrustManager = (X509TrustManager)trustManagers[0];
}
public void checkClientTrusted(X509Certificate[] certificates, String authType) throws CertificateException {
standardTrustManager.checkClientTrusted(certificates, authType);
}
public void checkServerTrusted(X509Certificate[] certificates, String authType) throws CertificateException {
if ((certificates != null) && (certificates.length == 1)) {
certificates[0].checkValidity();
}
}
public X509Certificate[] getAcceptedIssuers() {
return this.standardTrustManager.getAcceptedIssuers();
}
}

View File

@ -1,144 +0,0 @@
package kz.com.aman.kassa.bank;
import java.util.Calendar;
import java.util.Date;
import ru.m4bank.mpos.service.commons.Lists;
import ru.m4bank.mpos.service.data.dynamic.objects.CurrencyEnum;
import ru.m4bank.mpos.service.data.dynamic.objects.ExternalVerificationType;
import ru.m4bank.mpos.service.data.dynamic.objects.GoodsData;
import ru.m4bank.mpos.service.data.dynamic.objects.ProductsAndTransactionData;
import ru.m4bank.mpos.service.data.dynamic.objects.TransactionStatus;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.AccountingSubject;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.TaxRate;
import ru.m4bank.mpos.service.data.dynamic.objects.printer.enums.TaxSystem;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.CardTransTypeConv;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.TransactionTypeConv;
import ru.m4bank.mpos.service.hardware.printer.dto.data.FiscalPrinterMerchantData;
import ru.m4bank.mpos.service.hardware.printer.dto.data.PrinterInformationCheck;
import ru.m4bank.mpos.service.hardware.printer.dto.data.TransactionSlipData;
import ru.m4bank.mpos.service.transactions.data.AccountingSign;
import ru.m4bank.mpos.service.transactions.data.CorrectionType;
import ru.m4bank.mpos.service.transactions.data.external.CurrencyAmount;
import ru.m4bank.mpos.service.transactions.data.external.ExternalCorrectionData;
import ru.m4bank.mpos.service.transactions.data.external.ExternalFiscalData;
import ru.m4bank.mpos.service.transactions.data.external.ExternalSlipData;
import ru.m4bank.mpos.service.transactions.data.external.ExternalStubData;
public class DataCreatorUtils {
public static ExternalCorrectionData makeCorrectionData() {
Calendar date = Calendar.getInstance();
date.set(2019, 3, 1);
return new ExternalCorrectionData.Builder()
.currencyAmount(makeCurrencyAmount())
.calculationSign(AccountingSign.INCOMING)
.correctionType(CorrectionType.INDEPENDENTLY)
.taxRate(TaxRate.Tax_20)
.cash(true)
.docNumber(С345454")
.docDate(date)
.docDescription(" ")
.stubData(makeStubData())
.build();
}
public static ExternalFiscalData makeFiscalData() {
return new ExternalFiscalData.Builder()
.cash(false)
.currency("643")
.phone("12345678")
.informationCheckData(makeInformationCheckData())
.productsAndTransactionData(makeProductsAndTransactionData())
.externalStubData(makeStubData())
.transactionTypeConv(TransactionTypeConv.PAYMENT)
.build();
}
public static ExternalSlipData makeSlipData(boolean newCheck) {
return new ExternalSlipData.Builder()
.currencyAmount(makeCurrencyAmount())
.cash(false)
.merchantData(makeMerchantData())
.newCheck(newCheck)
.transactionData(makeTransactionData())
.transactionType(TransactionTypeConv.PAYMENT)
.cashierName("Петров В.В.")
.build();
}
public static CurrencyAmount makeCurrencyAmount() {
return new CurrencyAmount.Builder().amount(10000).currencyCode(CurrencyEnum.RUS.getStringCurrency()).build();
}
public static FiscalPrinterMerchantData makeMerchantData() {
return new FiscalPrinterMerchantData.Builder()
.merchantAddress("улица Твардовского, Москва Россия")
.merchantId("1732056")
.merchantInn("123456489123")
.merchantName("Center of corporate technologies")
.build();
}
public static TransactionSlipData makeTransactionData() {
return new TransactionSlipData.Builder()
.applicationId("A40000100023056")
.authCode("447041")
.cardHolderName("IVANOV/I")
.currencyCode("643")
.hostResultCode("00")
.interaction(CardTransTypeConv.MAGNETIC_STRIPE)
.originalPan("************8888")
.pan("************8176")
.rrn("123456789")
.terminalNumber("00687879")
.terminalVerificationResults("00000")
.transactionDate(new Date())
.transactionStatus(TransactionStatus.APPROVED)
.typeCard("Mastercard")
.typeVerification(ExternalVerificationType.PIN)
.phone("88008008008562")
.build();
}
public static ExternalStubData makeStubData() {
return new ExternalStubData.Builder()
.shiftNumber("0001")
.factoryNumberKKT("0000000000")
.registerNumberKKT("00000000000000000")
.fiscalDocNumber("2780")
.fiscalMemoryNumber("9999078900003063")
.fiscalSign("32323933373534383633")
.formOfTaxation("УСН")
.merchantData(makeMerchantData())
.phone("12-12-12")
.productsAndTransactionData(makeProductsAndTransactionData())
.build();
}
private static ProductsAndTransactionData makeProductsAndTransactionData() {
return new ProductsAndTransactionData(
Lists.newArrayList(new GoodsData.Builder()
.setOriginalPrice(1500L)
.setRealPrice(1400L)
.setName("Товар")
.setQuantity(1)
.setCode("1")
.setUnits("00")
.setExponent(2)
.setDiscount(100L)
.setTaxRate(TaxRate.Tax_10)
.setAccountingSubject(AccountingSubject.OTHER)
.build()),
1400L, 100L, 1, CurrencyEnum.RUS, TaxSystem.Common);
}
public static PrinterInformationCheck makeInformationCheckData() {
return new PrinterInformationCheck.Builder()
.setCheckNumber("00")
.setDocNumber("1")
.setPd("00")
.setDateAndTime(new Date())
.setInn("7777777777")
.build();
}
}

View File

@ -1,152 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.EasyAlipayRefundCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.transaction.RefundType;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
public class EasyAlipayRefundCallbackHandlerImpl implements EasyAlipayRefundCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private Transaction transaction;
public EasyAlipayRefundCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface().getTransactionManager().sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onRefundDataRequested() {
activity.getClientInterface().getTransactionManager().setRefundData(transaction, transaction.getAmount(), RefundType.General);
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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();
activity.getClientInterface().getTransactionManager().makeAlipayRefund(this);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List<String> printerList) {
}
}

View File

@ -1,363 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.EasyReversalCardCallbackHandler;
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.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.result.ResultCode;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.ApplicationIdConv;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.VirtualKeyboardStyleTypeConv;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.MessageButtonData;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import ru.m4bank.mpos.service.transactions.dto.OnlineCardDataDto;
import timber.log.Timber;
public class EasyCardReversalCallbackHandlerImpl implements EasyReversalCardCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private Transaction transaction;
public EasyCardReversalCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
Timber.d("Reader has been received");
}
@Override
public void onNoBoundedDevicesFound() {
Timber.d("No bounded readers");
}
@Override
public void onConnectingProcessStarted(String deviceName) {
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
if (reconnectAvailable) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and repeat last operation?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().tryToReconnectAndRepeatLast());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
}
@Override
public void onDeviceToConnectSelectionRequested(List deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, deviceList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getTransactionManager()
.selectCardReader(deviceListSpinner.getSelectedItem().toString());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onWorkFlowDataRequested() {
}
@Override
public void onReceiveCardData(OnlineCardDataDto data, boolean shouldConfirmBeManuallyCalled) {
if (shouldConfirmBeManuallyCalled) {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
}
@Override
public void onRequiredReversal(String description, ResultCode resultCode) {
activity.runOnUiThread(() -> Toast.makeText(activity, "onRequiredReversal", Toast.LENGTH_LONG)
.show());
}
@Override
public void onRequiredApplicationSelection(List<ApplicationIdConv> list) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "onTransactionDetailsReceived", Toast.LENGTH_LONG)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "onSuccessStatusTransaction", Toast.LENGTH_LONG)
.show());
}
@Override
public void onErrorStatusTransaction() {
activity.runOnUiThread(() -> Toast.makeText(activity, "onErrorStatusTransaction", Toast.LENGTH_LONG)
.show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onReconciliationRequiredToProcess() {
Timber.d("Reconciliation required!!!");
activity.getClientInterface().getTransactionManager().makeReconciliationDuringTransaction();
}
@Override
public void onReconciliationCompleted(Result result) {
Timber.d("Reconciliation completed!!!");
if (result.getResultType() == ResultType.SUCCESSFUL) {
activity.getClientInterface().getTransactionManager().continueTransactionAfterReconciliation();
} else {
activity.runOnUiThread(() -> Toast.makeText(activity, "Reconciliation failed " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_LONG)
.show());
}
}
@Override
public void onRepeat(int attemptNumber) {
}
@Override
public void onTransactionAmountRequested() {
}
@Override
public void onTransactionDataRequested() {
}
@Override
public void onDeviceToUseSelectionRequested(List deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface()
.getTransactionManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
activity.runOnUiThread(() -> builder.create().show());
});
}
@Override
public void onPrinterToUseSelectionRequested(List printerList) {
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
if (errorHandler.getCode() != null && errorHandler.getDescription() != null) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Error Code: " + errorHandler.getCode() + " error Description: "
+ errorHandler.getDescription(), Toast.LENGTH_LONG)
.show());
} else {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getServerCode() + " "
+ errorHandler.getServerDescription(), Toast.LENGTH_LONG)
.show());
}
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "onTransactionDataReceivedError", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onReconnectNeededToProcess() {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and continue?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().getTransactionManager().tryToReconnectToCardReader());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
@Override
public void onWrongTerminal() {
}
@Override
public void onSelectTransaction() {
activity.getClientInterface().getTransactionManager().selectTransaction(transaction);
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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();
activity.getClientInterface().getTransactionManager().makeCardReversal(this);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onTransactionSelectionRequested(List<Transaction> transactionList) {
}
@Override
public void onActivityUpdateUiThread() {
}
@Override
public void onCreatePinPadButtons() {
}
@Override
public void onShowPinPadKeyBoard(MessageButtonData messageButtonData) {
}
@Override
public void onUpdateElementPin(int i) {
}
@Override
public void onCloseKeyboard() {
}
@Override
public void onRequiredAdditionalVirtualKeyboardSettings(VirtualKeyboardStyleTypeConv virtualKeyboardStyleTypeConv) {
activity.showSelectStyleDialog(additionalData ->
activity.getClientInterface().getTransactionManager().addVirtualPinKeyboardData(additionalData));
}
}

View File

@ -1,153 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.EasyCashRefundCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.transaction.RefundType;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
public class EasyCashRefundCallbackHandlerImpl implements EasyCashRefundCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private Transaction transaction;
public EasyCashRefundCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface().getTransactionManager().sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onRefundDataRequested() {
activity.getClientInterface().getTransactionManager().setRefundData(transaction, transaction.getAmount(), RefundType.General);
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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();
activity.getClientInterface().getTransactionManager().makeCashRefund(this);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List<String> printerList) {
}
}

View File

@ -1,157 +0,0 @@
package kz.com.aman.kassa.bank;;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.EasyEcomRefundCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.transaction.RefundType;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
public class EasyEcomRefundCallbackHandlerImpl implements EasyEcomRefundCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private Transaction transaction;
public EasyEcomRefundCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface().getTransactionManager().sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void onRefundDataRequested() {
activity.getClientInterface().getTransactionManager().setRefundData(transaction, transaction.getAmount(), RefundType.General);
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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();
activity.getClientInterface().getTransactionManager().makeEcomRefund(this);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List<String> printerList) {
}
@Override
public void onPreviewTransactionDataReceived(TransactionData transactionData) {
}
}

View File

@ -1,177 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.ReversalCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
public class EasyReversalCallbackHandlerImpl implements ReversalCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private Transaction transaction;
public EasyReversalCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onTransactionSelectionRequested(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface().getTransactionManager().selectTransaction((Transaction) transactionListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onCardShortPanRequested() {
activity.getClientInterface().getTransactionManager().setCardShortPan("0069", 20, 0);
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
//activity.getClientInterface().getTransactionManager().sendTransactionUserData(null, "phone", "email");
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction reversal complete", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onSelectTransaction() {
activity.getClientInterface().getTransactionManager().selectTransaction(transaction);
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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();
activity.getClientInterface().getTransactionManager().makeEasyReversal(this);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List<String> list) {
}
}

View File

@ -1,174 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.EcomPaymentCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.dynamic.objects.AdditionalTransactionData;
import ru.m4bank.mpos.service.data.dynamic.objects.EmailStatus;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import timber.log.Timber;
public class EcomPaymentCallbackHandlerImpl implements EcomPaymentCallbackHandler<Result> {
private final M4BankActivity activity;
public EcomPaymentCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onWorkFlowDataRequested() {
Timber.d("WorkFlow requested");
}
@Override
public void onTransactionAmountRequested() {
activity.getClientInterface().getTransactionManager().setTransactionAmount(activity.getAmount());
}
@Override
public void onTransactionDataRequested() {
activity.getClientInterface().getTransactionManager().setAdditionalTransactionData(new AdditionalTransactionData.Builder(null).build());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
activity.getClientInterface().getTransactionManager().processOnlineTransaction(false);
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface()
.getTransactionManager()
.sendTransactionUserData("signature", "phone", "email");
}
@Override
public void onFormUrlRequested(String formUrl) {
activity.getClientInterface()
.getTransactionManager()
.sendEcomEmail("qrCode", null, "ap@m4bank.com", EmailStatus.SEND);
activity.runOnUiThread(() -> Toast.makeText(activity, "onFormUrlRequested " + formUrl, Toast.LENGTH_LONG)
.show());
}
@Override
public void onPreviewTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Preview Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction details received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
}
@Override
public void onErrorStatusTransaction() {
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult printerResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List printerList) {
}
}

View File

@ -1,34 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import ru.m4bank.mpos.library.external.configuration.GetLicenseCallbackHandler;
import ru.m4bank.mpos.service.result.Result;
public class GetLicenseCallbackHandlerImpl implements GetLicenseCallbackHandler<Result> {
private final M4BankActivity activity;
public GetLicenseCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onLicenseReceived(String license) {
activity.runOnUiThread(() -> Toast.makeText(activity, license, Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,38 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.authorization.GetMerchantUsersCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.MerchantUser;
import ru.m4bank.mpos.service.result.Result;
public class GetMerchantUsersCallbackHandlerImpl implements GetMerchantUsersCallbackHandler<Result> {
private final M4BankActivity activity;
public GetMerchantUsersCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onListOfUsersRequested(List<MerchantUser> userList) {
activity.runOnUiThread(() -> Toast.makeText(activity, "loaded list of merchant users", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,103 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.GetSerialNumberCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.result.GetSNResult;
import timber.log.Timber;
public class GetSerialNumberCallbackHandlerImpl implements GetSerialNumberCallbackHandler {
private final M4BankActivity activity;
public GetSerialNumberCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
}
@Override
public void onNoBoundedDevicesFound() {
activity.runOnUiThread(() -> Toast.makeText(activity, "onNoBoundedDevicesFound", Toast.LENGTH_SHORT).show());
}
@Override
public void onConnectingProcessStarted(String s) {
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean b, String s) {
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "notAuthorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onDeviceToConnectSelectionRequested(List list) {
Timber.d("onDeviceToConnectSelectionRequested");
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getCardReaderManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onDeviceToUseSelectionRequested(List list) {
Timber.d("onDeviceToUseSelectionRequested");
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, new ArrayList<>(list));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getCardReaderManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onCompleted(GetSNResult result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getSerialNumber(), Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "onWrongApiCalled", Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,84 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.GetTransactionDetailsCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.result.Result;
class GetTransactionDetailsCallbackHandlerImpl implements GetTransactionDetailsCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
GetTransactionDetailsCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction details received: " + transaction, Toast.LENGTH_SHORT)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
}
@Override
public void onErrorStatusTransaction() {
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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 = (Transaction) transactionListSpinner.getSelectedItem();
activity.getClientInterface()
.getTransactionManager()
.getTransactionDetails(this, transaction.getOperationalDayNumber(), transaction
.getTransactionNumber(), transaction.getMobileTerminalId());
dialog.dismiss();
});
builder.setView(transactionListSpinner);
builder.create().show();
});
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,62 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.GetTransactionDetailsCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.result.Result;
class GetTransactionListForRefundCallbackHandlerImpl implements GetTransactionDetailsCallbackHandler<Result>, GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
private final CardRefundCallbackHandlerImpl cardRefundCallbackHandler;
GetTransactionListForRefundCallbackHandlerImpl(M4BankActivity activity, CardRefundCallbackHandlerImpl cardRefundCallbackHandler) {
this.cardRefundCallbackHandler = cardRefundCallbackHandler;
this.activity = activity;
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction details received: " + transaction, Toast.LENGTH_SHORT)
.show());
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
}
@Override
public void onErrorStatusTransaction() {
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
cardRefundCallbackHandler.onTransactionsListReceived(transactionList);
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,133 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.LoadTerminalKeysCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.data.dynamic.objects.result.ResultCode;
import ru.m4bank.mpos.service.hardware.network.external.TerminalKeyType;
import ru.m4bank.mpos.service.result.Result;
import timber.log.Timber;
class LoadTerminalKeysCallbackHandlerImpl implements LoadTerminalKeysCallbackHandler<Result> {
private final M4BankActivity activity;
public LoadTerminalKeysCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void notAuthorized() {
Timber.d("Not authorized");
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onKeyLoad(TerminalKeyType terminalKeyType, String description, ResultCode resultCode) {
Timber.d("key loaded".concat(terminalKeyType.name()));
}
@Override
public void onKeyReceived(TerminalKeyType terminalKeyType, String description, ResultCode resultCode) {
Timber.d("key loaded".concat(terminalKeyType.name()));
}
@Override
public void onError(String description, ResultCode resultCode) {
Timber.d("key loaded" + " onError");
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
Timber.d("Reader has been received");
}
@Override
public void onDeviceToConnectSelectionRequested(List<String> deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, deviceList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getCardReaderManager()
.selectCardReader(deviceListSpinner.getSelectedItem().toString());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface()
.getCardReaderManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onNoBoundedDevicesFound() {
Timber.d("No bounded readers");
}
@Override
public void onConnectingProcessStarted(String deviceName) {
Timber.d("onConnectingProcessStarted");
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
if (reconnectAvailable) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and repeat last operation?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().tryToReconnectAndRepeatLast());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
}
}

View File

@ -1,29 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import ru.m4bank.mpos.library.external.authorization.LogOutCallbackHandler;
import ru.m4bank.mpos.service.result.Result;
public class LogOutCallbackHandlerImpl implements LogOutCallbackHandler {
private final M4BankActivity activity;
public LogOutCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
}

View File

@ -14,14 +14,6 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import kz.com.aman.kassa.R;
import kz.com.aman.kassa.bank.builders.SslConfigurationBuilder;
import kz.com.aman.kassa.bank.gui.SelectDialogCallback;
import kz.com.aman.kassa.bank.gui.SelectElementDialog;
import kz.com.aman.kassa.bank.managing.PreferencesManager;
import kz.com.aman.kassa.bank.permissions.PermissionsManager;
import kz.com.aman.kassa.bank.permissions.PermissionsManagerImpl;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -36,6 +28,13 @@ import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.android.LogcatAppender; import ch.qos.logback.classic.android.LogcatAppender;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder; import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import io.flutter.app.FlutterActivity; import io.flutter.app.FlutterActivity;
import kz.com.aman.kassa.R;
import kz.com.aman.kassa.bank.builders.SslConfigurationBuilder;
import kz.com.aman.kassa.bank.gui.SelectDialogCallback;
import kz.com.aman.kassa.bank.gui.SelectElementDialog;
import kz.com.aman.kassa.bank.managing.PreferencesManager;
import kz.com.aman.kassa.bank.permissions.PermissionsManager;
import kz.com.aman.kassa.bank.permissions.PermissionsManagerImpl;
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;
@ -49,7 +48,8 @@ import ru.m4bank.mpos.library.external.transactions.CardReadingCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.CashPaymentCallbackHandler; import ru.m4bank.mpos.library.external.transactions.CashPaymentCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.EasyCardRefundCallbackHandler; import ru.m4bank.mpos.library.external.transactions.EasyCardRefundCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.EasyCashRefundCallbackHandler; import ru.m4bank.mpos.library.external.transactions.EasyCashRefundCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetSerialNumberCallbackHandler; import ru.m4bank.mpos.library.external.transactions.EasyReversalSavedOperationCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetCardReaderInformationCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionDetailsCallbackHandler; import ru.m4bank.mpos.library.external.transactions.GetTransactionDetailsCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler; import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.LastReversalCardPaymentCallbackHandler; import ru.m4bank.mpos.library.external.transactions.LastReversalCardPaymentCallbackHandler;
@ -113,7 +113,8 @@ public class M4BankActivity extends FlutterActivity {
private PrintingCallbackHandlerImpl printingCallbackHandler; private PrintingCallbackHandlerImpl printingCallbackHandler;
private XReportCallbackHandler xReportCallbackHandler; private XReportCallbackHandler xReportCallbackHandler;
private LastReversalCardPaymentCallbackHandler revertCurrentOperationCallbackHandler; private LastReversalCardPaymentCallbackHandler revertCurrentOperationCallbackHandler;
private GetSerialNumberCallbackHandler getSerialNumberCallbackHandler; private GetCardReaderInformationCallbackHandler getCardReaderInformationCallbackHandler;
private EasyReversalSavedOperationCallbackHandler easyReversalSavedOperationCallbackHandler;
private GetTransactionListForRefundCallbackHandlerImpl getTransactionListForRefundCallbackHandler; private GetTransactionListForRefundCallbackHandlerImpl getTransactionListForRefundCallbackHandler;
private SendRegisterRequestCallbackHandlerImpl sendRegisterRequestCallbackHandler; private SendRegisterRequestCallbackHandlerImpl sendRegisterRequestCallbackHandler;
@ -159,7 +160,7 @@ public class M4BankActivity extends FlutterActivity {
public void onPermissionsDeclined() { public void onPermissionsDeclined() {
Toast.makeText(M4BankActivity.this, Toast.makeText(M4BankActivity.this,
"Application can work incorrectly caused by missing permissions", Toast.LENGTH_SHORT) "Application can work incorrectly caused by missing permissions", Toast.LENGTH_SHORT)
.show(); .show();
init(); init();
} }
}; };
@ -170,7 +171,7 @@ public class M4BankActivity extends FlutterActivity {
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
@NonNull int[] grantResults) { @NonNull int[] grantResults) {
permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionsManager.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
@ -223,7 +224,7 @@ public class M4BankActivity extends FlutterActivity {
//слушатель для получения списка мерчантов //слушатель для получения списка мерчантов
getMerchantUsersCallbackHandler = new GetMerchantUsersCallbackHandlerImpl(this); getMerchantUsersCallbackHandler = new GetMerchantUsersCallbackHandlerImpl(this);
//слушатель поулчения лицензии //слушатель получения лицензии
getLicenseCallbackHandler = new GetLicenseCallbackHandlerImpl(this); getLicenseCallbackHandler = new GetLicenseCallbackHandlerImpl(this);
//слушатель повторной отправки чека //слушатель повторной отправки чека
resendReceiptCallbackHandler = new ResendReceiptCallbackHandlerImpl(this); resendReceiptCallbackHandler = new ResendReceiptCallbackHandlerImpl(this);
@ -236,13 +237,15 @@ public class M4BankActivity extends FlutterActivity {
//слушатели печати //слушатели печати
printingCallbackHandler = new PrintingCallbackHandlerImpl(this); printingCallbackHandler = new PrintingCallbackHandlerImpl(this);
//слушатель для получения серийного номера //слушатель для получения серийного номера
getSerialNumberCallbackHandler = new GetSerialNumberCallbackHandlerImpl(this); getCardReaderInformationCallbackHandler = new GetCardReaderInformationCallbackHandlerImpl(this);
//слушатель для считывания barcode //слушатель для считывания barcode
scanBarCodeCallbackHandler = new ScanBarCodeCallbackHandlerImpl(this); scanBarCodeCallbackHandler = new ScanBarCodeCallbackHandlerImpl(this);
// слушатель для отмены неуспешной операции, которая сохранена в холдере
easyReversalSavedOperationCallbackHandler = new EasyReversalSavedOperationCallbackHandlerImpl(this);
initLoginForm(); initLoginForm();
initButton(R.id.getSerialNumber, v -> getSerialNumber()); initButton(R.id.readerInformation, v -> getReaderInformation());
initButton(R.id.activate, v -> clientInterface.getAuthorizationManager().activate(activationCallbackHandler)); initButton(R.id.activate, v -> clientInterface.getAuthorizationManager().activate(activationCallbackHandler));
@ -250,16 +253,16 @@ public class M4BankActivity extends FlutterActivity {
v -> clientInterface.getAuthorizationManager().logOut(logOutCallbackHandler)); v -> clientInterface.getAuthorizationManager().logOut(logOutCallbackHandler));
initButton(R.id.checkConnection, v -> clientInterface.getConfigurationManager() initButton(R.id.checkConnection, v -> clientInterface.getConfigurationManager()
.checkConnection( .checkConnection(
checkConnectionCallbackHandler)); checkConnectionCallbackHandler));
initButton(R.id.checkAccess, v -> { initButton(R.id.checkAccess, v -> {
String result; String result;
if (clientInterface.getConfigurationManager() if (clientInterface.getConfigurationManager()
.isOperationAllowed( .isOperationAllowed(
OperationType.getByCode(((Spinner) findViewById(R.id.checkAccessSpinner)) OperationType.getByCode(((Spinner) findViewById(R.id.checkAccessSpinner))
.getSelectedItem() .getSelectedItem()
.toString()))) { .toString()))) {
result = "YES"; result = "YES";
} else { } else {
result = "NO"; result = "NO";
@ -270,7 +273,7 @@ public class M4BankActivity extends FlutterActivity {
initButton(R.id.getAccesses, v -> { initButton(R.id.getAccesses, v -> {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
List<OperationType> availableOperations = clientInterface.getConfigurationManager() List<OperationType> availableOperations = clientInterface.getConfigurationManager()
.getAllowedOperationsList(); .getAllowedOperationsList();
if (!availableOperations.isEmpty()) { if (!availableOperations.isEmpty()) {
for (OperationType o : availableOperations) { for (OperationType o : availableOperations) {
result.append(o.getCode()).append("\n"); result.append(o.getCode()).append("\n");
@ -335,63 +338,63 @@ public class M4BankActivity extends FlutterActivity {
//////////// вызов отмены текущей транзакции с использованием нового слушателя (только во время транзакции) - хостовые терминалы////////////// //////////// вызов отмены текущей транзакции с использованием нового слушателя (только во время транзакции) - хостовые терминалы//////////////
initButton(R.id.makeReversalLastWithCallback, v -> clientInterface.getTransactionManager() initButton(R.id.makeReversalLastWithCallback, v -> clientInterface.getTransactionManager()
.revertCurrentOperation( .revertCurrentOperation(
revertCurrentOperationCallbackHandler)); revertCurrentOperationCallbackHandler));
/////////// вызовы отмены по карте////////////// /////////// вызовы отмены по карте//////////////
initButton(R.id.makeEasyCardReversal, v -> { initButton(R.id.makeEasyCardReversal, v -> {
clientInterface.cancel(); clientInterface.cancel();
clientInterface.getTransactionManager() clientInterface.getTransactionManager()
.getTransactionsList(easyCardReversalCallbackHandler, 20, 0, GetOperationType.SHOW, null); .getTransactionsList(easyCardReversalCallbackHandler, 20, 0, GetOperationType.SHOW, null);
}); });
/////////// вызовы отмены на сервере////////////// /////////// вызовы отмены на сервере//////////////
initButton(R.id.makeEasyReversal, v -> clientInterface.getTransactionManager() initButton(R.id.makeEasyReversal, v -> clientInterface.getTransactionManager()
.getTransactionsList( .getTransactionsList(
(GetTransactionsListCallbackHandler) easyReversalCallbackHandler, (GetTransactionsListCallbackHandler) easyReversalCallbackHandler,
20, 0, GetOperationType.SHOW, 20, 0, GetOperationType.SHOW,
null)); null));
//////////// вызовы возвратов ////////////// //////////// вызовы возвратов //////////////
initButton(R.id.makeCardRefund, v -> { initButton(R.id.makeCardRefund, v -> {
clientInterface.cancel(); clientInterface.cancel();
clientInterface.getTransactionManager() clientInterface.getTransactionManager()
.getTransactionsList(getTransactionListForRefundCallbackHandler, 20, 0, .getTransactionsList(getTransactionListForRefundCallbackHandler, 20, 0,
GetOperationType.SHOW, null); GetOperationType.SHOW, null);
}); });
initButton(R.id.makeCashRefund, v -> { initButton(R.id.makeCashRefund, v -> {
clientInterface.cancel(); clientInterface.cancel();
clientInterface.getTransactionManager() clientInterface.getTransactionManager()
.getTransactionsList((GetTransactionsListCallbackHandler) easyCashRefundCallbackHandler, 20, .getTransactionsList((GetTransactionsListCallbackHandler) easyCashRefundCallbackHandler, 20,
0, GetOperationType.SHOW, null); 0, GetOperationType.SHOW, null);
}); });
initButton(R.id.makeAlipayRefund, v -> clientInterface.getTransactionManager() initButton(R.id.makeAlipayRefund, v -> clientInterface.getTransactionManager()
.getTransactionsList( .getTransactionsList(
(GetTransactionsListCallbackHandler) easyAlipayRefundCallbackHandler, (GetTransactionsListCallbackHandler) easyAlipayRefundCallbackHandler,
20, 0, GetOperationType.SHOW, 20, 0, GetOperationType.SHOW,
null)); null));
//////////// получение списка мерчантов ////////////// //////////// получение списка мерчантов //////////////
initButton(R.id.getMerchantUsers, v -> clientInterface.getAuthorizationManager() initButton(R.id.getMerchantUsers, v -> clientInterface.getAuthorizationManager()
.getMerchantUsers(getMerchantUsersCallbackHandler, 1000, .getMerchantUsers(getMerchantUsersCallbackHandler, 1000,
0)); 0));
//////////// повторная отправка чека на почту ////////////// //////////// повторная отправка чека на почту //////////////
initButton(R.id.resendReceipt, v -> clientInterface.getTransactionManager() initButton(R.id.resendReceipt, v -> clientInterface.getTransactionManager()
.getTransactionsList( .getTransactionsList(
(GetTransactionsListCallbackHandler) resendReceiptCallbackHandler, (GetTransactionsListCallbackHandler) resendReceiptCallbackHandler,
20, 0, GetOperationType.SHOW, 20, 0, GetOperationType.SHOW,
null)); null));
//////////// получение детальной информации о транзакции ////////////// //////////// получение детальной информации о транзакции //////////////
initButton(R.id.getTransactionDetails, v -> clientInterface.getTransactionManager() initButton(R.id.getTransactionDetails, v -> clientInterface.getTransactionManager()
.getTransactionsList( .getTransactionsList(
(GetTransactionsListCallbackHandler) getTransactionDetailsCallbackHandler, (GetTransactionsListCallbackHandler) getTransactionDetailsCallbackHandler,
20, 0, 20, 0,
GetOperationType.SHOW, GetOperationType.SHOW,
null)); null));
//////////// получение детальной информации о текущей транзакции////////////// //////////// получение детальной информации о текущей транзакции//////////////
initButton(R.id.getCurrentTransactionDetails, initButton(R.id.getCurrentTransactionDetails,
@ -399,18 +402,17 @@ public class M4BankActivity extends FlutterActivity {
//////////// получение спика транзакций с использованием фильтра ////////////// //////////// получение спика транзакций с использованием фильтра //////////////
initButton(R.id.getTransactionListFilter, v -> clientInterface.getTransactionManager() initButton(R.id.getTransactionListFilter, v -> clientInterface.getTransactionManager()
.getTransactionsList( .getTransactionsList(
(GetTransactionsListCallbackHandler) getTransactionDetailsCallbackHandler, (GetTransactionsListCallbackHandler) getTransactionDetailsCallbackHandler,
20, 0, GetOperationType.SEARCH, 20, 0, GetOperationType.SEARCH,
new TransactionFilterData.Builder().setScanerCode( new TransactionFilterData.Builder().setScanerCode(
"6354635635736647656").build())); "6354635635736647656").build()));
//////////// отправка данных для регистрации mpos - дополнительный функционал при активации////////////// //////////// отправка данных для регистрации mpos - дополнительный функционал при активации//////////////
findViewById(R.id.sendRegisterRequest).setOnClickListener(v -> { findViewById(R.id.sendRegisterRequest).setOnClickListener(v -> {
String url = "https://test.ponkratenko.ru"; String url = "https://test.ponkratenko.ru";
//String savedServerUrl = PreferencesManager.loadStringField(this, PreferencesManager.Field.SERVER_URL, getString(R.string.default_server_address_mpos_5_0_test));
clientInterface.getConfigurationManager() clientInterface.getConfigurationManager()
.sendRegisterRequest(sendRegisterRequestCallbackHandler, getRegisterRequestData(), url); .sendRegisterRequest(sendRegisterRequestCallbackHandler, getRegisterRequestData(), url);
}); });
//запись на терминал ключей tmk, tpk //запись на терминал ключей tmk, tpk
@ -421,7 +423,7 @@ public class M4BankActivity extends FlutterActivity {
add(TerminalKeyType.Tpk); add(TerminalKeyType.Tpk);
}}; }};
clientInterface.getCardReaderManager() clientInterface.getCardReaderManager()
.loadTerminalKeys(new LoadTerminalKeysCallbackHandlerImpl(this), keysForDynamicUpdate); .loadTerminalKeys(new LoadTerminalKeysCallbackHandlerImpl(this), keysForDynamicUpdate);
}); });
//////////// закрытие смены и сверка с сервером ////////////// //////////// закрытие смены и сверка с сервером //////////////
@ -430,8 +432,8 @@ public class M4BankActivity extends FlutterActivity {
//////////// добавление принтера в систему с возможностью печати во время транзакций ////////////// //////////// добавление принтера в систему с возможностью печати во время транзакций //////////////
initButton(R.id.addPrinter, v -> clientInterface.getPrinterManager() initButton(R.id.addPrinter, v -> clientInterface.getPrinterManager()
.addNewPrinter(printingCallbackHandler, .addNewPrinter(printingCallbackHandler,
PrinterSeries.NEW_PRINTER)); PrinterSeries.NEW_PRINTER));
//////////// удаление принтера из системы ////////////// //////////// удаление принтера из системы //////////////
initButton(R.id.deletePrinter, initButton(R.id.deletePrinter,
@ -440,14 +442,14 @@ public class M4BankActivity extends FlutterActivity {
initButton(R.id.printFiscal, v -> { initButton(R.id.printFiscal, v -> {
clientInterface.cancel(); clientInterface.cancel();
clientInterface.getPrinterManager() clientInterface.getPrinterManager()
.printFiscalTransactionCheck(printingCallbackHandler, DataCreatorUtils.makeFiscalData()); .printFiscalTransactionCheck(printingCallbackHandler, DataCreatorUtils.makeFiscalData());
}); });
initButton(R.id.printSlipCheck, v -> { initButton(R.id.printSlipCheck, v -> {
clientInterface.cancel(); clientInterface.cancel();
clientInterface.getPrinterManager() clientInterface.getPrinterManager()
.printFirstSlipTransactionCheck(printingCallbackHandler, DataCreatorUtils.makeSlipData(true), .printFirstSlipTransactionCheck(printingCallbackHandler, DataCreatorUtils.makeSlipData(true),
SlipType.ERROR); SlipType.ERROR);
}); });
initButton(R.id.printReportX, v1 -> { initButton(R.id.printReportX, v1 -> {
@ -479,6 +481,16 @@ public class M4BankActivity extends FlutterActivity {
initButton(R.id.readBarCode, v2 -> showDialogScanner()); initButton(R.id.readBarCode, v2 -> showDialogScanner());
findViewById(R.id.versionStore).setOnClickListener(v -> {
String result = clientInterface.getExternalApiManager().getExternalStoreVersion();
Toast.makeText(this, result + "", Toast.LENGTH_SHORT).show();
});
findViewById(R.id.versionTracker).setOnClickListener(v -> {
String result = clientInterface.getExternalApiManager().getExternalTrackerVersion();
Toast.makeText(this, result + "", Toast.LENGTH_SHORT).show();
});
String savedServerUrl = PreferencesManager.loadStringField(this, PreferencesManager.Field.SERVER_URL, String savedServerUrl = PreferencesManager.loadStringField(this, PreferencesManager.Field.SERVER_URL,
getString(R.string.default_server_address_mpos_5_0_test)); getString(R.string.default_server_address_mpos_5_0_test));
String serverUrl; String serverUrl;
@ -583,6 +595,11 @@ public class M4BankActivity extends FlutterActivity {
//обновление словаря в библиотеке ридера //обновление словаря в библиотеке ридера
initButton(R.id.updateDictionary, v -> updateDictionary(aisinoDictionary)); initButton(R.id.updateDictionary, v -> updateDictionary(aisinoDictionary));
// отмена неуспешной операции, которая сохранена в холдере
initButton(R.id.makeReversalSavedUnsuccessfulOperation, v ->
clientInterface.getTransactionManager()
.makeReversalSavedUnsuccessfulOperation(easyReversalSavedOperationCallbackHandler));
} }
private void initButton(int id, View.OnClickListener onClickListener) { private void initButton(int id, View.OnClickListener onClickListener) {
@ -610,6 +627,7 @@ public class M4BankActivity extends FlutterActivity {
.energySaverModeTime(150) .energySaverModeTime(150)
.pinLengthsArray(new byte[]{4, 6}) .pinLengthsArray(new byte[]{4, 6})
.shutDownModeTime(300) .shutDownModeTime(300)
.deviceType(new DeviceTypeDefiner().define())
.build(); .build();
} }
@ -662,8 +680,8 @@ public class M4BankActivity extends FlutterActivity {
clientInterface.getConfigurationManager().updateDictionary(dictionaryCore); clientInterface.getConfigurationManager().updateDictionary(dictionaryCore);
} }
private void getSerialNumber() { private void getReaderInformation() {
clientInterface.getCardReaderManager().getCardReaderSerialNumber(getSerialNumberCallbackHandler); clientInterface.getCardReaderManager().getCardReaderInformation(getCardReaderInformationCallbackHandler);
} }
@Override @Override
@ -693,7 +711,7 @@ public class M4BankActivity extends FlutterActivity {
private RegisterRequestData getRegisterRequestData() { private RegisterRequestData getRegisterRequestData() {
String code = "1" + (int) (Math.random() * 1000) + "" + (int) (Math.random() * 1000) + "" + String code = "1" + (int) (Math.random() * 1000) + "" + (int) (Math.random() * 1000) + "" +
(int) (Math.random() * 1000); (int) (Math.random() * 1000);
String date = new SimpleDateFormat("yyyy-MM-dd H:m:s").format(new Date()); String date = new SimpleDateFormat("yyyy-MM-dd H:m:s").format(new Date());
String acquiringType = "mPOS"; String acquiringType = "mPOS";
String ip = "169.254.10.10"; String ip = "169.254.10.10";

View File

@ -1,77 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.PrintingCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.hardware.printer.dto.data.PrintingType;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import timber.log.Timber;
public class PrintingCallbackHandlerImpl implements PrintingCallbackHandler<Result, PrinterResult<PrinterErrorData, PrinterBaseData>> {
private final M4BankActivity activity;
public PrintingCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onRequestedReportZ() {
Timber.i("onRequestedReportZ");
activity.getClientInterface().getPrinterManager().printReport(this, PrintingType.Z_REPORT);
}
@Override
public void onCompletedPrinting(PrinterResult printerResult) {
Timber.i("onCompletedPrinting = " + printerResult);
activity.runOnUiThread(() -> Toast.makeText(activity, "onCompletedPrinting = " + printerResult, Toast.LENGTH_SHORT).show());
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
Timber.i("onPrinterForRegistrationGettingCompleted");
activity.runOnUiThread(() -> Toast.makeText(activity, "Saved printer - " + activity.getClientInterface().getPrinterManager().isSavedPrinterName(), Toast.LENGTH_SHORT).show());
}
@Override
public void onNoBoundedPrinterFound() {
Timber.i("onNoBoundedPrinterFound");
}
@Override
public void onPrinterToUseSelectionRequested(List printerList) {
Timber.i("printerList = " + printerList);
activity.getClientInterface().getPrinterManager().selectPrinter(printerList.get(0).toString());
}
@Override
public void onCompleted(Result result) {
Timber.i("onCompleted = " + result.getResultType().toString());
}
@Override
public void onWrongApiCalled() {
Timber.i("onWrongApiCalled");
}
@Override
public void onRepeat(int attemptNumber) {
Timber.i("onRepeat");
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,73 +0,0 @@
package kz.com.aman.kassa.bank;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.service.data.dynamic.objects.CurrencyEnum;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.hardware.printer.dto.data.ReconciliationData;
import ru.m4bank.mpos.service.hardware.printer.dto.data.ReconciliationOperationData;
import ru.m4bank.mpos.service.hardware.printer.dto.data.TransactionType;
import ru.m4bank.mpos.service.transactions.data.TransactionMoneyInteractionType;
public class ReconciliationPrinterDataBuilder {
public ReconciliationData build(List<Transaction> transactionList, boolean closeDay) {
ArrayList<ReconciliationOperationData> reconciliationOperationDataList = new ArrayList<ReconciliationOperationData>();
if (transactionList == null) return null;
for (Transaction transaction : transactionList) {
if (!isErrorStatus(transaction)) {
reconciliationOperationDataList.add(buildOneElement(transaction));
}
}
return new ReconciliationData(reconciliationOperationDataList, closeDay);
}
private ReconciliationOperationData buildOneElement(Transaction transaction) {
return new ReconciliationOperationData.Builder(
transaction.getAmount(),
transaction.getMaskedPan(),
CurrencyEnum.getCurrencyEnum(Integer.parseInt(transaction.getCurrency3DigitCode())),
getPrinterOperationType(transaction.getTransactionType()),
transaction.getExternalTerminalId(), transaction.getPiDataType().getTypePIData().equals(TransactionMoneyInteractionType.CASH.toString()))
.cardType(transaction.getCardType())
.date(transaction.getTransactionDate())
.checkId(transaction.getCheck())
.externalMerchantId(transaction.getExternalMerchantId())
.externalMerchantName(transaction.getExternalMerchantName())
.externalMerchantAdress(transaction.getExternalMerchantAddress())
.authorizationCode(transaction.getAuthorizationCode())
.refNumber(transaction.getRrn())
.time(transaction.getTransactionTime())
.build();
}
private TransactionType getPrinterOperationType(String type) {
if (type == null) return null;
switch (type.toUpperCase()) {
case "PAYMENT":
return TransactionType.INCOMING;
case "REFUND":
return TransactionType.INCOMING_REFUND;
case "REVERSAL":
return TransactionType.REVERSAL;
}
return null;
}
public static boolean isErrorStatus(Transaction transaction) {
if (transaction == null || transaction.getOperationStatus() == null) {
return true;
}
switch (transaction.getOperationStatus()) {
case COMPLETED:
case REVERSED:
case READER_TIMEOUT:
return false;
default:
return true;
}
}
}

View File

@ -1,64 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.GetTransactionsListCallbackHandler;
import ru.m4bank.mpos.library.external.transactions.ResendReceiptCallbackHandler;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.result.Result;
class ResendReceiptCallbackHandlerImpl implements ResendReceiptCallbackHandler<Result>,
GetTransactionsListCallbackHandler<Result> {
private final M4BankActivity activity;
ResendReceiptCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionsListReceived(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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 = (Transaction) transactionListSpinner.getSelectedItem();
activity.getClientInterface().getTransactionManager().resendReceipt(this, transaction, "vsa@centercorptech.net", null);
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,154 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.ReversalCallbackHandler;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.PrinterBaseData;
import ru.m4bank.mpos.service.data.PrinterErrorData;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
public class ReversalCallbackHandlerImpl implements ReversalCallbackHandler<Result> {
private final M4BankActivity activity;
public ReversalCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onTransactionSelectionRequested(List<Transaction> transactionList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose transaction");
Spinner transactionListSpinner = new Spinner(activity);
ArrayAdapter<Transaction> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface().getTransactionManager().selectTransaction((Transaction) transactionListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(transactionListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onCardShortPanRequested() {
activity.getClientInterface().getTransactionManager().setCardShortPan("0069", 20, 0);
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
activity.runOnUiThread(() -> Toast.makeText(activity, newStatus.name(), Toast.LENGTH_SHORT).show());
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
activity.runOnUiThread(() -> Toast.makeText(activity, errorHandler.getFinalDescription(), Toast.LENGTH_LONG).show());
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
activity.getClientInterface().getTransactionManager().sendTransactionUserData(null, "phone", "email");
}
@Override
public void onTransactionDataReceived(TransactionData data) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Transaction data has been received", Toast.LENGTH_LONG)
.show());
}
@Override
public void onTransactionCompleted() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Operation has been successfully completed", Toast.LENGTH_LONG)
.show());
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onRepeat(int attemptNumber) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Repeat attempt number " + attemptNumber, Toast.LENGTH_SHORT).show());
}
@Override
public void onSelectTransaction() {
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult<PrinterErrorData, PrinterBaseData> printerErrorDataPrinterBaseDataPrinterResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onPrinterToUseSelectionRequested(List<String> list) {
}
}

View File

@ -1,309 +0,0 @@
package kz.com.aman.kassa.bank;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.LastReversalCardPaymentCallbackHandler;
import ru.m4bank.mpos.service.commons.data.ResultType;
import ru.m4bank.mpos.service.data.FiscalStatusData;
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.data.dynamic.objects.result.ResultCode;
import ru.m4bank.mpos.service.hardware.error.ErrorHandler;
import ru.m4bank.mpos.service.hardware.external.cardreaderlib.data.enums.VirtualKeyboardStyleTypeConv;
import ru.m4bank.mpos.service.result.PrinterResult;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.MessageButtonData;
import ru.m4bank.mpos.service.transactions.data.TransactionData;
import ru.m4bank.mpos.service.transactions.data.TransactionExecutionStatus;
import ru.m4bank.mpos.service.transactions.data.error.TransactionErrorData;
import ru.m4bank.mpos.service.transactions.dto.OnlineCardDataDto;
import timber.log.Timber;
public class RevertCurrentOperationCallbackHandlerImpl implements LastReversalCardPaymentCallbackHandler<Result> {
private final M4BankActivity activity;
public RevertCurrentOperationCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT)
.show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
}
@Override
public void onNoBoundedDevicesFound() {
}
@Override
public void onConnectingProcessStarted(String deviceName) {
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
if (reconnectAvailable) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and repeat last operation?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().tryToReconnectAndRepeatLast());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
}
@Override
public void onDeviceToConnectSelectionRequested(List deviceList) {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, deviceList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
deviceListSpinner.setAdapter(adapter);
builder.setPositiveButton("OK", (dialog, which) -> {
activity.getClientInterface()
.getTransactionManager()
.selectCardReader(deviceListSpinner.getSelectedItem().toString());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
builder.create().show();
});
}
@Override
public void onWorkFlowDataRequested() {
}
@Override
public void onReceiveCardData(OnlineCardDataDto data, boolean shouldConfirmBeManuallyCalled) {
}
@Override
public void onRequiredReversal(String description, ResultCode resultCode) {
}
@Override
public void onRequiredApplicationSelection(List applicationOfList) {
}
@Override
public void onPrinterForRegistrationGettingCompleted() {
}
@Override
public void onNoBoundedPrinterFound() {
}
@Override
public void onTransactionDetailsReceived(Transaction transaction) {
}
@Override
public void onSuccessStatusTransaction(Transaction transaction) {
}
@Override
public void onErrorStatusTransaction() {
}
@Override
public void onRequestedReportZ() {
}
@Override
public void onCompletedPrinting(PrinterResult printerResult) {
}
@Override
public void onStatusFiscalModule(FiscalStatusData fiscalStatusData) {
}
@Override
public void onReconciliationRequiredToProcess() {
Timber.d("Reconciliation required!!!");
activity.getClientInterface().getTransactionManager().makeReconciliationDuringTransaction();
}
@Override
public void onReconciliationCompleted(Result result) {
Timber.d("Reconciliation completed!!!");
if (result.getResultType() == ResultType.SUCCESSFUL) {
activity.getClientInterface().getTransactionManager().continueTransactionAfterReconciliation();
} else {
activity.runOnUiThread(() -> Toast.makeText(activity, "Reconciliation failed " + (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_LONG)
.show());
}
}
@Override
public void onRepeat(int attemptNumber) {
}
@Override
public void onTransactionAmountRequested() {
}
@Override
public void onTransactionDataRequested() {
}
@Override
public void onDeviceToUseSelectionRequested(List deviceList) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Choose device");
Spinner deviceListSpinner = new Spinner(activity);
ArrayAdapter<Reader> adapter = new ArrayAdapter<>(activity, 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) -> {
activity.getClientInterface()
.getTransactionManager()
.setCardReaderToUse((Reader) deviceListSpinner.getSelectedItem());
dialog.dismiss();
});
builder.setView(deviceListSpinner);
activity.runOnUiThread(() -> builder.create().show());
}
@Override
public void onPrinterToUseSelectionRequested(List printerList) {
}
@Override
public void onTransactionInit() {
}
@Override
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
}
@Override
public void onUserInformationRequested(boolean signNeeded) {
}
@Override
public void onError(ErrorHandler errorHandler, TransactionErrorData transactionErrorData) {
}
@Override
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
activity.getClientInterface().getTransactionManager().tryToRepeatExecuteLastRequestInTransaction();
}
@Override
public void onTransactionDataReceivedError(TransactionData data) {
}
@Override
public void onTransactionDataReceived(TransactionData data) {
}
@Override
public void onTransactionCompleted() {
}
@Override
public void onReconnectNeededToProcess() {
activity.runOnUiThread(() -> {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setMessage("Connection to cardreader has been lost, try to reconnect and continue?");
builder.setCancelable(false);
builder.setPositiveButton("Yes", (dialog, which) -> activity.getClientInterface().getTransactionManager().tryToReconnectToCardReader());
builder.setNegativeButton("No", (dialog, which) -> activity.getClientInterface().cancel());
builder.create().show();
});
}
@Override
public void onWrongTerminal() {
}
@Override
public void onActivityUpdateUiThread() {
}
@Override
public void onCreatePinPadButtons() {
}
@Override
public void onShowPinPadKeyBoard(MessageButtonData messageButtonData) {
}
@Override
public void onUpdateElementPin(int i) {
}
@Override
public void onCloseKeyboard() {
}
@Override
public void onRequiredAdditionalVirtualKeyboardSettings(VirtualKeyboardStyleTypeConv virtualKeyboardStyleTypeConv) {
}
}

View File

@ -1,72 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.external.transactions.ScanBarCodeCallbackHandler;
import ru.m4bank.mpos.service.result.Result;
public class ScanBarCodeCallbackHandlerImpl implements ScanBarCodeCallbackHandler {
private final M4BankActivity activity;
public ScanBarCodeCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleteBarCode(String result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result, Toast.LENGTH_SHORT).show());
}
@Override
public void onError(String result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result, Toast.LENGTH_SHORT).show());
}
@Override
public void onCardReaderForTransactionGettingCompleted() {
}
@Override
public void onNoBoundedDevicesFound() {
}
@Override
public void onConnectingProcessStarted(String s) {
}
@Override
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean b, String s) {
}
@Override
public void onDeviceToUseSelectionRequested(List list) {
}
@Override
public void notAuthorized() {
}
@Override
public void onDeviceToConnectSelectionRequested(List list) {
}
@Override
public void onCompleted(Result result) {
activity.runOnUiThread(() -> Toast.makeText(activity, (result.getDescription() == null ? "" : result.getDescription()), Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
}
}

View File

@ -1,24 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import ru.m4bank.mpos.library.external.configuration.SendRegisterRequestCallbackHandler;
import ru.m4bank.mpos.service.result.SendRegisterRequestExternalResult;
public class SendRegisterRequestCallbackHandlerImpl implements SendRegisterRequestCallbackHandler {
private final M4BankActivity activity;
public SendRegisterRequestCallbackHandlerImpl(M4BankActivity activity) {
this.activity = activity;
}
@Override
public void onCompleted(SendRegisterRequestExternalResult result) {
activity.runOnUiThread(() -> Toast.makeText(activity, result.getResultType() + " " + result.getRequestCode() + " " + result.getStatus(), Toast.LENGTH_SHORT).show());
}
@Override
public void onWrongApiCalled() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}
}

View File

@ -1,11 +0,0 @@
package kz.com.aman.kassa.bank;
import ru.m4bank.mpos.library.external.SessionExpiringCallbackHandler;
import timber.log.Timber;
public class SessionExpiringCallbackHandlerImpl implements SessionExpiringCallbackHandler {
@Override
public void onSessionExpired() {
Timber.w("SESSION EXPIRED!");
}
}

View File

@ -1,5 +0,0 @@
package kz.com.aman.kassa.bank;;
public enum TerminalKeyTypeMpos {
Tmp, Tpk, Tak
}

View File

@ -1,72 +0,0 @@
package kz.com.aman.kassa.bank;
import android.widget.Toast;
import java.util.List;
import ru.m4bank.mpos.library.M4BankMposClientInterfaceFacade;
import ru.m4bank.mpos.library.external.transactions.XReportCallbackHandler;
import ru.m4bank.mpos.service.commons.data.ResultType;
import ru.m4bank.mpos.service.data.dynamic.objects.Transaction;
import ru.m4bank.mpos.service.hardware.printer.dto.data.PrintingType;
import ru.m4bank.mpos.service.result.Result;
import ru.m4bank.mpos.service.transactions.data.external.ExternalReconciliationData;
public class XReportCallbackHandlerImpl implements XReportCallbackHandler<Result> {
private PrintingType reportType;
private M4BankActivity activity;
private M4BankMposClientInterfaceFacade clientInterface;
public XReportCallbackHandlerImpl(M4BankMposClientInterfaceFacade clientInterface, PrintingType reportType, M4BankActivity activity) {
this.reportType = reportType;
this.activity = activity;
this.clientInterface = clientInterface;
}
@Override
public void onTransactionsListReceived(List<Transaction> list) {
if(list == null || list.isEmpty()) {
activity.runOnUiThread(() -> Toast.makeText(activity, "list of transaction is empty", Toast.LENGTH_SHORT).show());
} else {
ExternalReconciliationData data = new ExternalReconciliationData.Builder()
.reconciliationData(new ReconciliationPrinterDataBuilder().build(list, false))
.build();
printReport(clientInterface, reportType, data);
}
}
@Override
public void notAuthorized() {
activity.runOnUiThread(() -> Toast.makeText(activity, "Not authorized", Toast.LENGTH_SHORT).show());
}
@Override
public void onCompleted(Result result) {
if(result == null || result.getResultType() != ResultType.SUCCESSFUL) {
activity.runOnUiThread(() -> Toast.makeText(activity, "Wrong method has been called", Toast.LENGTH_SHORT).show());
}else if(result.getResultType() == ResultType.SUCCESSFUL){
// if code is successful and list is empty -> reconciliation is already done
activity.runOnUiThread(() -> Toast.makeText(activity, "list of transaction is empty", Toast.LENGTH_SHORT).show());
}
}
@Override
public void onWrongApiCalled() {
}
@Override
public void onRepeat(int i) {
}
private void printReport(M4BankMposClientInterfaceFacade clientInterface, PrintingType reportType, ExternalReconciliationData data) {
clientInterface.cancel();
if(reportType == PrintingType.RECONCILIATION_FULL_REPORT) {
clientInterface.getPrinterManager().printReconciliationReportFull(new PrintingCallbackHandlerImpl(activity), data);
} else {
clientInterface.getPrinterManager().printReconciliationReportShort(new PrintingCallbackHandlerImpl(activity), data);
}
}
}

View File

@ -1,50 +0,0 @@
package kz.com.aman.kassa.bank.builders;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager;
import ru.m4bank.mpos.service.network.retrofit.SSLConfiguration;
public class SslConfigurationBuilder {
public static SSLConfiguration buildAllTrustConfiguration(String serverAddress) {
X509TrustManager[] trustManager = getTrustManagers();
return new SSLConfiguration.Builder()
.trustManager(trustManager[0])
.hostnameVerifier(getHostnameVerifier(serverAddress))
.socketFactory(getSSLSocketFactory(trustManager))
.build();
}
private static HostnameVerifier getHostnameVerifier(String serverUrl) {
return (hostname, session) -> true;
}
private static X509TrustManager[] getTrustManagers() {
return new X509TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[]{};
}
}};
}
private static SSLSocketFactory getSSLSocketFactory(X509TrustManager[] trustManager) {
try {
final SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManager, new java.security.SecureRandom());
return sslContext.getSocketFactory();
} catch (Exception e) {
return null;
}
}
}

View File

@ -1,129 +0,0 @@
package kz.com.aman.kassa.bank.gui;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import kz.com.aman.kassa.R;
import ru.m4bank.mpos.service.transactions.data.MessageButtonData;
public class CustomKeyBoardDilalog {
Button btnb1, btnb2, btnb3, btnb4, btnb5, btnb6, btnb7, btnb8, btnb9, btnb0,
btncancel, btnconfirm, btnclean;
View view;
Dialog dialog;
public void createDialog(Context context) {
dialog = new Dialog(context);
view = LayoutInflater.from(context).inflate(R.layout.layout_pin, null);
btnb1 = (Button) view.findViewById(R.id.button1);
btnb2 = (Button) view.findViewById(R.id.button2);
btnb3 = (Button) view.findViewById(R.id.button3);
btnb4 = (Button) view.findViewById(R.id.button4);
btnb5 = (Button) view.findViewById(R.id.button5);
btnb6 = (Button) view.findViewById(R.id.button6);
btnb7 = (Button) view.findViewById(R.id.button7);
btnb8 = (Button) view.findViewById(R.id.button8);
btnb9 = (Button) view.findViewById(R.id.button9);
btnb0 = (Button) view.findViewById(R.id.button0);
btncancel = (Button) view.findViewById(R.id.buttoncan);
btnconfirm = (Button) view.findViewById(R.id.buttonconfirm);
btnclean = (Button) view.findViewById(R.id.buttonclean);
Window dialogWindow = dialog.getWindow();
dialogWindow.setGravity( Gravity.BOTTOM);
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.x = 0;
lp.y = 0;
view.measure(0, 0);
lp.height = view.getMeasuredHeight();
lp.alpha = 9f;
dialogWindow.setAttributes(lp);
dialog.setContentView(view);
}
public void show(Activity activity) {
if (!activity.isFinishing())
dialog.show();
}
public void close(Activity activity) {
if (!activity.isFinishing() && dialog != null && dialog.isShowing())
dialog.dismiss();
}
public void setText(MessageButtonData messageButtonData) {
btnb1.setText("" + messageButtonData.getBtnb1());
btnb2.setText("" + messageButtonData.getBtnb2());
btnb3.setText("" + messageButtonData.getBtnb3());
btnb4.setText("" + messageButtonData.getBtnb4());
btnb5.setText("" + messageButtonData.getBtnb5());
btnb6.setText("" + messageButtonData.getBtnb6());
btnb7.setText("" + messageButtonData.getBtnb7());
btnb8.setText("" + messageButtonData.getBtnb8());
btnb9.setText("" + messageButtonData.getBtnb9());
btnb0.setText("" + messageButtonData.getBtnb0());
}
public Button getBtnb1() {
return btnb1;
}
public Button getBtnb2() {
return btnb2;
}
public Button getBtnb3() {
return btnb3;
}
public Button getBtnb4() {
return btnb4;
}
public Button getBtnb5() {
return btnb5;
}
public Button getBtnb6() {
return btnb6;
}
public Button getBtnb7() {
return btnb7;
}
public Button getBtnb8() {
return btnb8;
}
public Button getBtnb9() {
return btnb9;
}
public Button getBtnb0() {
return btnb0;
}
public Button getBtncancel() {
return btncancel;
}
public Button getBtnconfirm() {
return btnconfirm;
}
public Button getBtnclean() {
return btnclean;
}
}

View File

@ -1,10 +0,0 @@
package kz.com.aman.kassa.bank.gui;
/**
* Created by pppoo on 27.02.2018.
*/
public interface SelectDialogCallback<ElementType> {
void onElementSelected(ElementType element);
void onCancelSelection();
}

View File

@ -1,64 +0,0 @@
package kz.com.aman.kassa.bank.gui;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import kz.com.aman.kassa.R;
import java.util.List;
public class SelectElementDialog<ElementType> extends Dialog {
private Context context;
ArrayAdapter<ElementType> listAdapter;
private TextView labelTitle;
private ListView list;
private SelectDialogCallback<ElementType> selectDialogCallback;
public SelectElementDialog(final Context context, List<ElementType> elements, SelectDialogCallback<ElementType> selectDialogCallback) {
super(context);
this.context = context;
this.selectDialogCallback = selectDialogCallback;
setCancelable(false);
setCanceledOnTouchOutside(false);
init(elements);
list.setAdapter(listAdapter);
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
list.setOnItemClickListener((arg0, arg1, arg2, arg3) -> {
ElementType element = (ElementType) arg0.getItemAtPosition(arg2);
selectDialogCallback.onElementSelected(element);
((Activity) context).runOnUiThread(this::dismiss);
});
}
private void init(List<ElementType> elements) {
setContentView(R.layout.custom_dialog_list);
labelTitle = findViewById(R.id.labelMessage);
list = findViewById(R.id.list);
listAdapter = new ArrayAdapter<ElementType>(context, R.layout.list_item, R.id.itemView, elements);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
public void setTitle(String text) {
if (null != labelTitle)
labelTitle.setText(text);
}
public static void showError(Context context, String message) {
try {
Dialog dialog = new Dialog(context);
dialog.setTitle(message);
dialog.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,37 +0,0 @@
package kz.com.aman.kassa.bank.managing;
import android.content.Context;
import android.content.SharedPreferences;
import static android.content.Context.MODE_PRIVATE;
public class PreferencesManager {
public enum Field {
LOGIN("Login"), PASSWORD("Password"), SERVER_URL("ServerUrl");
private String code;
Field(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
public static void saveStringField(Context context, Field field, String value) {
SharedPreferences preferences = context.getSharedPreferences("preferences", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(field.getCode(), value).apply();
}
public static String loadStringField(Context context, Field field) {
return loadStringField(context, field, null);
}
public static String loadStringField(Context context, Field field, String defaultValue) {
SharedPreferences preferences = context.getSharedPreferences("preferences", MODE_PRIVATE);
return preferences.getString(field.getCode(), defaultValue);
}
}

View File

@ -1,11 +0,0 @@
package kz.com.aman.kassa.bank.permissions;
public interface PermissionsManager {
void checkPermissions(PermissionsCheckResultHandler handler);
void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults);
interface PermissionsCheckResultHandler {
void onPermissionsGranted();
void onPermissionsDeclined();
}
}

View File

@ -1,65 +0,0 @@
package kz.com.aman.kassa.bank.permissions;
import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class PermissionsManagerImpl implements PermissionsManager {
private static final int MY_PERMISSIONS_REQUEST = 107;
private static final String[] PERMISSIONS_LIST = new String[]{
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
private final Activity activity;
private PermissionsCheckResultHandler permissionsCheckResultHandler;
public PermissionsManagerImpl(Activity activity) {
this.activity = activity;
}
@Override
public void checkPermissions(PermissionsCheckResultHandler permissionsCheckResultHandler) {
for (String permission : PERMISSIONS_LIST) {
if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
this.permissionsCheckResultHandler = permissionsCheckResultHandler;
ActivityCompat.requestPermissions(activity, PERMISSIONS_LIST, MY_PERMISSIONS_REQUEST);
return;
}
}
permissionsCheckResultHandler.onPermissionsGranted();
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST: {
if (grantResults.length == PERMISSIONS_LIST.length) {
if (arePermissionsGranted(grantResults)) {
permissionsCheckResultHandler.onPermissionsGranted();
} else {
permissionsCheckResultHandler.onPermissionsDeclined();
}
}
}
}
}
private boolean arePermissionsGranted(int[] grantResults) {
boolean access = true;
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED)
access = false;
}
return access;
}
}

View File

@ -65,11 +65,11 @@
android:text="@string/logout_button" /> android:text="@string/logout_button" />
<!--<Button--> <!--<Button-->
<!--android:id="@+id/changePassword"--> <!--android:id="@+id/changePassword"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:layout_gravity="center_horizontal"--> <!--android:layout_gravity="center_horizontal"-->
<!--android:text="@string/change_password_button" />--> <!--android:text="@string/change_password_button" />-->
</LinearLayout> </LinearLayout>
@ -78,48 +78,48 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<!--<EditText--> <!--<EditText-->
<!--android:id="@+id/oldPassword"--> <!--android:id="@+id/oldPassword"-->
<!--android:layout_width="0dp"--> <!--android:layout_width="0dp"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"--> <!--android:layout_weight="1"-->
<!--android:hint="@string/old_password_hint"--> <!--android:hint="@string/old_password_hint"-->
<!--android:inputType="textPassword" />--> <!--android:inputType="textPassword" />-->
<!--<EditText--> <!--<EditText-->
<!--android:id="@+id/newPassword"--> <!--android:id="@+id/newPassword"-->
<!--android:layout_width="0dp"--> <!--android:layout_width="0dp"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"--> <!--android:layout_weight="1"-->
<!--android:hint="@string/new_password_hint"--> <!--android:hint="@string/new_password_hint"-->
<!--android:inputType="textPassword" />--> <!--android:inputType="textPassword" />-->
</LinearLayout> </LinearLayout>
<!--<Button--> <!--<Button-->
<!--android:id="@+id/register"--> <!--android:id="@+id/register"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:text="@string/register_button" />--> <!--android:text="@string/register_button" />-->
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<!--<EditText--> <!--<EditText-->
<!--android:id="@+id/code"--> <!--android:id="@+id/code"-->
<!--android:layout_width="0dp"--> <!--android:layout_width="0dp"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"--> <!--android:layout_weight="1"-->
<!--android:hint="@string/code_hint"--> <!--android:hint="@string/code_hint"-->
<!--android:inputType="number" />--> <!--android:inputType="number" />-->
<!--<EditText--> <!--<EditText-->
<!--android:id="@+id/pin"--> <!--android:id="@+id/pin"-->
<!--android:layout_width="0dp"--> <!--android:layout_width="0dp"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:layout_weight="1"--> <!--android:layout_weight="1"-->
<!--android:hint="@string/pin_hint"--> <!--android:hint="@string/pin_hint"-->
<!--android:inputType="number" />--> <!--android:inputType="number" />-->
</LinearLayout> </LinearLayout>
@ -153,16 +153,16 @@
android:orientation="horizontal"> android:orientation="horizontal">
<!--<Button--> <!--<Button-->
<!--android:id="@+id/setLanguage"--> <!--android:id="@+id/setLanguage"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/set_language" />--> <!--android:text="@string/set_language" />-->
<!--<Spinner--> <!--<Spinner-->
<!--android:id="@+id/setLanguageSpinner"--> <!--android:id="@+id/setLanguageSpinner"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"--> <!--android:layout_height="wrap_content"-->
<!--android:entries="@array/languages" />--> <!--android:entries="@array/languages" />-->
</LinearLayout> </LinearLayout>
@ -184,25 +184,25 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<Button <Button
android:id="@+id/makeCardPayment" android:id="@+id/makeCardPayment"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:text="@string/make_card_payment" /> android:text="@string/make_card_payment" />
<Button <Button
android:id="@+id/getCommonCardData" android:id="@+id/getCommonCardData"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:text="@string/get_common_card_data" /> android:text="@string/get_common_card_data" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -232,10 +232,22 @@
</LinearLayout> </LinearLayout>
<Button <Button
android:id="@+id/getSerialNumber" android:id="@+id/readerInformation"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:text="@string/getSerialNumber" /> android:text="@string/reader_information" />
<Button
android:id="@+id/versionStore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/version_store" />
<Button
android:id="@+id/versionTracker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/version_tracker" />
<Button <Button
android:id="@+id/makeReversalLastWithCallback" android:id="@+id/makeReversalLastWithCallback"
@ -262,10 +274,10 @@
android:text="@string/make_card_refund" /> android:text="@string/make_card_refund" />
<!--<Button--> <!--<Button-->
<!--android:id="@+id/makeCardRefundWithD200"--> <!--android:id="@+id/makeCardRefundWithD200"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/make_card_refund_with_d200" />--> <!--android:text="@string/make_card_refund_with_d200" />-->
<Button <Button
android:id="@+id/makeCashRefund" android:id="@+id/makeCashRefund"
@ -274,10 +286,10 @@
android:text="@string/make_cash_refund" /> android:text="@string/make_cash_refund" />
<!--<Button--> <!--<Button-->
<!--android:id="@+id/makeCashRefundWithD200"--> <!--android:id="@+id/makeCashRefundWithD200"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/make_cash_refund_with_d200" />--> <!--android:text="@string/make_cash_refund_with_d200" />-->
<Button <Button
android:id="@+id/makeAlipayRefund" android:id="@+id/makeAlipayRefund"
@ -286,10 +298,10 @@
android:text="@string/make_alipay_refund" /> android:text="@string/make_alipay_refund" />
<!--<Button--> <!--<Button-->
<!--android:id="@+id/makeReversal"--> <!--android:id="@+id/makeReversal"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/make_reversal" />--> <!--android:text="@string/make_reversal" />-->
<Button <Button
android:id="@+id/makeEasyReversal" android:id="@+id/makeEasyReversal"
@ -303,35 +315,41 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:text="@string/make_easy_card_reversal" /> android:text="@string/make_easy_card_reversal" />
<Button
android:id="@+id/makeReversalSavedUnsuccessfulOperation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/makeReversalSavedUnsuccessfulOperation" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<!--<Button--> <!--<Button-->
<!--android:id="@+id/makeReconciliation"--> <!--android:id="@+id/makeReconciliation"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/make_reconciliation" />--> <!--android:text="@string/make_reconciliation" />-->
<!--<Button--> <!--<Button-->
<!--android:id="@+id/enterServiceMenu"--> <!--android:id="@+id/enterServiceMenu"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/enter_service_menu" />--> <!--android:text="@string/enter_service_menu" />-->
</LinearLayout> </LinearLayout>
<!--<Button--> <!--<Button-->
<!--android:id="@+id/addAdditionalCardReader"--> <!--android:id="@+id/addAdditionalCardReader"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/add_additional_card_reader" />--> <!--android:text="@string/add_additional_card_reader" />-->
<!--<Button--> <!--<Button-->
<!--android:id="@+id/getReadersInfo"--> <!--android:id="@+id/getReadersInfo"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/get_readers_info" />--> <!--android:text="@string/get_readers_info" />-->
<Button <Button
android:id="@+id/getMerchantUsers" android:id="@+id/getMerchantUsers"
@ -418,10 +436,10 @@
android:text="@string/printing_short_report" /> android:text="@string/printing_short_report" />
<!--<Button--> <!--<Button-->
<!--android:id="@+id/executeExternalApplication"--> <!--android:id="@+id/executeExternalApplication"-->
<!--android:layout_width="wrap_content"--> <!--android:layout_width="wrap_content"-->
<!--android:layout_height="match_parent"--> <!--android:layout_height="match_parent"-->
<!--android:text="@string/call_external_application" />--> <!--android:text="@string/call_external_application" />-->
<Button <Button
android:id="@+id/sendRegisterRequest" android:id="@+id/sendRegisterRequest"

View File

@ -35,6 +35,7 @@
<string name="make_reversal">Make reversal</string> <string name="make_reversal">Make reversal</string>
<string name="make_easy_reversal">Make easy reversal</string> <string name="make_easy_reversal">Make easy reversal</string>
<string name="make_easy_card_reversal">Make easy card reversal</string> <string name="make_easy_card_reversal">Make easy card reversal</string>
<string name="makeReversalSavedUnsuccessfulOperation">make Reversal Saved Unsuccessful Operation</string>
<string name="make_reconciliation">Make reconciliation</string> <string name="make_reconciliation">Make reconciliation</string>
<string name="get_merchant_users">Get merchant users</string> <string name="get_merchant_users">Get merchant users</string>
<string name="get_access_payment_instruments">Get access PI</string> <string name="get_access_payment_instruments">Get access PI</string>
@ -82,7 +83,9 @@
<string name="make_ecom_payment">Make ecom payment</string> <string name="make_ecom_payment">Make ecom payment</string>
<string name="enter_service_menu">Enter service menu</string> <string name="enter_service_menu">Enter service menu</string>
<string name="make_reversal_last_saved_operation">Make reversal last saved operation</string> <string name="make_reversal_last_saved_operation">Make reversal last saved operation</string>
<string name="getSerialNumber">Get Serial Number</string> <string name="reader_information">Get reader information</string>
<string name="version_store">Store version</string>
<string name="version_tracker">Tracker version</string>
<string name="pin_text_btn_1">1</string> <string name="pin_text_btn_1">1</string>
<string name="pin_text_btn_2">2</string> <string name="pin_text_btn_2">2</string>

View File

@ -23,6 +23,10 @@ buildscript {
] ]
ext.deps = [ ext.deps = [
'support' : [
'appcompatV7': "com.android.support:appcompat-v7:${versions.supportLibrary}",
'multidex' : "com.android.support:multidex:${versions.multidex}",
],
'okhttp' : [ 'okhttp' : [
'core' : "com.squareup.okhttp3:okhttp:${versions.okhttp}", 'core' : "com.squareup.okhttp3:okhttp:${versions.okhttp}",
'logger': "com.squareup.okhttp3:logging-interceptor:${versions.okhttp}", 'logger': "com.squareup.okhttp3:logging-interceptor:${versions.okhttp}",
@ -49,20 +53,20 @@ buildscript {
'retro_stream': 'net.sourceforge.streamsupport:android-retrostreams:1.6.3', 'retro_stream': 'net.sourceforge.streamsupport:android-retrostreams:1.6.3',
'hardware' : [ 'hardware' : [
"terminalCommon": [ "terminalCommon": [
"cardreaderlib" : "m4bank:cardreaderlib:750", "cardreaderlib" : "m4bank:cardreaderlib:759",
"connectionreaders": "m4bank:connectionreaders:750", "connectionreaders": "m4bank:connectionreaders:759",
"emv-taglib" : "external:emv-taglib:2.4", "emv_taglib" : "external:emv-taglib:2.5",
], ],
'aisino' : [ 'aisino' : [
"aisino_common": "m4bank:aisino_common:138", "aisino_common": "m4bank:aisino_common:140",
"vm20" : [ "vm20" : [
"vm20" : "external:vm20sdk:9", "vm20" : "external:vm20sdk:9",
"asinalib": "m4bank:asinalib:99" "asinalib": "m4bank:asinalib:100"
], ],
"a90" : [ "a90" : [
"aisinoprinterlib": "m4bank:aisinoprinterlib:152", "aisinoprinterlib": "m4bank:aisinoprinterlib:153",
"aisino_a90lib" : "m4bank:aisino_a90lib:422", "aisino_a90lib" : "m4bank:aisino_a90lib:437",
"aisino_a90deps" : "m4bank:aisino_a90deps:master-1.1.42@aar", "aisino_a90deps" : "m4bank:aisino_a90deps:master-1.1.43@aar",
], ],
], ],
'wangpos' : [ 'wangpos' : [
@ -90,16 +94,26 @@ buildscript {
], ],
"spirelib" : "m4bank:spirelib:138", "spirelib" : "m4bank:spirelib:138",
"softpos" : [ "softpos" : [
"softpaylibrary" : "m4bank:softpaylibrary:41@aar", "softpaylibrary" : "m4bank:softpaylibrary:52@aar",
"softpay_dependencies": "m4bank:softpay_dependencies:1.1.1.52@aar", "softpay_dependencies": "m4bank:softpay_dependencies:1.1.4.62@aar",
], ],
"sunmi" : "m4bank:sunmiv1printerlibrary:5", "sunmi" : "m4bank:sunmiv1printerlibrary:5",
"redlib" : "m4bank:redlib:1", "redlib" : "m4bank:redlib:1",
"d200lib" : "m4bank:d200lib:9", "d200lib" : "m4bank:d200lib:9",
], ],
"zlibrary" : "m4bank:zlibrary:2134@aar" "zlibrary" : "m4bank:zlibrary:2159@aar"
] ]
//TODO: 20.09.2019 for future refactoring: add gradle properties parameter to set supported device remotely
if (ext.buildType.buildType == 'NFC') {
ext.supportedDevicesapp = ['SoftPos', 'Shtrih', 'Atol']
} else {
ext.supportedDevicesapp = ['Deftun', 'Singular', 'CctRed', 'RoamData', 'Rp350n', 'WisePad', 'RoamPad',
'Qpos', 'Icmp', 'Spire', 'D200', 'RoamPadNfc', 'IcmpUpos', 'WangPos',
'OrangeRoamPad', 'FakeReader', 'Aisino', 'AisinoA90',
'Shtrih', 'Sunmi', 'Atol', 'AisinoA70']
}
ext.currentRepository = "http://217.174.185.218:55555/artifactory/gradle-dev" ext.currentRepository = "http://217.174.185.218:55555/artifactory/gradle-dev"
} }