diff --git a/.gitignore b/.gitignore index 98b1a3f..a9c4dff 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ local.properties /.idea /app/prod/release nexdlkey-lib/build/ +/nexsdk-lib +/nexsdk-lib diff --git a/app/src/main/java/com/utsmm/kbz/MainActivity.java b/app/src/main/java/com/utsmm/kbz/MainActivity.java index c034b2f..7afa01f 100644 --- a/app/src/main/java/com/utsmm/kbz/MainActivity.java +++ b/app/src/main/java/com/utsmm/kbz/MainActivity.java @@ -58,15 +58,12 @@ import com.utsmm.kbz.ui.navigation.NaviMainFragment; import com.utsmm.kbz.ui.navigation.NaviSetupFragment; import com.utsmm.kbz.util.ecr.CoreUtils; import com.utsmm.kbz.util.tms.TMSUtil; - import java.util.Calendar; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; - import javax.inject.Inject; - import dagger.hilt.android.AndroidEntryPoint; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.Observable; @@ -76,7 +73,6 @@ import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; import com.utsmyanmar.paylibs.utils.LogUtil; import com.utsmyanmar.paylibs.utils.params.Params; - /** * Main Activity handling application navigation and fragment interactions */ @@ -165,7 +161,7 @@ public class MainActivity extends AppCompatActivity implements // SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius"); // 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"); + SystemParamsOperation.getInstance().setEReceiptAddress("https://receipt-nest.utsmyanmar.com"); PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad(); byte[] encryptedPIK = SystemParamsOperation.getInstance().getPIK(); @@ -480,6 +476,11 @@ public class MainActivity extends AppCompatActivity implements boolean hasPOS = intent.getBooleanExtra("AUTO_SETTLEMENT", false); boolean hasQR = intent.getBooleanExtra("AUTO_QR_SETTLEMENT", false); + if (!hasPOS && !hasQR) return; + // Clear immediately so onResume won't re-trigger on next wake + intent.removeExtra("AUTO_SETTLEMENT"); + intent.removeExtra("AUTO_QR_SETTLEMENT"); + if (hasPOS) { PayDetail payDetail = (PayDetail) intent.getSerializableExtra("EXTRA_PAY_DETAIL"); if (payDetail != null) { diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/CardWaitingFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/CardWaitingFragment.java index 5ae02ab..0d9f54f 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/CardWaitingFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/CardWaitingFragment.java @@ -129,12 +129,49 @@ public class CardWaitingFragment extends DataBindingFragment implements DataBind } } + private void updateManualEntryVisibility() { + TransactionsType type = sharedViewModel.transactionsType.getValue(); + boolean manualEntryStatus = SystemParamsOperation.getInstance().getManualEntryStatus(); + boolean preAuthManualEntryStatus = SystemParamsOperation.getInstance().getPreAuthManualEnabled(); + boolean preAuthCompManualEntryStatus = SystemParamsOperation.getInstance().getPreAuthCompleteManualEnabled(); + boolean preAuthCancelManualEntryStatus = SystemParamsOperation.getInstance().getPreAuthVoidManualEnabled(); + boolean show; + if (type == null) { + show = manualEntryStatus; + } else { + switch (type) { + case SALE: + case CASH_OUT: + case CASH_DEPOSIT: + case REFUND: + case VOID: + show = manualEntryStatus; + break; + case PRE_AUTH_SALE: + show = preAuthManualEntryStatus; + break; + case PRE_AUTH_VOID: + show = preAuthCancelManualEntryStatus; + break; + case PRE_AUTH_COMPLETE: + show = preAuthCompManualEntryStatus; + break; + default: + show = false; + break; + } + } + sharedViewModel.setManualEntryStatus(show); + } + @Override public void onResume() { super.onResume(); resetUI(); + updateManualEntryVisibility(); + setToolBarTitleWithBackIcon(getResourceString(R.string.txt_title_card_capture)); delayFunctionCall(()-> { diff --git a/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingCardFragment.java b/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingCardFragment.java index 414b05a..6cab178 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingCardFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/core_ui/ProcessingCardFragment.java @@ -170,36 +170,6 @@ public class ProcessingCardFragment extends DataBindingFragment { transProcessViewModel.setTradeData(tradeData); pinPadViewModel.setTradeData(tradeData); - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_VOID && SystemParamsOperation.getInstance().getPreAuthVoidManualEnabled() ) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - safeNavigateToRouteId(); - return; - - } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_SALE && SystemParamsOperation.getInstance().getPreAuthManualEnabled()) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - safeNavigateToRouteId(); - return; - - } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_COMPLETE && SystemParamsOperation.getInstance().getPreAuthCompleteManualEnabled()) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - safeNavigateToRouteId(); - return; - - } -// else if(sharedViewModel.transactionsType.getValue() == TransactionsType.REFUND) { -// sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_card_not_supported)); -// routeId = R.id.action_processingCardFragment_to_errorFragment; -// -// } - sharedViewModel.setCardDataExist(true); if(sharedViewModel.getTransMenu().getValue() != TransMenu.PRE_AUTH_FULL_VOID @@ -259,32 +229,6 @@ public class ProcessingCardFragment extends DataBindingFragment { transProcessViewModel.setTradeData(tradeData); } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_VOID && SystemParamsOperation.getInstance().getPreAuthVoidManualEnabled() ) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - - } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_SALE && SystemParamsOperation.getInstance().getPreAuthManualEnabled()) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - - - } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_COMPLETE && SystemParamsOperation.getInstance().getPreAuthCompleteManualEnabled()) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - - - } - - -// else if(sharedViewModel.transactionsType.getValue() == TransactionsType.REFUND) { -// routeId = R.id.action_processingCardFragment_to_errorFragment; -// } - sharedViewModel.setCardDataExist(true); if(sharedViewModel.getTransMenu().getValue() != TransMenu.PRE_AUTH_FULL_VOID && sharedViewModel.getAmountExist().getValue() != null && !sharedViewModel.getAmountExist().getValue()) { @@ -313,34 +257,6 @@ public class ProcessingCardFragment extends DataBindingFragment { prepareEmvTransaction(); - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_VOID && SystemParamsOperation.getInstance().getPreAuthVoidManualEnabled() ) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - safeNavigateToRouteId(); - return; - - } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_SALE && SystemParamsOperation.getInstance().getPreAuthManualEnabled()) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - safeNavigateToRouteId(); - return; - - - } - if(sharedViewModel.getTransactionsType().getValue() == TransactionsType.PRE_AUTH_COMPLETE && SystemParamsOperation.getInstance().getPreAuthCompleteManualEnabled()) { - - sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_alert_pre_auth_cancel)); - routeId = R.id.action_processingCardFragment_to_errorFragment; - safeNavigateToRouteId(); - return; - - - } - - routeId = R.id.action_processingCardFragment_to_emvTransactionFragment; } else { diff --git a/app/src/main/res/layout/fragment_capture_card_screen.xml b/app/src/main/res/layout/fragment_capture_card_screen.xml index 6b25b95..eb347f6 100644 --- a/app/src/main/res/layout/fragment_capture_card_screen.xml +++ b/app/src/main/res/layout/fragment_capture_card_screen.xml @@ -290,6 +290,7 @@ :" + ByteUtils.byteArray2HexString(tag9F53)); +// if (tag9F53 != null) { +// tag9F53[1] &= 0x7F; //disable issuer update +// emvHandler.setJcbContactlessTIP(tag9F53); +// Log.d("nexgo", "tag9F53->:" + ByteUtils.byteArray2HexString(tag9F53)); +// +// } if (tag9F53 != null) { + tag9F53[0] &= 0x73; //enable online pin tag9F53[1] &= 0x7F; //disable issuer update emvHandler.setJcbContactlessTIP(tag9F53); Log.d("nexgo", "tag9F53->:" + ByteUtils.byteArray2HexString(tag9F53)); 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 fce4236..387a9f8 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/AuthorizationProcessUtil.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/AuthorizationProcessUtil.java @@ -55,7 +55,27 @@ public class AuthorizationProcessUtil { if(field39.getDataStr().equals("000")){ emvOnlineResult.setRejCode("00"); }else{ - emvOnlineResult.setRejCode(field39.getDataStr()); +// emvOnlineResult.setRejCode(field39.getDataStr()); + switch (field39.getDataStr()) { + case "103": + emvOnlineResult.setRejCode("01"); + break; + case "100": + emvOnlineResult.setRejCode("05"); + break; + case "117": + emvOnlineResult.setRejCode("55"); + break; + case "209": + emvOnlineResult.setRejCode("04"); + break; + case "104": + emvOnlineResult.setRejCode("62"); + break; + default: + emvOnlineResult.setRejCode(field39.getDataStr()); + break; + } } } @@ -165,15 +185,24 @@ public class AuthorizationProcessUtil { importOnlineProcessStatus(SdkResult.Success,emvOnlineResult); } else { - equals = TextUtils.equals("3035", valueF039) || TextUtils.equals("3531", valueF039); +// equals = TextUtils.equals("3035", valueF039) || TextUtils.equals("3531", valueF039); +// if (equals) { +// // Denial +// importOnlineProcessStatus(SdkResult.Fail,emvOnlineResult); +// } else { +// // Failed +// importOnlineProcessStatus(SdkResult.Fail,emvOnlineResult); +// } + equals = TextUtils.equals("3035", valueF039) || TextUtils.equals("3531", valueF039) || TextUtils.equals("313033", valueF039); if (equals) { // Denial - importOnlineProcessStatus(SdkResult.Fail,emvOnlineResult); + importOnlineProcessStatus(SdkResult.Success,emvOnlineResult); } else { // Failed - importOnlineProcessStatus(SdkResult.Fail,emvOnlineResult); + importOnlineProcessStatus(SdkResult.Success,emvOnlineResult); } } + LogUtil.d(TAG,"Field 39 value:"+valueF039); LogUtil.e(Constant.TAG, "status: " ); String scriptResult = ByteUtil.bytes2HexStr(outData); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java index 3526404..fb5e440 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/core_utils/SystemParamsSettings.java @@ -45,7 +45,7 @@ public class SystemParamsSettings implements Serializable { // private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; // 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 ereceiptAddress = "https://receipt-nest.utsmyanmar.com"; private String binValues = ""; private String restrictedBinValues = "";