Compare commits

...

2 Commits

8 changed files with 47 additions and 4 deletions

View File

@ -201,7 +201,7 @@ public class InputRRNFragment extends DataBindingFragment {
private void checkRRNPreAuthVoid(boolean isECR) {
rrnViewModel.searchPayDetail(cardNo,rrnNo).observe(getViewLifecycleOwner(), new Observer<PayDetail>() {
rrnViewModel.searchPayDetailPreCancel(cardNo,rrnNo).observe(getViewLifecycleOwner(), new Observer<PayDetail>() {
@Override
public void onChanged(PayDetail payDetail) {
if(payDetail != null) {

View File

@ -41,6 +41,12 @@ public class InputRRNViewModel extends ViewModel {
return repository.searchPayDetail(cardNo,rrn);
}
public LiveData<PayDetail> searchPayDetailPreCancel(String cardNo,String rrn) {
return repository.searchPayDetailPreCancel(cardNo,rrn);
}
public NumberKeyboard.KeyClickCallback onKeyClick(){
return new NumberKeyboard.KeyClickCallback() {

View File

@ -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));

View File

@ -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);
//

View File

@ -143,6 +143,10 @@ public interface PayDetailDao {
@Query(("SELECT * FROM paydetail WHERE isCanceled = 0 AND CardNo IN(:cardNo) AND referNo IN(:referNo)"))
LiveData<PayDetail> searchPayDetail(String cardNo,String referNo);
@Query(("SELECT * FROM paydetail WHERE isCanceled = 0 and isAdjust = 0 AND CardNo IN(:cardNo) AND referNo IN(:referNo)"))
LiveData<PayDetail> searchPayDetailPreCancel(String cardNo,String referNo);
@Query("SELECT * FROM paydetail WHERE isCanceled = 0 AND transactionType = 5")
LiveData<List<PayDetail>> getPreAuthCompData();

View File

@ -198,6 +198,10 @@ public class Repository {
return payDetailDao.searchPayDetail(cardNo,referNo);
}
public LiveData<PayDetail> searchPayDetailPreCancel(String cardNo,String referNo) {
return payDetailDao.searchPayDetailPreCancel(cardNo,referNo);
}
public Flowable<PayDetail> searchPayDetailByRefNum(String refNum) {
return payDetailDao.searchPayDetailByRefNum(refNum);
}

View File

@ -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());

View File

@ -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",