This commit is contained in:
moon 2026-06-01 20:20:05 +06:30
parent 14ad87e41f
commit 2eac171a6c
2 changed files with 56 additions and 14 deletions

View File

@ -298,7 +298,7 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
LogUtil.d(TAG, "TransData :" + transData.getTransAmount()); LogUtil.d(TAG, "TransData :" + transData.getTransAmount());
LogUtil.d(TAG, "start emv "); LogUtil.d(TAG, "start emv ");
// emvHandler.emvDebugLog(true); emvHandler.emvDebugLog(true);
emvHandler.emvProcess(transData, emvProcessListener); emvHandler.emvProcess(transData, emvProcessListener);
@ -1016,13 +1016,11 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
/* For Yoma */ /* For Yoma */
String[] tagList = { String[] tagList = {
"9F2A", "9F26", "9F27", "9F10", "9F37", "9F36", "95", "9A", "9C", "9F02", "5F2A", "5F34", "82", "9F1A", //field 55 tag "9F2A", "9F26", "9F27", "9F10", "9F37", "9F36", "95", "9A", "9C", "9F02", "5F2A", "5F34", "82", "9F1A", //field 55 tag
"9F03", "9F33", "4F", "9F08", "9F34", "9F35", "9F1E", "9F53", "84", "9F09", "9F41", //field55 tag "9F03", "9F33", "4F", "9F08", "9F34", "9F35", "9F1E", "9F52","9F53", "84", "9F09", "9F41", //field55 tag
"9F5B", "8A", "9B", "9F6E", "9F7C", "9F4C", "50", "9F12", "DF01", "9F63", "5F20", "9F0B", "9F42", "9F5B", "8A", "9B", "9F6E", "9F7C", "9F4C", "50", "9F12", "DF01", "9F63", "5F20", "9F0B", "9F42",
"FF31", "9F7B", "8E" "FF31", "9F7B", "8E","9F15"
}; };
try { try {
String data = emvHandler.getTlvByTags(tagList); String data = emvHandler.getTlvByTags(tagList);
LogUtil.d(TAG, "getTlvByTags :" + data); LogUtil.d(TAG, "getTlvByTags :" + data);
@ -1385,13 +1383,50 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
} }
private void configJcbContactlessParameter() { // private void configJcbContactlessParameter() {
// LogUtil.d(TAG, "configJcbContactlessParameter");
//
// emvHandler.setJcbContactlessTIP(ByteUtils.hexString2ByteArray("EE8000"));
// emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F52"), ByteUtils.hexString2ByteArray("02"));
//// emvHandler.setJcbContactlessTIP(ByteUtils.hexString2ByteArray("708000"));
//// emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F52"), ByteUtils.hexString2ByteArray("02"));
//// emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F53"), ByteUtils.hexString2ByteArray("EE8000"));
//// emvHandler.setTlv(ByteUtils.hexString2ByteArray("DF8161"), ByteUtils.hexString2ByteArray("7F00"));
//// emvHandler.setJcbContactlessTIP(ByteUtils.hexString2ByteArray("F88000"));
// }
private void configJcbContactlessParameter() {
LogUtil.d(TAG, "configJcbContactlessParameter"); LogUtil.d(TAG, "configJcbContactlessParameter");
//9F52 to set magstripe mode not support
byte[] tagff8178 = emvHandler.getTlv(new byte[]{(byte) 0xff, (byte) 0x81,(byte) 0x78}, EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG,"tagff8178-->" + ByteUtils.byteArray2HexString(tagff8178));
tagff8178[0] = setBitValue(tagff8178[0], 3, (byte) 0);
// tagff8178[0] = setBitValue(tagff8178[0], 1, (byte) 0);
emvHandler.setTlv(ByteUtils.hexString2ByteArray("ff8178"),tagff8178);
tagff8178 = emvHandler.getTlv(new byte[]{(byte) 0xff, (byte) 0x81,(byte) 0x78}, EmvDataSourceEnum.FROM_KERNEL);
LogUtil.d(TAG,"after tagff8178-->" + ByteUtils.byteArray2HexString(tagff8178));
emvHandler.setJcbContactlessTIP(ByteUtils.hexString2ByteArray("708000")); // emvHandler.setJcbContactlessTIP(ByteUtils.hexString2ByteArray("EE8000"));
emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F52"), ByteUtils.hexString2ByteArray("03")); // emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F53"), ByteUtils.hexString2ByteArray("EE8000"));
// emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F53"), ByteUtils.hexString2ByteArray("708000")); // emvHandler.setTlv(ByteUtils.hexString2ByteArray("DF8161"), ByteUtils.hexString2ByteArray("7F00"));
emvHandler.setTlv(ByteUtils.hexString2ByteArray("DF8161"), ByteUtils.hexString2ByteArray("7F00")); byte[] tag9F53 = emvHandler.getJcbContactlessTIP();
Log.d("nexgo", "getJcbContactlessTIP: tag9F53->:" + ByteUtils.byteArray2HexString(tag9F53));
if (tag9F53 != null) {
tag9F53[1] &= 0x7F; //disable issuer update
emvHandler.setJcbContactlessTIP(tag9F53);
Log.d("nexgo", "tag9F53->:" + ByteUtils.byteArray2HexString(tag9F53));
}
}
private byte setBitValue(byte originalByte, int bitPosition, byte bitValue) {
int shift = bitPosition - 1; // convert 1-based to 0-based
if (bitValue == 1) {
// Set bit to 1
return (byte) (originalByte | (1 << shift));
} else {
// Set bit to 0
return (byte) (originalByte & ~(1 << shift));
}
} }
protected void importOnlineProcess(int sdkResult, EmvOnlineResultEntity emvOnlineResult) { protected void importOnlineProcess(int sdkResult, EmvOnlineResultEntity emvOnlineResult) {

View File

@ -593,9 +593,16 @@ public class KernelDataProcessUtil {
// /* // /*
// * merchant category code // * merchant category code
// * */ // * */
// if (tlvMap.get("9F53") != null) { if (tlvMap.get("9F52") != null) {
// f55DataStr += "9F5301" + tlvMap.get("9F53").getValue(); f55DataStr += "9F5201" + tlvMap.get("9F52").getValue();
// } else { f55WaveDataStr += "9F5201" + tlvMap.get("9F52").getValue();
}
if (tlvMap.get("9F53") != null) {
f55DataStr += "9F5301" + tlvMap.get("9F53").getValue();
f55WaveDataStr += "9F5301" + tlvMap.get("9F53").getValue();
}
// else {
// f55DataStr += "9F530150"; // f55DataStr += "9F530150";
// } // }