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 7c195ce..909c19a 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 @@ -201,7 +201,7 @@ public class InputRRNFragment extends DataBindingFragment { private void checkRRNPreAuthVoid(boolean isECR) { - rrnViewModel.searchPayDetail(cardNo,rrnNo).observe(getViewLifecycleOwner(), new Observer() { + rrnViewModel.searchPayDetailPreCancel(cardNo,rrnNo).observe(getViewLifecycleOwner(), new Observer() { @Override public void onChanged(PayDetail payDetail) { if(payDetail != null) { 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 ceff41c..5b25285 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 @@ -83,7 +83,7 @@ public class EmvTransactionProcessViewModel extends EmvBaseViewModel implements } else if (isOfflinePinEntered) { emvHandler.onSetPinInputResponse(true, false); } else { - emvHandler.onSetPinInputResponse(true, false); + emvHandler.onSetPinInputResponse(true, true); } if (transType.getValue() == TransactionsType.PRE_AUTH_COMPLETE || transType.getValue() == TransactionsType.PRE_AUTH_VOID || transType.getValue() == TransactionsType.REFUND) { emvResultStatus.postValue(EmvResultStatus.ON_NEXT_SCREEN); diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/InputRRNViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/InputRRNViewModel.java index b7f918d..afa3826 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/InputRRNViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/InputRRNViewModel.java @@ -41,6 +41,12 @@ public class InputRRNViewModel extends ViewModel { return repository.searchPayDetail(cardNo,rrn); } + public LiveData searchPayDetailPreCancel(String cardNo,String rrn) { + return repository.searchPayDetailPreCancel(cardNo,rrn); + } + + + public NumberKeyboard.KeyClickCallback onKeyClick(){ return new NumberKeyboard.KeyClickCallback() { diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/TransProcessViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/TransProcessViewModel.java index 3af3b10..7e0709a 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/TransProcessViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_viewmodel/TransProcessViewModel.java @@ -304,13 +304,16 @@ public class TransProcessViewModel extends ViewModel implements ProcessingTransa } @Override + public void processPreCompDb(PayDetail payResult) { if(oldTransPayDetail.getAmount() == payResult.getAmount()) { oldTransPayDetail.setIsCanceled(true); + oldTransPayDetail.setAdjust(true); updatePayDetail(oldTransPayDetail); } else { oldTransPayDetail.setIsCanceled(false); + oldTransPayDetail.setAdjust(true); updatePayDetail(oldTransPayDetail); } repository.insertPayDetail(updateCurrentDateAndTime(payResult)); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java b/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java index 8566f02..d405eac 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java @@ -42,7 +42,7 @@ public final class TerminalKeyUtil { PinPad pinPad = BaseApplication.getInstance().deviceEngine.getPinPad(); int result = pinPad.writeMKey(9, main_key_data, main_key_data.length); -// byte[] kcv = pinPad.calcWKeyKCV(9,WorkKeyTypeEnum.TDKEY); + byte[] kcv = pinPad.calcWKeyKCV(9,WorkKeyTypeEnum.ENCRYPTIONKEY); // // int resultPINKEY = pinPad.writeWKey(0, WorkKeyTypeEnum.PINKEY, work_key_data, work_key_data.length); @@ -55,7 +55,7 @@ public final class TerminalKeyUtil { // int result = pinPad.dukptKeyInject(9, DukptKeyTypeEnum.BDK,IPEKByte,16,ksn); LogUtil.d(TAG, "save tmk key result: "+result); -// LogUtil.d(TAG, "save tmk kcv: "+ByteUtil.bytes2HexStr(kcv)); + LogUtil.d(TAG, "save tmk kcv: "+ByteUtil.bytes2HexStr(kcv)); // byte[] encryptedPIK = SystemParamsOperation.getInstance().getKeyPIK().get(0); // 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 f1458af..60d6882 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,6 +143,10 @@ 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)")) + LiveData searchPayDetailPreCancel(String cardNo,String referNo); + + @Query("SELECT * FROM paydetail WHERE isCanceled = 0 AND transactionType = 5") LiveData> getPreAuthCompData(); diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java index 791cbac..f1de488 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java @@ -198,6 +198,10 @@ public class Repository { return payDetailDao.searchPayDetail(cardNo,referNo); } + public LiveData searchPayDetailPreCancel(String cardNo,String referNo) { + return payDetailDao.searchPayDetailPreCancel(cardNo,referNo); + } + public Flowable searchPayDetailByRefNum(String refNum) { return payDetailDao.searchPayDetailByRefNum(refNum); } 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 be19874..7def545 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java @@ -259,6 +259,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { + //for UPI UnionPayTransDataEntity unionPayTransDataEntity = new UnionPayTransDataEntity(); unionPayTransDataEntity.setQpbocForGlobal(true); @@ -271,6 +272,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { + // emvHandler.contactlessConfigKernelId(EmvCardBrandEnum.EMV_CARD_BRAND_JCB,(byte) 0x01,ByteUtils.hexString2ByteArray("06")); emvHandler.contactlessAppendAidIntoKernel(EmvCardBrandEnum.EMV_CARD_BRAND_MASTER, (byte) 0x08, ByteUtils.hexString2ByteArray("A000000732100123")); LogUtil.d(TAG, "TransData :" + transData.getTransAmount()); diff --git a/baselib/src/main/res/raw/paywave_config.json b/baselib/src/main/res/raw/paywave_config.json index a15cf97..f3e6f43 100644 --- a/baselib/src/main/res/raw/paywave_config.json +++ b/baselib/src/main/res/raw/paywave_config.json @@ -1,5 +1,29 @@ [ - + { + "aidEnable": true, + "aid": "A000000003", + "cardLabel": "VISA", + "applicationVersion": "0030", + "emvDDOL": "9F3704", + "emvTDOL": "9F3704", + "partialAidSelection": false, + "targetPercent": "00", + "maxTargetPercent": "00", + "threshold": "00000000", + "tacDefault": "DC4000A800", + "tacOnline": "DC4004F800", + "tacDenial": "0010000000", + "floorLimit": "000000000000", + "cvmLimit": 70000, + "transLimit": "999999999999", + "transLimitCDV": "999999999999", + "terminalCapability": "0000000000000000", + "riskManageData": "01", + "kernelType": "03", + "ttq": "32A04000", + "cateCode": "2701", + "currencyCode": "0104" + }, { "aidEnable": true, "aid": "A0000000031010",