add
parent
49c3cc5b8d
commit
ef10080cd2
|
|
@ -0,0 +1,65 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,463 @@
|
|||
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.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,215 @@
|
|||
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();
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,334 @@
|
|||
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 kz.com.aman.kassa.bank.gui.CustomKeyBoardDilalog;
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package kz.com.aman.kassa.bank;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.landicorp.uns.result;
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,144 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package kz.com.aman.kassa.bank;
|
||||
|
||||
import kz.com.aman.kassa.BuildConfig;
|
||||
import ru.m4bank.mpos.service.commons.utils.VirtualDeviceUtils;
|
||||
import ru.m4bank.mpos.service.data.dynamic.objects.DeviceType;
|
||||
|
||||
public class DeviceTypeDefiner {
|
||||
public DeviceType define() {
|
||||
if (VirtualDeviceUtils.isDevice()) {
|
||||
return DeviceType.SMART_POS;
|
||||
}
|
||||
|
||||
String[] supportedDevices = BuildConfig.SUPPORTED_DEVICES;
|
||||
if (containsIgnoreCase(supportedDevices, "SoftPos")) {
|
||||
return DeviceType.SOFT_POS;
|
||||
}
|
||||
|
||||
return DeviceType.PHONE;
|
||||
}
|
||||
|
||||
private boolean containsIgnoreCase(String[] array, String checkValue) {
|
||||
for (String arrayValue : array) {
|
||||
if (arrayValue.equalsIgnoreCase(checkValue)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,363 @@
|
|||
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));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
package kz.com.aman.kassa.bank;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ru.m4bank.mpos.library.external.transactions.EasyReversalSavedOperationCallbackHandler;
|
||||
import ru.m4bank.mpos.service.data.FiscalStatusData;
|
||||
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 EasyReversalSavedOperationCallbackHandlerImpl implements EasyReversalSavedOperationCallbackHandler {
|
||||
private M4BankActivity activity;
|
||||
|
||||
public EasyReversalSavedOperationCallbackHandlerImpl(M4BankActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionIsNotReversible() {
|
||||
showMessage("onTransactionIsNotReversible");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSelectTransaction() {
|
||||
showMessage("onSelectTransaction");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCompletedPrinting(PrinterResult result) {
|
||||
showMessage("onCompletedPrinting");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusFiscalModule(FiscalStatusData fiscalStatusDatat) {
|
||||
showMessage("onStatusFiscalModule");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionSelectionRequested(List list) {
|
||||
showMessage("onTransactionSelectionRequested");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCardShortPanRequested() {
|
||||
showMessage("onCardShortPanRequested");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notAuthorized() {
|
||||
showMessage("notAuthorized");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCompleted(Result result) {
|
||||
showMessage("onCompleted");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWrongApiCalled() {
|
||||
showMessage("onWrongApiCalled");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestedReportZ() {
|
||||
showMessage("onRequestedReportZ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionInit() {
|
||||
showMessage("onTransactionInit");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionExecutionStatusChanged(TransactionExecutionStatus newStatus) {
|
||||
showMessage("onTransactionExecutionStatusChanged: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserInformationRequested(boolean signNeeded) {
|
||||
showMessage("onUserInformationRequested");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorHandler errorHandler, TransactionErrorData errorData) {
|
||||
showMessage("onError");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onErrorWithPossibilityToRetry(ErrorHandler errorHandler) {
|
||||
showMessage("onErrorWithPossibilityToRetry");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionDataReceivedError(TransactionData data) {
|
||||
showMessage("onTransactionDataReceivedError");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionDataReceived(TransactionData data) {
|
||||
showMessage("onTransactionDataReceived");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransactionCompleted() {
|
||||
showMessage("onTransactionCompleted");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRepeat(int attemptNumber) {
|
||||
showMessage("onRepeat");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrinterForRegistrationGettingCompleted() {
|
||||
showMessage("onPrinterForRegistrationGettingCompleted");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNoBoundedPrinterFound() {
|
||||
showMessage("onNoBoundedPrinterFound");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPrinterToUseSelectionRequested(List printerList) {
|
||||
showMessage("onPrinterToUseSelectionRequested");
|
||||
}
|
||||
|
||||
private void showMessage(String message) {
|
||||
activity.runOnUiThread(() -> Toast.makeText(activity, message, Toast.LENGTH_LONG).show());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
package kz.com.aman.kassa.bank;
|
||||
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import ru.m4bank.mpos.library.external.transactions.GetCardReaderInformationCallbackHandler;
|
||||
import ru.m4bank.mpos.service.data.dynamic.objects.Reader;
|
||||
import ru.m4bank.mpos.service.result.GetCardReaderInformationResult;
|
||||
import timber.log.Timber;
|
||||
|
||||
public class GetCardReaderInformationCallbackHandlerImpl implements GetCardReaderInformationCallbackHandler {
|
||||
private final M4BankActivity activity;
|
||||
|
||||
public GetCardReaderInformationCallbackHandlerImpl(M4BankActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCardReaderForTransactionGettingCompleted() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNoBoundedDevicesFound() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectingProcessStarted(String deviceName) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnectedEventReceivedOrCanNotEstablishConnection(boolean reconnectAvailable, String description) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeviceToUseSelectionRequested(List<Reader> deviceList) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notAuthorized() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeviceToConnectSelectionRequested(List<String> deviceList) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCompleted(GetCardReaderInformationResult result) {
|
||||
activity.runOnUiThread(() -> Toast.makeText(activity, result.toString(), Toast.LENGTH_LONG).show());
|
||||
Timber.d("GetCardReaderInformationResult : " + result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWrongApiCalled() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
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();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,308 @@
|
|||
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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
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() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
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());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
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!");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package kz.com.aman.kassa.bank;
|
||||
|
||||
public enum TerminalKeyTypeMpos {
|
||||
Tmp, Tpk, Tak
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package kz.com.aman.kassa.bank.gui;
|
||||
|
||||
/**
|
||||
* Created by pppoo on 27.02.2018.
|
||||
*/
|
||||
|
||||
public interface SelectDialogCallback<ElementType> {
|
||||
void onElementSelected(ElementType element);
|
||||
void onCancelSelection();
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
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 java.util.List;
|
||||
|
||||
import kz.com.aman.kassa.R;
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
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;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue