diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/EmvTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/EmvTransactionFragment.java index dd65493..a5e8262 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/EmvTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/EmvTransactionFragment.java @@ -197,6 +197,17 @@ public class EmvTransactionFragment extends DataBindingFragment { break; case READ_CARD: + isCardInserted(new CardDetectCallback() { + @Override + public void onComplete() { + sharedViewModel.setIsFallback(true); + navigateToCheckCard(); + } + }); + + break; + + case SEE_PHONE: isCardTaped("Please check your phone!",new CardDetectCallback() { @Override public void onComplete() { @@ -204,7 +215,10 @@ public class EmvTransactionFragment extends DataBindingFragment { navigateToCheckCard(); } }); - + break; + case OTHER_INTERFACE: + sharedViewModel.set_errorFragmentMsg("Please use other interface!"); + navigateToError(); break; case PIN_PAD_CANCEL: navigateToMain(); diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/EmvTransactionProcessViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/EmvTransactionProcessViewModel.java index eafa1ab..7e13cb6 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/EmvTransactionProcessViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/EmvTransactionProcessViewModel.java @@ -176,9 +176,16 @@ public class EmvTransactionProcessViewModel extends EmvBaseViewModel implements case EMV_SUCCESS_OFFLINE: transResult.postValue(TransResultStatus.OFFLINE_SUCCESS); break; + case EMV_FAILURE_OFFLINE: transResult.postValue(TransResultStatus.OFFLINE_FAILURE); break; + case EMV_SEE_PHONE: + emvResultStatus.postValue(EmvResultStatus.SEE_PHONE); + break; + case EMV_OTHER_INTERFACE: + emvResultStatus.postValue(EmvResultStatus.OTHER_INTERFACE); + break; } } @@ -204,12 +211,13 @@ public class EmvTransactionProcessViewModel extends EmvBaseViewModel implements } else if (mProcessStep == EMV_CONFIRM_CARD_NO) { emvHandler.onSetConfirmCardNoResponse(false); } else if (mProcessStep == EMV_CERT_VERIFY) { - // importCertStatus(1); +// importCertStatus(1); } else if (mProcessStep == PIN_ERROR) { emvHandler.onSetPinInputResponse(false, false); } else if (mProcessStep == EMV_ONLINE_PROCESS) { importOnlineProcess(SdkResult.Success, new EmvOnlineResultEntity()); } else if (mProcessStep == EMV_SIGNATURE) { +// emvHandler. // importSignatureStatus(1); } else if (mProcessStep == EMV_SHOW_PIN_PAD) { emvHandler.onSetPinInputResponse(false, false); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/util/enums/EmvResultStatus.java b/baselib/src/main/java/com/utsmyanmar/baselib/util/enums/EmvResultStatus.java index 0b5bdf2..beac357 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/util/enums/EmvResultStatus.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/util/enums/EmvResultStatus.java @@ -28,5 +28,7 @@ public enum EmvResultStatus { OFFLINE_DECLINE, CONFIRM_CODE_VERIFY, - MPU_CARD + MPU_CARD, + SEE_PHONE, + OTHER_INTERFACE } diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java b/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java index a790442..644321a 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java @@ -66,6 +66,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Locale; @@ -157,6 +158,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel { protected static final int EMV_FAILURE_ONLINE = 16; protected static final int EMV_SUCCESS_OFFLINE = 17; protected static final int EMV_FAILURE_OFFLINE = 18; + protected static final int EMV_SEE_PHONE = 19; + protected static final int EMV_OTHER_INTERFACE = 22; protected static final int EMV_TRANS_FAIL = 999; protected static final int REMOVE_CARD = 1000; private String oldPin = ""; @@ -638,6 +641,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { mProcessStep = EMV_APP_SELECT; LogUtil.d(TAG, "onWaitAppSelect :"); String[] candidateNames = getCandidateNames(list); + LogUtil.d(TAG, "onWaitAppSelect :" + Arrays.toString(candidateNames)); mHandler.obtainMessage(EMV_APP_SELECT, candidateNames).sendToTarget(); } @@ -709,6 +713,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { public void onContactlessTapCardAgain() { LogUtil.d(TAG, "onReadCardAgain"); + emvHandler.onSetContactlessTapCardResponse(true); mHandler.sendEmptyMessage(EMV_TRY_AGAIN); //this method only used for EMV contactless card if the host response the script. Such as paywave , AMEX... @@ -788,7 +793,6 @@ public abstract class EmvBaseViewModel extends BaseViewModel { switch (retCode) { case SdkResult.Emv_Success_Arpc_Fail: case SdkResult.Success: - case SdkResult.Emv_Declined: case SdkResult.Emv_Script_Fail: mHandler.postDelayed(new Runnable() { @Override @@ -815,22 +819,24 @@ public abstract class EmvBaseViewModel extends BaseViewModel { case SdkResult.Emv_Candidatelist_Empty:// Application have no aid list case SdkResult.Emv_FallBack:// FallBack ,chip card reset failed + //fallback process emvResultStatus.postValue(EmvResultStatus.READ_CARD_RETRY); break; - -// case SdkResult.Emv_Arpc_Fail: // + case SdkResult.Emv_Declined: + case SdkResult.Emv_Arpc_Fail: // //// case SdkResult.Emv_Declined: // //online decline ,if it is in second gac, application should decide if it is need reversal the transaction -// break; + break; // -// case SdkResult.Emv_Cancel:// Transaction Cancel + case SdkResult.Emv_Cancel:// Transaction Cancel // //user cancel -// break; + mHandler.obtainMessage(EMV_ERROR, retCode, retCode, "Canceled").sendToTarget(); + break; // -//// case SdkResult.Emv_Offline_Declined: // -//// //offline decline -//// offlineDenial(); -//// break; +// case SdkResult.Emv_Offline_Declined: // +// //offline decline +// offlineDenial(); +// break; // // case SdkResult.Emv_Card_Block: //Card Block // //card is blocked @@ -849,11 +855,12 @@ public abstract class EmvBaseViewModel extends BaseViewModel { // break; case SdkResult.Emv_Other_Interface: - emvResultStatus.postValue(EmvResultStatus.READ_CARD_NO_APP); + mHandler.sendEmptyMessage(EMV_OTHER_INTERFACE); + break; case SdkResult.Emv_Plz_See_Phone: - mHandler.sendEmptyMessage(EMV_TRY_AGAIN); + mHandler.sendEmptyMessage(EMV_SEE_PHONE); //see phone flow //prompt a dialog to user to check phone-->search contactless card(another card) -->start new emvProcess again break;