Compare commits

..

No commits in common. "714500017556ca6bf42923f1ac16e12132b45e44" and "4de793fd7623b3784912c521c1d6f897ede60cca" have entirely different histories.

9 changed files with 91 additions and 108 deletions

View File

@ -116,8 +116,8 @@ public class MainActivity extends AppCompatActivity implements
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar(); BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar(); // BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
// Keep screen on // Keep screen on
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
@ -162,10 +162,8 @@ public class MainActivity extends AppCompatActivity implements
private void initKey(){ private void initKey(){
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms.kbzbank.com/sirius"); // SystemParamsOperation.getInstance().setTmsAddress("https://api-tms.kbzbank.com/sirius");
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms.kbzbank.com/receipt"); // SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms.kbzbank.com/receipt");
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius"); SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt"); SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com/api/v1");
SystemParamsOperation.getInstance().setEReceiptAddress("https://receipt-nest.utsmyanmar.com/api/v1");
PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad(); PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad();
byte[] encryptedPIK = SystemParamsOperation.getInstance().getPIK(); byte[] encryptedPIK = SystemParamsOperation.getInstance().getPIK();
@ -438,8 +436,8 @@ public class MainActivity extends AppCompatActivity implements
SystemParamsOperation.getInstance().setDownloadedParams(false); SystemParamsOperation.getInstance().setDownloadedParams(false);
handleAutoSettlementIntent(getIntent()); handleAutoSettlementIntent(getIntent());
// BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar(); BaseApplication.getInstance().deviceEngine.getPlatform().hideNavigationBar();
BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar(); // BaseApplication.getInstance().deviceEngine.getPlatform().showNavigationBar();
} }

View File

@ -150,8 +150,7 @@ public class MainFragment extends DataBindingFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
// int result = BaseApplication.getInstance().deviceEngine.getPlatform().disableControlBar(); int result = BaseApplication.getInstance().deviceEngine.getPlatform().disableControlBar();
int result = BaseApplication.getInstance().deviceEngine.getPlatform().enableControlBar();
LogUtil.d(TAG, "control bar result " + result); LogUtil.d(TAG, "control bar result " + result);
setNavBarIconWithTitle(getResourceString(R.string.menu_dashboard)); setNavBarIconWithTitle(getResourceString(R.string.menu_dashboard));

View File

@ -275,8 +275,10 @@ public class EReceiptUtil {
request.setDE39("A"); request.setDE39("A");
request.setDE37("0000"); request.setDE37("0000");
request.setDE49("MMK"); request.setDE49("MMK");
request.setDE41(terminalId); request.setDE41(terminalId);
request.setDE42(merchantId); request.setDE42(merchantId);
request.setSerial(serialNum); request.setSerial(serialNum);
request.setAppId(packageName); request.setAppId(packageName);

View File

@ -116,7 +116,7 @@ public class EmvParamOperation extends ParamOperation{
processPayWave(); processPayWave();
processPayPass(); processPayPass();
processQuickPass(); processQuickPass();
processJSpeedy(); // processJSpeedy();
processMPUCtls(); processMPUCtls();
processChips(); processChips();
processRids(); processRids();

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);
@ -560,27 +560,6 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
@Override @Override
public void onTransInitBeforeGPO() { public void onTransInitBeforeGPO() {
byte[] tag9F15 = emvHandler.getTlv(new byte[]{(byte) 0x9F, (byte) 0x15}, EmvDataSourceEnum.FROM_KERNEL);
Log.d(TAG, "tag9F15 (MCC)-->" + ByteUtils.byteArray2HexString(tag9F15));
if (tag9F15 != null) {
emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F15"), ByteUtils.hexString2ByteArray("0000"));
tag9F15 = emvHandler.getTlv(new byte[]{(byte) 0x9F, (byte) 0x15}, EmvDataSourceEnum.FROM_KERNEL);
Log.d(TAG, "after tag9F15-->" + ByteUtils.byteArray2HexString(tag9F15));
} else {
Log.d(TAG, "tag9F15 not found in kernel");
}
byte[] tag9F01 = emvHandler.getTlv(new byte[]{(byte) 0x9F, (byte) 0x01}, EmvDataSourceEnum.FROM_KERNEL);
Log.d(TAG, "tag9F01-->" + ByteUtils.byteArray2HexString(tag9F15));
if (tag9F01 != null) {
emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F01"), ByteUtils.hexString2ByteArray("000000000000"));
tag9F01 = emvHandler.getTlv(new byte[]{(byte) 0x9F, (byte) 0x01}, EmvDataSourceEnum.FROM_KERNEL);
Log.d(TAG, "after tag9F01-->" + ByteUtils.byteArray2HexString(tag9F01));
} else {
Log.d(TAG, "tag9F01 not found in kernel");
}
if (mMPUContactlessConfigured) { if (mMPUContactlessConfigured) {
LogUtil.d(TAG, "onTransInitBeforeGPO: skipping — MPU contactless already configured"); LogUtil.d(TAG, "onTransInitBeforeGPO: skipping — MPU contactless already configured");
@ -1037,11 +1016,13 @@ 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", "9F52","9F53", "84", "9F09", "9F41", //field55 tag "9F03", "9F33", "4F", "9F08", "9F34", "9F35", "9F1E", "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","9F15", "9F01", "9F1B" "FF31", "9F7B", "8E"
}; };
try { try {
String data = emvHandler.getTlvByTags(tagList); String data = emvHandler.getTlvByTags(tagList);
LogUtil.d(TAG, "getTlvByTags :" + data); LogUtil.d(TAG, "getTlvByTags :" + data);
@ -1404,61 +1385,13 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
} }
// private void configJcbContactlessParameter() { private void configJcbContactlessParameter() {
// LogUtil.d(TAG, "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");
//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("EE8000")); emvHandler.setJcbContactlessTIP(ByteUtils.hexString2ByteArray("708000"));
// emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F53"), ByteUtils.hexString2ByteArray("EE8000")); emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F52"), ByteUtils.hexString2ByteArray("03"));
// emvHandler.setTlv(ByteUtils.hexString2ByteArray("DF8161"), ByteUtils.hexString2ByteArray("7F00")); // emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F53"), ByteUtils.hexString2ByteArray("708000"));
byte[] tag9F53 = emvHandler.getJcbContactlessTIP(); emvHandler.setTlv(ByteUtils.hexString2ByteArray("DF8161"), ByteUtils.hexString2ByteArray("7F00"));
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));
}
byte[] tag9F15 = emvHandler.getTlv(new byte[]{(byte) 0x9F, (byte) 0x15}, EmvDataSourceEnum.FROM_KERNEL);
Log.d(TAG, "tag9F15 (MCC)-->" + ByteUtils.byteArray2HexString(tag9F15));
if (tag9F15 != null) {
emvHandler.setTlv(ByteUtils.hexString2ByteArray("9F15"), ByteUtils.hexString2ByteArray("0000"));
tag9F15 = emvHandler.getTlv(new byte[]{(byte) 0x9F, (byte) 0x15}, EmvDataSourceEnum.FROM_KERNEL);
Log.d(TAG, "after tag9F15-->" + ByteUtils.byteArray2HexString(tag9F15));
} else {
Log.d(TAG, "tag9F15 not found in kernel");
}
}
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

@ -530,10 +530,10 @@
"currencyCode": "0104" "currencyCode": "0104"
}, },
{ {
"aidEnable": true, "aidEnable": false,
"aid": "A00000006510", "aid": "A00000006510",
"cardScheme": "JCB", "cardScheme": "JCB",
"applicationVersion": "0200", "applicationVersion": "0030",
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
@ -553,10 +553,10 @@
"currencyCode": "0104" "currencyCode": "0104"
}, },
{ {
"aidEnable": true, "aidEnable": false,
"aid": "A0000000651010", "aid": "A0000000651010",
"cardScheme": "JCB", "cardScheme": "JCB",
"applicationVersion": "0200", "applicationVersion": "0030",
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,
@ -576,10 +576,10 @@
"currencyCode": "0104" "currencyCode": "0104"
}, },
{ {
"aidEnable": true, "aidEnable": false,
"aid": "A0000001570040", "aid": "A0000001570040",
"cardScheme": "JCB", "cardScheme": "JCB",
"applicationVersion": "0200", "applicationVersion": "0030",
"emvDDOL": "9F3704", "emvDDOL": "9F3704",
"emvTDOL": "9F3704", "emvTDOL": "9F3704",
"partialAidSelection": false, "partialAidSelection": false,

View File

@ -250,7 +250,66 @@
"expDate": "3230333031323331", "expDate": "3230333031323331",
"checkSum": "BD331F9996A490B33C13441066A09AD3FEB5F66C" "checkSum": "BD331F9996A490B33C13441066A09AD3FEB5F66C"
}, },
{
"rid": "A000000065",
"indx": "07",
"hashInd": "01",
"arithInd": "00",
"modul": "B8DAB883EF1B5763E4F861F9EA3044B276635D402F3AE5E6B6C0547E368E79A36366DAC5609B6EC486DA1A8D2002CA4F4EFC2CB0EC1573A0B0917969EB60645BAEDF11C050C5D07FED817D11E84A174859A0DAE7F7935F109229C0AC4EE5BFB3D65533A679F0486C5AEFCC937379833BEC45D79DCF97B5228B1910FA03765331",
"exponent": "010001",
"expDate": "20201231",
"checkSum": "4896DD5A9EB5B11B9DCCA6DFE336C009F69F509A"
},
{
"rid": "A000000065",
"indx": "08",
"hashInd": "01",
"arithInd": "00",
"modul": "B74670DAD1DC8983652000E5A7F2F8B35DFD083EE593E5BA895C95729F2BADE9C8ABF3DD9CE240C451C6CEFFC768D83CBAC76ABB8FEA58F013C647007CFF7617BAC2AE3981816F25CC7E5238EF34C4F02D0B01C24F80C2C65E7E7743A4FA8E23206A23ECE290C26EA56DB085C5C5EAE26292451FC8292F9957BE8FF20FAD53E5",
"exponent": "03",
"expDate": "20201231",
"checkSum": "DD36D5896228C8C4900742F107E2F91FE50BC7EE"
},
{
"rid": "A000000065",
"indx": "09",
"hashInd": "01",
"arithInd": "00",
"modul": "B72A8FEF5B27F2B550398FDCC256F714BAD497FF56094B7408328CB626AA6F0E6A9DF8388EB9887BC930170BCC1213E90FC070D52C8DCD0FF9E10FAD36801FE93FC998A721705091F18BC7C98241CADC15A2B9DA7FB963142C0AB640D5D0135E77EBAE95AF1B4FEFADCF9C012366BDDA0455C1564A68810D7127676D493890BD",
"exponent": "03",
"expDate": "3230333031323331",
"checkSum": "4410C6D51C2F83ADFD92528FA6E38A32DF048D0A"
},
{
"rid": "A000000065",
"indx": "10",
"hashInd": "01",
"arithInd": "00",
"modul": "99B63464EE0B4957E4FD23BF923D12B61469B8FFF8814346B2ED6A780F8988EA9CF0433BC1E655F05EFA66D0C98098F25B659D7A25B8478A36E489760D071F54CDF7416948ED733D816349DA2AADDA227EE45936203CBF628CD033AABA5E5A6E4AE37FBACB4611B4113ED427529C636F6C3304F8ABDD6D9AD660516AE87F7F2DDF1D2FA44C164727E56BBC9BA23C0285",
"exponent": "03",
"expDate": "20201231",
"checkSum": "C75E5210CBE6E8F0594A0F1911B07418CADB5BAB"
},
{
"rid": "A000000065",
"indx": "11",
"hashInd": "01",
"arithInd": "00",
"modul": "A2583AA40746E3A63C22478F576D1EFC5FB046135A6FC739E82B55035F71B09BEB566EDB9968DD649B94B6DEDC033899884E908C27BE1CD291E5436F762553297763DAA3B890D778C0F01E3344CECDFB3BA70D7E055B8C760D0179A403D6B55F2B3B083912B183ADB7927441BED3395A199EEFE0DEBD1F5FC3264033DA856F4A8B93916885BD42F9C1F456AAB8CFA83AC574833EB5E87BB9D4C006A4B5346BD9E17E139AB6552D9C58BC041195336485",
"exponent": "03",
"expDate": "20201231",
"checkSum": "D9FD62C9DD4E6DE7741E9A17FB1FF2C5DB948BCB"
},
{
"rid": "A000000065",
"indx": "14",
"hashInd": "01",
"arithInd": "00",
"modul": "AEED55B9EE00E1ECEB045F61D2DA9A66AB637B43FB5CDBDB22A2FBB25BE061E937E38244EE5132F530144A3F268907D8FD648863F5A96FED7E42089E93457ADC0E1BC89C58A0DB72675FBC47FEE9FF33C16ADE6D341936B06B6A6F5EF6F66A4EDD981DF75DA8399C3053F430ECA342437C23AF423A211AC9F58EAF09B0F837DE9D86C7109DB1646561AA5AF0289AF5514AC64BC2D9D36A179BB8A7971E2BFA03A9E4B847FD3D63524D43A0E8003547B94A8A75E519DF3177D0A60BC0B4BAB1EA59A2CBB4D2D62354E926E9C7D3BE4181E81BA60F8285A896D17DA8C3242481B6C405769A39D547C74ED9FF95A70A796046B5EFF36682DC29",
"exponent": "03",
"expDate": "20201231",
"checkSum": "43A3151513B7ADCEB92DBEA2A262CEB336D26C83"
},
{ {
"rid": "A000000065", "rid": "A000000065",
"indx": "13", "indx": "13",

View File

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

View File

@ -42,13 +42,12 @@ public class SystemParamsSettings implements Serializable {
// private String tmsAddress = "https://api-tms.kbzbank.com/sirius"; // private String tmsAddress = "https://api-tms.kbzbank.com/sirius";
// private String ereceiptAddress = "https://api-tms.kbzbank.com/receipt"; // private String ereceiptAddress = "https://api-tms.kbzbank.com/receipt";
// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius";
// private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt"; private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt";
private String tmsAddress = "https://sirius-nest.utsmyanmar.com/api/v1";
private String ereceiptAddress = "https://receipt-nest.utsmyanmar.com/api/v1";
private String binValues = ""; private String binValues = "";
private String restrictedBinValues = ""; private String restrictedBinValues = "";
private String terminalName = ""; private String terminalName = "";
// private String terminalCapability = "E0E8C8"; // private String terminalCapability = "E0E8C8";