UPI fix for certification

This commit is contained in:
moon 2026-03-24 19:19:22 +06:30
parent dd265c1fa8
commit 99b9f4835c
5 changed files with 21 additions and 11 deletions

View File

@ -359,7 +359,11 @@ public class PinPadViewModel extends ViewModel {
handler.obtainMessage(ON_ERROR_PIN_PAD,retCode).sendToTarget(); handler.obtainMessage(ON_ERROR_PIN_PAD,retCode).sendToTarget();
} }
LogUtil.d(TAG,"RetCode:"+retCode); 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)); LogUtil.d(TAG,"data bytes:"+ByteUtil.bytes2HexStr(data));
} }

View File

@ -6,6 +6,7 @@ import com.utsmyanmar.paylibs.model.CardInfo;
import com.utsmyanmar.paylibs.model.MAGCardInfo; import com.utsmyanmar.paylibs.model.MAGCardInfo;
import com.utsmyanmar.paylibs.model.PayDetail; import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.model.TradeData; 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.core_utils.SystemParamsOperation;
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType; import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
import com.utsmyanmar.paylibs.utils.params.Params; import com.utsmyanmar.paylibs.utils.params.Params;
@ -98,7 +99,8 @@ public class TransactionUtil {
PayDetail payDetail = tradeData.getPayDetail(); PayDetail payDetail = tradeData.getPayDetail();
payDetail.setCardNo(cardDataX.getPan()); payDetail.setCardNo(cardDataX.getPan());
payDetail.setEXPDate(cardDataX.getExp()); payDetail.setEXPDate(cardDataX.getExp());
payDetail.setTransCVM(TransCVM.SIGNATURE);
if(cardDataX.getPan().startsWith("4")) { if(cardDataX.getPan().startsWith("4")) {
payDetail.setAccountType(VISA_CARD_SCHEME); payDetail.setAccountType(VISA_CARD_SCHEME);
} else if(cardDataX.getPan().startsWith("5")) { } else if(cardDataX.getPan().startsWith("5")) {

View File

@ -22,8 +22,8 @@ public final class TerminalKeyUtil {
public static final String TAG = TerminalKeyUtil.class.getSimpleName(); 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()); // KBZ UAT
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase()); // 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[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU
private static final byte[] work_key_data = new byte[16]; 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); Arrays.fill(work_key_data, (byte) 0x31);
PinPad pinPad = BaseApplication.getInstance().deviceEngine.getPinPad(); PinPad pinPad = BaseApplication.getInstance().deviceEngine.getPinPad();
int result = pinPad.writeMKey(9, main_key_data, main_key_data.length); 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); // int resultPINKEY = pinPad.writeWKey(0, WorkKeyTypeEnum.PINKEY, work_key_data, work_key_data.length);

View File

@ -316,8 +316,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
return; return;
} }
try { try {
LogUtil.d(TAG, "Selected :" + position); LogUtil.d(TAG, "Selected :" + position + 1);
emvHandler.onSetSelAppResponse(position); emvHandler.onSetSelAppResponse(position + 1);
} catch (Exception e) { } catch (Exception e) {
LogUtil.e(TAG, "Exception during app selection: " + e.getMessage()); LogUtil.e(TAG, "Exception during app selection: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
@ -751,6 +751,9 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
byte[] tlv_50 = emvHandler.getTlv(new byte[]{(byte) 0x50}, EmvDataSourceEnum.FROM_KERNEL); byte[] tlv_50 = emvHandler.getTlv(new byte[]{(byte) 0x50}, EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG, "tlv_50--" + ByteUtils.byteArray2HexString(tlv_50)); 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) { switch (retCode) {
case SdkResult.Emv_Success_Arpc_Fail: case SdkResult.Emv_Success_Arpc_Fail:
case SdkResult.Success: case SdkResult.Success:
@ -1207,8 +1210,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
kernelTTQ[1] = TTQ[1]; kernelTTQ[1] = TTQ[1];
kernelTTQ[2] = TTQ[2]; kernelTTQ[2] = TTQ[2];
kernelTTQ[3] = TTQ[3]; kernelTTQ[3] = TTQ[3];
// FIXME: 2019/3/20
//If there is no special requirements, do not change TTQ byte1 //If there is no special requirements, do not change TTQ byte1
//if online force required , can set byte2 bit 8 = 1 //if online force required , can set byte2 bit 8 = 1
emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F66"), kernelTTQ); emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F66"), kernelTTQ);

View File

@ -154,7 +154,6 @@ public class AuthorizationProcessUtil {
hexValues[i] = value; hexValues[i] = value;
} }
int status; int status;
String f055Data = getF055Data();
LogUtil.d(TAG,"is equal:"+equals); LogUtil.d(TAG,"is equal:"+equals);
LogUtil.d(TAG,"Emv Online Result:"+emvOnlineResult); LogUtil.d(TAG,"Emv Online Result:"+emvOnlineResult);
if (equals) { if (equals) {
@ -177,7 +176,7 @@ public class AuthorizationProcessUtil {
LogUtil.e(Constant.TAG, "scriptResult: " + scriptResult); LogUtil.e(Constant.TAG, "scriptResult: " + scriptResult);
payDetail.setScriptResult(scriptResult); payDetail.setScriptResult(scriptResult);
String f055Data = getF055Data();
LogUtil.e(Constant.TAG, "f055Data: " + f055Data); LogUtil.e(Constant.TAG, "f055Data: " + f055Data);
// if (status >= 0) { // if (status >= 0) {
@ -205,6 +204,9 @@ public class AuthorizationProcessUtil {
private void importOnlineProcessStatus(int sdkResult,EmvOnlineResultEntity emvOnlineResult) { private void importOnlineProcessStatus(int sdkResult,EmvOnlineResultEntity emvOnlineResult) {
LogUtil.d(TAG, "importOnlineProcessStatus sdkResult:"+sdkResult); LogUtil.d(TAG, "importOnlineProcessStatus sdkResult:"+sdkResult);
LogUtil.d(TAG, "importOnlineProcessStatus emvOnlineResult:"+emvOnlineResult.toString()); 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); PayLibNex.getInstance().deviceEngine.getEmvHandler2("app2").onSetOnlineProcResponse(sdkResult, emvOnlineResult);
} }