diff --git a/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java b/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java index ead28dd..43a563f 100644 --- a/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java +++ b/app/src/main/java/com/utsmm/kbz/util/tms/TMSSetupsImpl.java @@ -582,13 +582,20 @@ public class TMSSetupsImpl implements TMSSetups{ emvParamOperation.updatePayPassCurrencyCode(data); - } else if (TextUtils.equals(name,"terminal_capability")) { - - if(!data.isEmpty()) { - SystemParamsOperation.getInstance().setTerminalCapability(data); + } else if (TextUtils.equals(name, "visa_terminal_capability")) { + if(!data.isEmpty()){ + SystemParamsOperation.getInstance().setVisaTerminalCapability(data); } - - } else if (TextUtils.equals(name,"upi_ttq")) { + }else if (TextUtils.equals(name, "master_terminal_capability")) { + if(!data.isEmpty()){ + SystemParamsOperation.getInstance().setMasterTerminalCapability(data); + } + } + else if (TextUtils.equals(name, "upi_terminal_capability")) { + if(!data.isEmpty()){ + SystemParamsOperation.getInstance().setUpiTerminalCapability(data); + } + }else if (TextUtils.equals(name,"upi_ttq")) { emvParamOperation.updateQuickPassTTQ(data); } else if (TextUtils.equals(name, "upi_tc_enabled")) { SystemParamsOperation.getInstance().setUpiTCEnabled(parseBoolean(data)); 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 755a890..be19874 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java @@ -590,39 +590,97 @@ public abstract class EmvBaseViewModel extends BaseViewModel { public void onTransInitBeforeGPO() { byte[] aid = emvHandler.getTlv(new byte[]{0x4F}, EmvDataSourceEnum.FROM_KERNEL); LogUtil.d(TAG, "onTransInitBeforeGPO :"); - String terminalCapability = SystemParamsOperation.getInstance().getTerminalCapability(); - LogUtil.d(TAG,"Terminal capability :"+terminalCapability); -// emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, new byte[]{(byte) 0xE0, (byte) 0x28, (byte) 0xC8}); - emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, ByteUtil.hexStr2Bytes(terminalCapability)); + + String visaTerminalCapability = SystemParamsOperation.getInstance().getVisaTerminalCapability(); + String masterTerminalCapability = SystemParamsOperation.getInstance().getMasterTerminalCapability(); + String upiTerminalCapability = SystemParamsOperation.getInstance().getUpiTerminalCapability(); + + String selectedTerminalCapability = ""; + + if (aid != null) { + String aidStr = ByteUtils.byteArray2HexString(aid).toUpperCase(); + + if (aidStr.contains("A000000003")) { + // VISA + selectedTerminalCapability = visaTerminalCapability; + } else if (aidStr.contains("A000000004")) { + // MasterCard + selectedTerminalCapability = masterTerminalCapability; + } else if (aidStr.contains("A000000333") || aidStr.contains("A000000025")) { + // UPI + selectedTerminalCapability = upiTerminalCapability; + } + } + + + //9F33 + emvHandler.setTlv( + new byte[]{(byte) 0x9F, (byte) 0x33}, + ByteUtil.hexStr2Bytes(selectedTerminalCapability) + ); + + // -------- Contactless -------- if (mPayDetail.getCardType() == CardTypeX.NFC.value) { if (aid != null) { - if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000004")) { - //Paypass + String aidStr = ByteUtils.byteArray2HexString(aid).toUpperCase(); + + if (aidStr.contains("A000000004")) { configPaypassParameter(aid); - } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000003")) { - //Paywave + } else if (aidStr.contains("A000000003")) { configPaywaveParameters(); - } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000025")) { - //ExpressPay -// configExpressPayParameter(); - } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000541")) { + } else if (aidStr.contains("A000000025")) { +// //imp + } else if (aidStr.contains("A000000541")) { configPureContactlessParameter(); - } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000065")) { + } else if (aidStr.contains("A000000065")) { configJcbContactlessParameter(); } } - } else { - //contact terminal capability ; if different card brand(depend on aid) have different terminal capability -// if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000004")) { -// emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, ByteUtil.hexStr2Bytes(terminalCapability)); -// emvHandler.setTlv(new byte[]{(byte) 0xE0, (byte) 0x1D}, ByteUtils.hexString2ByteArray("6C00800000000000"));//terminal risk -// -// } } emvHandler.onSetTransInitBeforeGPOResponse(true); } +// @Override +// public void onTransInitBeforeGPO() { +// byte[] aid = emvHandler.getTlv(new byte[]{0x4F}, EmvDataSourceEnum.FROM_KERNEL); +// LogUtil.d(TAG, "onTransInitBeforeGPO :"); +//// String terminalCapability = SystemParamsOperation.getInstance().getTerminalCapability(); +// String visaTerminalCapability = SystemParamsOperation.getInstance().getVisaTerminalCapability(); +// String masterTerminalCapability = SystemParamsOperation.getInstance().getMasterTerminalCapability(); +// String upiTerminalCapability = SystemParamsOperation.getInstance().getUpiTerminalCapability(); +//// LogUtil.d(TAG,"Terminal capability :"+terminalCapability); +//// emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, new byte[]{(byte) 0xE0, (byte) 0x28, (byte) 0xC8}); +// emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, ByteUtil.hexStr2Bytes(terminalCapability)); +// if (mPayDetail.getCardType() == CardTypeX.NFC.value) { +// if (aid != null) { +// if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000004")) { +// //Paypass +// configPaypassParameter(aid); +// } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000003")) { +// //Paywave +// configPaywaveParameters(); +// } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000025")) { +// //ExpressPay +//// configExpressPayParameter(); +// } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000541")) { +// configPureContactlessParameter(); +// } else if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000065")) { +// configJcbContactlessParameter(); +// } +// } +// } else { +// //contact terminal capability ; if different card brand(depend on aid) have different terminal capability +//// if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000004")) { +//// emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, ByteUtil.hexStr2Bytes(terminalCapability)); +//// emvHandler.setTlv(new byte[]{(byte) 0xE0, (byte) 0x1D}, ByteUtils.hexString2ByteArray("6C00800000000000"));//terminal risk +//// +//// } +// } +// +// emvHandler.onSetTransInitBeforeGPOResponse(true); +// } + @Override public void onConfirmCardNo(CardInfoEntity cardInfoEntity) { LogUtil.d(TAG, "onConfirmCardNo"); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java index 7ab2b9e..17d444b 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsOperation.java @@ -653,15 +653,45 @@ public class SystemParamsOperation { return CurrencyType.valueOf(params.getCurrencyType()); } - public void setTerminalCapability(String terminalCapability) { +// public void setTerminalCapability(String terminalCapability) { +// SystemParamsSettings params = getSystemParamsSettings(); +// params.setTerminalCapability(terminalCapability); +// saveSystemParamsSettings(params); +// } +// +// public String getTerminalCapability() { +// SystemParamsSettings params = getSystemParamsSettings(); +// return params.getTerminalCapability(); +// } + public void setVisaTerminalCapability(String visaTerminalCapability){ SystemParamsSettings params = getSystemParamsSettings(); - params.setTerminalCapability(terminalCapability); + params.setVisaTerminalCapability(visaTerminalCapability); + saveSystemParamsSettings(params); + } + + public void setMasterTerminalCapability(String masterTerminalCapability){ + SystemParamsSettings params = getSystemParamsSettings(); + params.setMasterTerminalCapability(masterTerminalCapability); saveSystemParamsSettings(params); } - public String getTerminalCapability() { + public void setUpiTerminalCapability(String upiTerminalCapability){ SystemParamsSettings params = getSystemParamsSettings(); - return params.getTerminalCapability(); + params.setUpiTerminalCapability(upiTerminalCapability); + saveSystemParamsSettings(params); + } + + public String getVisaTerminalCapability(){ + SystemParamsSettings params = getSystemParamsSettings(); + return params.getVisaTerminalCapability(); + } + public String getMasterTerminalCapability(){ + SystemParamsSettings params = getSystemParamsSettings(); + return params.getMasterTerminalCapability(); + } + public String getUpiTerminalCapability(){ + SystemParamsSettings params = getSystemParamsSettings(); + return params.getUpiTerminalCapability(); } public void setAuthToken(String authToken) { @@ -1885,4 +1915,5 @@ public class SystemParamsOperation { return params.getPreAuthManual(); } + } diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java index 9816503..8de07b8 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java @@ -51,7 +51,10 @@ public class SystemParamsSettings implements Serializable { private String terminalName = ""; - private String terminalCapability = "E0E8C8"; +// private String terminalCapability = "E0E8C8"; + private String visaTerminalCapability = "E028C8"; + private String masterTerminalCapability = "E068C8"; + private String upiTerminalCapability = "E068C8"; private String ipAddress = ""; @@ -499,9 +502,31 @@ public class SystemParamsSettings implements Serializable { this.qrpay_inquiry_status = status; } - protected String getTerminalCapability() { return terminalCapability;} +// protected String getTerminalCapability() { return terminalCapability;} + protected String getVisaTerminalCapability(){ + return visaTerminalCapability; + } - protected void setTerminalCapability(String terminalCapability) { this.terminalCapability = terminalCapability; } + protected String getMasterTerminalCapability(){ + return masterTerminalCapability; + } + + protected String getUpiTerminalCapability(){ + return upiTerminalCapability; + } +// protected void setTerminalCapability(String terminalCapability) { this.terminalCapability = terminalCapability; } + + protected void setVisaTerminalCapability(String visaTerminalCapability){ + this.visaTerminalCapability = visaTerminalCapability; + } + + protected void setMasterTerminalCapability(String masterTerminalCapability){ + this.masterTerminalCapability = masterTerminalCapability; + } + + protected void setUpiTerminalCapability(String upiTerminalCapability){ + this.upiTerminalCapability = upiTerminalCapability; + } protected void setLastTransTime(String lastTransTime) { this.lastTransTime = lastTransTime; }