master tran error fix

This commit is contained in:
MooN 2026-03-05 09:37:04 +06:30
parent 84311f4dc8
commit b7822a2736
4 changed files with 23 additions and 18 deletions

View File

@ -14,8 +14,8 @@ android {
applicationId "com.utsmm.kbz" applicationId "com.utsmm.kbz"
minSdk 24 minSdk 24
targetSdk 33 targetSdk 33
versionCode 21 versionCode 24
versionName "2.1" versionName "2.4"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -49,7 +49,7 @@ android {
buildTypes { buildTypes {
release { release {
minifyEnabled true minifyEnabled false
shrinkResources false shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }

View File

@ -652,6 +652,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
byte[] aid = emvHandler.getTlv(new byte[]{0x4F}, EmvDataSourceEnum.FROM_KERNEL); byte[] aid = emvHandler.getTlv(new byte[]{0x4F}, EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG, "onTransInitBeforeGPO :"); LogUtil.d(TAG, "onTransInitBeforeGPO :");
String terminalCapability = SystemParamsOperation.getInstance().getTerminalCapability(); 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}, new byte[]{(byte) 0xE0, (byte) 0x28, (byte) 0xC8});
emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, ByteUtil.hexStr2Bytes(terminalCapability)); emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, ByteUtil.hexStr2Bytes(terminalCapability));
if (mPayDetail.getCardType() == CardTypeX.NFC.value) { if (mPayDetail.getCardType() == CardTypeX.NFC.value) {
@ -674,7 +675,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
} else { } else {
//contact terminal capability ; if different card brand(depend on aid) have different terminal capability //contact terminal capability ; if different card brand(depend on aid) have different terminal capability
if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000004")) { if (ByteUtils.byteArray2HexString(aid).toUpperCase().contains("A000000004")) {
emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, new byte[]{(byte) 0xE0, (byte) 0x28, (byte) 0xC8}); emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x33}, new byte[]{(byte) 0xE0, (byte) 0xF0, (byte) 0xC8});
emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1D}, ByteUtils.hexString2ByteArray("6C00800000000000"));//terminal risk emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1D}, ByteUtils.hexString2ByteArray("6C00800000000000"));//terminal risk
} }
@ -1214,7 +1215,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x1B}, new byte[]{(byte) 0x30}); 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 //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) 0xF8}); emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x18}, new byte[]{(byte) 0xF0});
//EMV mode :amount < contactless cvm limit, set 08 = no cvm //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 emvHandler.setTlv(new byte[]{(byte) 0xDF, (byte) 0x81, (byte) 0x19}, new byte[]{(byte) 0x08}); //08
@ -1231,7 +1232,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1d}, ByteUtils.hexString2ByteArray("4C00800000000000")); emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1d}, ByteUtils.hexString2ByteArray("4C00800000000000"));
} else { } else {
//set 9F1D terminal risk management - MasterCard. it should be same with the MTIP configuration for 9F1D //set 9F1D terminal risk management - MasterCard. it should be same with the MTIP configuration for 9F1D
emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1d}, ByteUtils.hexString2ByteArray("6C00800000000000")); // emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1d}, ByteUtils.hexString2ByteArray("6C00800000000000"));
emvHandler.setTlv(new byte[]{(byte) 0x9F, (byte) 0x1d}, ByteUtils.hexString2ByteArray("6C7A800000000000"));
} }

View File

@ -7,11 +7,11 @@
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
"targetPercent": "00", "targetPercent": "99",
"maxTargetPercent": "00", "maxTargetPercent": "99",
"threshold": "00000040", "threshold": "00000040",
"tacDefault": "D84000A800", "tacDefault": "F45084800C",
"tacOnline": "DC4004F800", "tacOnline": "F45084800C",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 75000, "cvmLimit": 75000,
@ -32,11 +32,11 @@
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
"targetPercent": "00", "targetPercent": "99",
"maxTargetPercent": "00", "maxTargetPercent": "99",
"threshold": "00000040", "threshold": "00000040",
"tacDefault": "D84000A800", "tacDefault": "F45084800C",
"tacOnline": "DC4004F800", "tacOnline": "F45084800C",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 75000, "cvmLimit": 75000,
@ -61,8 +61,8 @@
"targetPercent": "99", "targetPercent": "99",
"maxTargetPercent": "99", "maxTargetPercent": "99",
"threshold": "00000040", "threshold": "00000040",
"tacDefault": "D84000A800", "tacDefault": "F45084800C",
"tacOnline": "DC4004F800", "tacOnline": "F45084800C",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 75000, "cvmLimit": 75000,
@ -86,8 +86,8 @@
"targetPercent": "99", "targetPercent": "99",
"maxTargetPercent": "99", "maxTargetPercent": "99",
"threshold": "00000040", "threshold": "00000040",
"tacDefault": "D84000A800", "tacDefault": "F45084800C",
"tacOnline": "DC4004F800", "tacOnline": "F45084800C",
"tacDenial": "0000000000", "tacDenial": "0000000000",
"floorLimit": "000000000000", "floorLimit": "000000000000",
"cvmLimit": 75000, "cvmLimit": 75000,

View File

@ -455,7 +455,10 @@ public class TransactionsOperation {
// } // }
// //
// } // }
if(equals) { if(equals) {
emvOnlineResult.setRejCode("00");
emvOnlineResult.setRecvField55(null);
importOnlineProcessStatus(SdkResult.Success,emvOnlineResult); importOnlineProcessStatus(SdkResult.Success,emvOnlineResult);
} else { } else {
importOnlineProcessStatus(SdkResult.Fail,emvOnlineResult); importOnlineProcessStatus(SdkResult.Fail,emvOnlineResult);