5th fix for see phone
This commit is contained in:
parent
4aab58d0bf
commit
538ae41938
@ -197,6 +197,17 @@ public class EmvTransactionFragment extends DataBindingFragment {
|
|||||||
break;
|
break;
|
||||||
case READ_CARD:
|
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() {
|
isCardTaped("Please check your phone!",new CardDetectCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onComplete() {
|
public void onComplete() {
|
||||||
@ -204,7 +215,10 @@ public class EmvTransactionFragment extends DataBindingFragment {
|
|||||||
navigateToCheckCard();
|
navigateToCheckCard();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
break;
|
||||||
|
case OTHER_INTERFACE:
|
||||||
|
sharedViewModel.set_errorFragmentMsg("Please use other interface!");
|
||||||
|
navigateToError();
|
||||||
break;
|
break;
|
||||||
case PIN_PAD_CANCEL:
|
case PIN_PAD_CANCEL:
|
||||||
navigateToMain();
|
navigateToMain();
|
||||||
|
|||||||
@ -176,9 +176,16 @@ public class EmvTransactionProcessViewModel extends EmvBaseViewModel implements
|
|||||||
case EMV_SUCCESS_OFFLINE:
|
case EMV_SUCCESS_OFFLINE:
|
||||||
transResult.postValue(TransResultStatus.OFFLINE_SUCCESS);
|
transResult.postValue(TransResultStatus.OFFLINE_SUCCESS);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EMV_FAILURE_OFFLINE:
|
case EMV_FAILURE_OFFLINE:
|
||||||
transResult.postValue(TransResultStatus.OFFLINE_FAILURE);
|
transResult.postValue(TransResultStatus.OFFLINE_FAILURE);
|
||||||
break;
|
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) {
|
} else if (mProcessStep == EMV_CONFIRM_CARD_NO) {
|
||||||
emvHandler.onSetConfirmCardNoResponse(false);
|
emvHandler.onSetConfirmCardNoResponse(false);
|
||||||
} else if (mProcessStep == EMV_CERT_VERIFY) {
|
} else if (mProcessStep == EMV_CERT_VERIFY) {
|
||||||
// importCertStatus(1);
|
// importCertStatus(1);
|
||||||
} else if (mProcessStep == PIN_ERROR) {
|
} else if (mProcessStep == PIN_ERROR) {
|
||||||
emvHandler.onSetPinInputResponse(false, false);
|
emvHandler.onSetPinInputResponse(false, false);
|
||||||
} else if (mProcessStep == EMV_ONLINE_PROCESS) {
|
} else if (mProcessStep == EMV_ONLINE_PROCESS) {
|
||||||
importOnlineProcess(SdkResult.Success, new EmvOnlineResultEntity());
|
importOnlineProcess(SdkResult.Success, new EmvOnlineResultEntity());
|
||||||
} else if (mProcessStep == EMV_SIGNATURE) {
|
} else if (mProcessStep == EMV_SIGNATURE) {
|
||||||
|
// emvHandler.
|
||||||
// importSignatureStatus(1);
|
// importSignatureStatus(1);
|
||||||
} else if (mProcessStep == EMV_SHOW_PIN_PAD) {
|
} else if (mProcessStep == EMV_SHOW_PIN_PAD) {
|
||||||
emvHandler.onSetPinInputResponse(false, false);
|
emvHandler.onSetPinInputResponse(false, false);
|
||||||
|
|||||||
@ -28,5 +28,7 @@ public enum EmvResultStatus {
|
|||||||
OFFLINE_DECLINE,
|
OFFLINE_DECLINE,
|
||||||
|
|
||||||
CONFIRM_CODE_VERIFY,
|
CONFIRM_CODE_VERIFY,
|
||||||
MPU_CARD
|
MPU_CARD,
|
||||||
|
SEE_PHONE,
|
||||||
|
OTHER_INTERFACE
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,6 +66,7 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
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_FAILURE_ONLINE = 16;
|
||||||
protected static final int EMV_SUCCESS_OFFLINE = 17;
|
protected static final int EMV_SUCCESS_OFFLINE = 17;
|
||||||
protected static final int EMV_FAILURE_OFFLINE = 18;
|
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 EMV_TRANS_FAIL = 999;
|
||||||
protected static final int REMOVE_CARD = 1000;
|
protected static final int REMOVE_CARD = 1000;
|
||||||
private String oldPin = "";
|
private String oldPin = "";
|
||||||
@ -638,6 +641,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
|
|||||||
mProcessStep = EMV_APP_SELECT;
|
mProcessStep = EMV_APP_SELECT;
|
||||||
LogUtil.d(TAG, "onWaitAppSelect :");
|
LogUtil.d(TAG, "onWaitAppSelect :");
|
||||||
String[] candidateNames = getCandidateNames(list);
|
String[] candidateNames = getCandidateNames(list);
|
||||||
|
LogUtil.d(TAG, "onWaitAppSelect :" + Arrays.toString(candidateNames));
|
||||||
mHandler.obtainMessage(EMV_APP_SELECT, candidateNames).sendToTarget();
|
mHandler.obtainMessage(EMV_APP_SELECT, candidateNames).sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -709,6 +713,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
|
|||||||
public void onContactlessTapCardAgain() {
|
public void onContactlessTapCardAgain() {
|
||||||
LogUtil.d(TAG, "onReadCardAgain");
|
LogUtil.d(TAG, "onReadCardAgain");
|
||||||
|
|
||||||
|
emvHandler.onSetContactlessTapCardResponse(true);
|
||||||
mHandler.sendEmptyMessage(EMV_TRY_AGAIN);
|
mHandler.sendEmptyMessage(EMV_TRY_AGAIN);
|
||||||
//this method only used for EMV contactless card if the host response the script. Such as paywave , AMEX...
|
//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) {
|
switch (retCode) {
|
||||||
case SdkResult.Emv_Success_Arpc_Fail:
|
case SdkResult.Emv_Success_Arpc_Fail:
|
||||||
case SdkResult.Success:
|
case SdkResult.Success:
|
||||||
case SdkResult.Emv_Declined:
|
|
||||||
case SdkResult.Emv_Script_Fail:
|
case SdkResult.Emv_Script_Fail:
|
||||||
mHandler.postDelayed(new Runnable() {
|
mHandler.postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
@ -815,22 +819,24 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
|
|||||||
|
|
||||||
case SdkResult.Emv_Candidatelist_Empty:// Application have no aid list
|
case SdkResult.Emv_Candidatelist_Empty:// Application have no aid list
|
||||||
case SdkResult.Emv_FallBack:// FallBack ,chip card reset failed
|
case SdkResult.Emv_FallBack:// FallBack ,chip card reset failed
|
||||||
|
//fallback process
|
||||||
emvResultStatus.postValue(EmvResultStatus.READ_CARD_RETRY);
|
emvResultStatus.postValue(EmvResultStatus.READ_CARD_RETRY);
|
||||||
break;
|
break;
|
||||||
|
case SdkResult.Emv_Declined:
|
||||||
// case SdkResult.Emv_Arpc_Fail: //
|
case SdkResult.Emv_Arpc_Fail: //
|
||||||
//// case SdkResult.Emv_Declined:
|
//// case SdkResult.Emv_Declined:
|
||||||
// //online decline ,if it is in second gac, application should decide if it is need reversal the transaction
|
// //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
|
// //user cancel
|
||||||
// break;
|
mHandler.obtainMessage(EMV_ERROR, retCode, retCode, "Canceled").sendToTarget();
|
||||||
|
break;
|
||||||
//
|
//
|
||||||
//// case SdkResult.Emv_Offline_Declined: //
|
// case SdkResult.Emv_Offline_Declined: //
|
||||||
//// //offline decline
|
// //offline decline
|
||||||
//// offlineDenial();
|
// offlineDenial();
|
||||||
//// break;
|
// break;
|
||||||
//
|
//
|
||||||
// case SdkResult.Emv_Card_Block: //Card Block
|
// case SdkResult.Emv_Card_Block: //Card Block
|
||||||
// //card is blocked
|
// //card is blocked
|
||||||
@ -849,11 +855,12 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
|
|||||||
// break;
|
// break;
|
||||||
|
|
||||||
case SdkResult.Emv_Other_Interface:
|
case SdkResult.Emv_Other_Interface:
|
||||||
emvResultStatus.postValue(EmvResultStatus.READ_CARD_NO_APP);
|
mHandler.sendEmptyMessage(EMV_OTHER_INTERFACE);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SdkResult.Emv_Plz_See_Phone:
|
case SdkResult.Emv_Plz_See_Phone:
|
||||||
mHandler.sendEmptyMessage(EMV_TRY_AGAIN);
|
mHandler.sendEmptyMessage(EMV_SEE_PHONE);
|
||||||
//see phone flow
|
//see phone flow
|
||||||
//prompt a dialog to user to check phone-->search contactless card(another card) -->start new emvProcess again
|
//prompt a dialog to user to check phone-->search contactless card(another card) -->start new emvProcess again
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user