From 99b9f4835c95e6e121505aa23ded9a343d46c1cd Mon Sep 17 00:00:00 2001 From: moon <56061215+MgKyawLay@users.noreply.github.com> Date: Tue, 24 Mar 2026 19:19:22 +0630 Subject: [PATCH] UPI fix for certification --- .../java/com/utsmm/kbz/ui/pinpad/PinPadViewModel.java | 6 +++++- .../main/java/com/utsmm/kbz/util/TransactionUtil.java | 4 +++- .../java/com/utsmyanmar/baselib/TerminalKeyUtil.java | 6 +++--- .../utsmyanmar/baselib/viewModel/EmvBaseViewModel.java | 10 ++++++---- .../paylibs/utils/AuthorizationProcessUtil.java | 6 ++++-- 5 files changed, 21 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/pinpad/PinPadViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/pinpad/PinPadViewModel.java index f475406..e6807ed 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/pinpad/PinPadViewModel.java +++ b/app/src/main/java/com/utsmm/kbz/ui/pinpad/PinPadViewModel.java @@ -359,7 +359,11 @@ public class PinPadViewModel extends ViewModel { handler.obtainMessage(ON_ERROR_PIN_PAD,retCode).sendToTarget(); } LogUtil.d(TAG,"RetCode:"+retCode); - payDetail.setPINCipher(ByteUtil.bytes2HexStr(data)); + if(retCode != SdkResult.PinPad_No_Pin_Input) { + LogUtil.d(TAG, "called me!"); + payDetail.setPINCipher(ByteUtil.bytes2HexStr(data)); + } +// payDetail.setPINCipher(ByteUtil.bytes2HexStr(data)); LogUtil.d(TAG,"data bytes:"+ByteUtil.bytes2HexStr(data)); } diff --git a/app/src/main/java/com/utsmm/kbz/util/TransactionUtil.java b/app/src/main/java/com/utsmm/kbz/util/TransactionUtil.java index 35e0a8e..f8890db 100644 --- a/app/src/main/java/com/utsmm/kbz/util/TransactionUtil.java +++ b/app/src/main/java/com/utsmm/kbz/util/TransactionUtil.java @@ -6,6 +6,7 @@ import com.utsmyanmar.paylibs.model.CardInfo; import com.utsmyanmar.paylibs.model.MAGCardInfo; import com.utsmyanmar.paylibs.model.PayDetail; import com.utsmyanmar.paylibs.model.TradeData; +import com.utsmyanmar.paylibs.model.enums.TransCVM; import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation; import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; import com.utsmyanmar.paylibs.utils.params.Params; @@ -98,7 +99,8 @@ public class TransactionUtil { PayDetail payDetail = tradeData.getPayDetail(); payDetail.setCardNo(cardDataX.getPan()); payDetail.setEXPDate(cardDataX.getExp()); - + payDetail.setTransCVM(TransCVM.SIGNATURE); + if(cardDataX.getPan().startsWith("4")) { payDetail.setAccountType(VISA_CARD_SCHEME); } else if(cardDataX.getPan().startsWith("5")) { diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java b/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java index 51decac..0f449eb 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/TerminalKeyUtil.java @@ -22,8 +22,8 @@ public final class TerminalKeyUtil { public static final String TAG = TerminalKeyUtil.class.getSimpleName(); -// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase()); // KBZ UAT - private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase()); + private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase()); // KBZ UAT +// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase()); // private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU private static final byte[] work_key_data = new byte[16]; @@ -40,7 +40,7 @@ public final class TerminalKeyUtil { Arrays.fill(work_key_data, (byte) 0x31); PinPad pinPad = BaseApplication.getInstance().deviceEngine.getPinPad(); int result = pinPad.writeMKey(9, main_key_data, main_key_data.length); - + // // int resultPINKEY = pinPad.writeWKey(0, WorkKeyTypeEnum.PINKEY, work_key_data, work_key_data.length); 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 4d31828..755a890 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/viewModel/EmvBaseViewModel.java @@ -316,8 +316,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel { return; } try { - LogUtil.d(TAG, "Selected :" + position); - emvHandler.onSetSelAppResponse(position); + LogUtil.d(TAG, "Selected :" + position + 1); + emvHandler.onSetSelAppResponse(position + 1); } catch (Exception e) { LogUtil.e(TAG, "Exception during app selection: " + e.getMessage()); e.printStackTrace(); @@ -751,6 +751,9 @@ public abstract class EmvBaseViewModel extends BaseViewModel { byte[] tlv_50 = emvHandler.getTlv(new byte[]{(byte) 0x50}, EmvDataSourceEnum.FROM_KERNEL); LogUtil.d(TAG, "tlv_50--" + ByteUtils.byteArray2HexString(tlv_50)); + byte[] tlv_9B = emvHandler.getTlv(new byte[]{(byte) 0x9B}, EmvDataSourceEnum.FROM_KERNEL); + LogUtil.d(TAG, "tlv_9B--" + ByteUtils.byteArray2HexString(tlv_9B)); + switch (retCode) { case SdkResult.Emv_Success_Arpc_Fail: case SdkResult.Success: @@ -1207,8 +1210,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel { kernelTTQ[1] = TTQ[1]; kernelTTQ[2] = TTQ[2]; kernelTTQ[3] = TTQ[3]; - - // FIXME: 2019/3/20 + //If there is no special requirements, do not change TTQ byte1 //if online force required , can set byte2 bit 8 = 1 emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F66"), kernelTTQ); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/AuthorizationProcessUtil.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/AuthorizationProcessUtil.java index b2de037..f267b98 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/AuthorizationProcessUtil.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/AuthorizationProcessUtil.java @@ -154,7 +154,6 @@ public class AuthorizationProcessUtil { hexValues[i] = value; } int status; - String f055Data = getF055Data(); LogUtil.d(TAG,"is equal:"+equals); LogUtil.d(TAG,"Emv Online Result:"+emvOnlineResult); if (equals) { @@ -177,7 +176,7 @@ public class AuthorizationProcessUtil { LogUtil.e(Constant.TAG, "scriptResult: " + scriptResult); payDetail.setScriptResult(scriptResult); - + String f055Data = getF055Data(); LogUtil.e(Constant.TAG, "f055Data: " + f055Data); // if (status >= 0) { @@ -205,6 +204,9 @@ public class AuthorizationProcessUtil { private void importOnlineProcessStatus(int sdkResult,EmvOnlineResultEntity emvOnlineResult) { LogUtil.d(TAG, "importOnlineProcessStatus sdkResult:"+sdkResult); LogUtil.d(TAG, "importOnlineProcessStatus emvOnlineResult:"+emvOnlineResult.toString()); + LogUtil.d(TAG, "importOnlineProcessStatus emvOnlineResult:"+emvOnlineResult.getAuthCode()); + LogUtil.d(TAG, "importOnlineProcessStatus emvOnlineResult:"+emvOnlineResult.getRejCode()); + LogUtil.d(TAG, "importOnlineProcessStatus emvOnlineResult:"+ ByteUtil.bytes2HexStr(emvOnlineResult.getRecvField55())); PayLibNex.getInstance().deviceEngine.getEmvHandler2("app2").onSetOnlineProcResponse(sdkResult, emvOnlineResult); }