From d542388ce18edc082cd61e7b0cb623f4c7900262 Mon Sep 17 00:00:00 2001 From: kizzy Date: Tue, 19 May 2026 12:25:49 +0700 Subject: [PATCH] removed AID for JCB cards and Pre Auth Flow is fixed --- .../com/utsmm/kbz/ui/core_ui/InputRRNFragment.java | 2 ++ .../core_viewmodel/EmvTransactionProcessViewModel.java | 4 ++-- .../utsmm/kbz/ui/manual_entry/ManualEntryFragment.java | 4 ++-- .../com/utsmyanmar/baselib/db/dao/PayDetailDao.java | 2 +- .../com/utsmyanmar/baselib/emv/EmvParamOperation.java | 2 +- .../utsmyanmar/baselib/viewModel/EmvBaseViewModel.java | 7 ++++--- baselib/src/main/res/raw/contacts_config.json | 6 +++--- baselib/src/main/res/raw/rid_config.json | 10 ++++++++++ 8 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java index 909c19a..345a506 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/InputRRNFragment.java @@ -245,6 +245,8 @@ public class InputRRNFragment extends DataBindingFragment { } else { + LogUtil.d(TAG,"PreAuth Cancel RRN not found!"); + terminateProcess(isECR); } 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 8fe765d..ebf42f2 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 @@ -457,8 +457,8 @@ public class EmvTransactionProcessViewModel extends EmvBaseViewModel implements @Override public void processPreVoidDb(PayDetail payResult) { - mPayDetail.setIsCanceled(true); - updatePayDetail(mPayDetail); + oldTransPayDetail.setIsCanceled(true); + updatePayDetail(oldTransPayDetail); repository.insertPayDetail(updateCurrentDateAndTime(payResult)); } diff --git a/app/src/main/java/com/utsmm/kbz/ui/manual_entry/ManualEntryFragment.java b/app/src/main/java/com/utsmm/kbz/ui/manual_entry/ManualEntryFragment.java index b18eab2..eddcbd2 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/manual_entry/ManualEntryFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/manual_entry/ManualEntryFragment.java @@ -77,7 +77,7 @@ public class ManualEntryFragment extends DataBindingFragment { } private void processEmvCard() { - if(sharedViewModel.transactionsType.getValue() == TransactionsType.REFUND || sharedViewModel.transactionsType.getValue() == TransactionsType.PRE_AUTH_VOID) { + if(sharedViewModel.transactionsType.getValue() == TransactionsType.REFUND || sharedViewModel.transactionsType.getValue() == TransactionsType.PRE_AUTH_VOID || sharedViewModel.transactionsType.getValue() == TransactionsType.PRE_AUTH_COMPLETE) { routeId = R.id.action_manualEntryFragment_to_inputRRNFragment; } else { routeId = R.id.action_manualEntryFragment_to_emvTransactionFragment; @@ -106,7 +106,7 @@ public class ManualEntryFragment extends DataBindingFragment { payDetail.setICC55(""); // payDetail.setAuthNo(manualEntryViewModel.cvv.getValue()); - + emvTransactionProcessViewModel.cardNum.setValue(cardNo); emvTransactionProcessViewModel.setTradeData(tradeData); safeNavigateToRouteId(); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java index 60d6882..fcd0116 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java @@ -143,7 +143,7 @@ public interface PayDetailDao { @Query(("SELECT * FROM paydetail WHERE isCanceled = 0 AND CardNo IN(:cardNo) AND referNo IN(:referNo)")) LiveData searchPayDetail(String cardNo,String referNo); - @Query(("SELECT * FROM paydetail WHERE isCanceled = 0 and isAdjust = 0 AND CardNo IN(:cardNo) AND referNo IN(:referNo)")) + @Query(("SELECT * FROM paydetail WHERE isCanceled = 0 AND isAdjust = 0 AND CardNo IN(:cardNo) AND referNo IN(:referNo)")) LiveData searchPayDetailPreCancel(String cardNo,String referNo); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/emv/EmvParamOperation.java b/baselib/src/main/java/com/utsmyanmar/baselib/emv/EmvParamOperation.java index 6bd8a1b..f848932 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/emv/EmvParamOperation.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/emv/EmvParamOperation.java @@ -116,7 +116,7 @@ public class EmvParamOperation extends ParamOperation{ processPayWave(); processPayPass(); processQuickPass(); - processJSpeedy(); +// processJSpeedy(); processMPUCtls(); processChips(); processRids(); 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 e7a3e58..f9eaf0f 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java @@ -179,7 +179,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel { protected boolean isSecondCall = false; protected int mProcessStep; protected int mAppSelect = 0; - private static final String[] RESTRICTED_BINS = {"624430", + private static final String[] RESTRICTED_BINS = { + "624430", "624431", "624445", "626220", @@ -291,7 +292,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { setTransactionLimitForMPUCtls(false); -// emvHandler.contactlessConfigKernelId(EmvCardBrandEnum.EMV_CARD_BRAND_JCB,(byte) 0x01,ByteUtils.hexString2ByteArray("06")); + emvHandler.contactlessConfigKernelId(EmvCardBrandEnum.EMV_CARD_BRAND_JCB,(byte) 0x01,ByteUtils.hexString2ByteArray("06")); emvHandler.contactlessAppendAidIntoKernel(EmvCardBrandEnum.EMV_CARD_BRAND_MASTER, (byte) 0x07, ByteUtils.hexString2ByteArray("A0000008890101")); // emvHandler.contactlessAppendAidIntoKernelFirst(true); LogUtil.d(TAG, "TransData :" + transData.getTransAmount()); @@ -1238,7 +1239,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x1B}, new byte[]{(byte) 0x30}); //EMV MODE :amount >contactless cvm limit, set 60 = online pin and signature , set 20 = signature - emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x18}, new byte[]{(byte) 0xF0}); //F8 + emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x18}, new byte[]{(byte) 0xF0}); //F8 //F0 //EMV mode :amount < contactless cvm limit, set 08 = no cvm emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x19}, new byte[]{(byte) 0x08}); //08 diff --git a/baselib/src/main/res/raw/contacts_config.json b/baselib/src/main/res/raw/contacts_config.json index 0723d52..4d3736c 100644 --- a/baselib/src/main/res/raw/contacts_config.json +++ b/baselib/src/main/res/raw/contacts_config.json @@ -530,7 +530,7 @@ "currencyCode": "0104" }, { - "aidEnable": true, + "aidEnable": false, "aid": "A00000006510", "cardScheme": "JCB", "applicationVersion": "0030", @@ -553,7 +553,7 @@ "currencyCode": "0104" }, { - "aidEnable": true, + "aidEnable": false, "aid": "A0000000651010", "cardScheme": "JCB", "applicationVersion": "0030", @@ -576,7 +576,7 @@ "currencyCode": "0104" }, { - "aidEnable": true, + "aidEnable": false, "aid": "A0000001570040", "cardScheme": "JCB", "applicationVersion": "0030", diff --git a/baselib/src/main/res/raw/rid_config.json b/baselib/src/main/res/raw/rid_config.json index c99a4d7..4f639b0 100644 --- a/baselib/src/main/res/raw/rid_config.json +++ b/baselib/src/main/res/raw/rid_config.json @@ -309,5 +309,15 @@ "exponent": "03", "expDate": "20201231", "checkSum": "43A3151513B7ADCEB92DBEA2A262CEB336D26C83" + }, + { + "rid": "A000000065", + "indx": "13", + "hashInd": "01", + "arithInd": "00", + "modul": "A3270868367E6E29349FC2743EE545AC53BD3029782488997650108524FD051E3B6EACA6A9A6C1441D28889A5F46413C8F62F3645AAEB30A1521EEF41FD4F3445BFA1AB29F9AC1A74D9A16B93293296CB09162B149BAC22F88AD8F322D684D6B49A12413FC1B6AC70EDEDB18EC1585519A89B50B3D03E14063C2CA58B7C2BA7FB22799A33BCDE6AFCBEB4A7D64911D08D18C47F9BD14A9FAD8805A15DE5A38945A97919B7AB88EFA11A88C0CD92C6EE7DC352AB0746ABF13585913C8A4E04464B77909C6BD94341A8976C4769EA6C0D30A60F4EE8FA19E767B170DF4FA80312DBA61DB645D5D1560873E2674E1F620083F30180BD96CA589", + "exponent": "03", + "expDate": "20201231", + "checkSum": "54CFAE617150DFA09D3F901C9123524523EBEDF3" } ] \ No newline at end of file