Compare commits

..

3 Commits

Author SHA1 Message Date
MooN
89466f8209 latest 2026-01-12 22:10:15 +06:30
MooN
b4ecd40b46 uat url changed 2026-01-11 19:25:11 +06:30
MooN
0f7b57e516 Update .gitignore 2026-01-11 19:23:35 +06:30
9 changed files with 116 additions and 30 deletions

8
.gitignore vendored
View File

@ -14,6 +14,8 @@
.cxx .cxx
local.properties local.properties
/.idea /.idea
/app/release /app/release/*
/app/sit/release /app/sit/release/*
/app/uat/release /app/uat/release/*
/app/uat
/.idea

View File

@ -14,8 +14,8 @@ android {
applicationId "com.utsmm.kbz" applicationId "com.utsmm.kbz"
minSdk 24 minSdk 24
targetSdk 33 targetSdk 33
versionCode 15 versionCode 1
versionName "1.14" versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -43,6 +43,7 @@ android {
dimension "env" dimension "env"
applicationId "com.utsmm.kbz" applicationId "com.utsmm.kbz"
versionNameSuffix "" versionNameSuffix ""
resValue "string", "app_name", "KBZ-POS"
} }
} }
@ -76,7 +77,8 @@ android {
buildTypes { buildTypes {
release { release {
minifyEnabled false minifyEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
debug { debug {

View File

@ -24,3 +24,88 @@
# Keep Bouncy Castle classes for security providers # Keep Bouncy Castle classes for security providers
-keep class org.bouncycastle.** { *; } -keep class org.bouncycastle.** { *; }
-dontwarn org.bouncycastle.** -dontwarn org.bouncycastle.**
-keep class com.squareup.okhttp.** { *; }
-dontwarn org.conscrypt.Conscrypt$Version
-dontwarn org.conscrypt.Conscrypt
-dontwarn org.conscrypt.ConscryptHostnameVerifier
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
-dontwarn org.openjsse.net.ssl.OpenJSSE
############################
# HILT
############################
-keep class dagger.hilt.** { *; }
-keep class javax.inject.** { *; }
-keep class * extends dagger.hilt.internal.GeneratedComponent { *; }
-keep class * extends dagger.hilt.internal.GeneratedComponentManager { *; }
-keep class hilt_aggregated_deps.** { *; }
############################
# ANDROIDX NAVIGATION
############################
-keep class androidx.navigation.** { *; }
############################
# DATA BINDING
############################
-keep class **.databinding.*Binding { *; }
-keep class androidx.databinding.** { *; }
############################
# FRAGMENTS
############################
-keep class * extends androidx.fragment.app.Fragment
############################
# SERIALIZABLE / PARCELABLE
############################
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
}
############################
# NEXGO / SUNMI / PAYLIBS
############################
-keep class com.nexgo.** { *; }
-keep class com.sunmi.** { *; }
-keep class com.utsmyanmar.** { *; }
-keep class com.kizzy.xpay.** { *; }
############################
# ENUMS (ISO / TRANSACTION TYPES)
############################
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# Keep Retrofit generic signatures
-keepattributes Signature
-keepattributes *Annotation*
# RxJava
-keep class io.reactivex.** { *; }
-dontwarn io.reactivex.**
# Retrofit
-keep class retrofit2.** { *; }
-dontwarn retrofit2.**
# Your API interfaces
-keep interface com.utsmyanmar.baselib.api.** { *; }
# Your response models
-keep class com.utsmyanmar.baselib.model.** { *; }
# Keep model fields for Gson
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}
# Or keep all models directly (simpler & safer)
-keep class com.utsmyanmar.baselib.model.** { *; }
-keep class androidx.lifecycle.** { *; }
-keep class * extends androidx.lifecycle.ViewModel { *; }
-keep class com.utsmyanmar.baselib.repo.** { *; }

View File

@ -172,9 +172,9 @@ public class TransactionResultFragment extends DataBindingFragment implements Da
} else if (isQRPayNonSuccessTransaction(transactionType, payDetail)) { } else if (isQRPayNonSuccessTransaction(transactionType, payDetail)) {
// startPrintProcess(false); // startPrintProcess(false);
if(transactionType == TransactionsType.MMQR_REFUND){ if(transactionType == TransactionsType.MMQR_REFUND){
showDeclineDialog("QR Refund Failed!"); showDeclineDialog("QR Refund Failed! \n" + payDetail.getTradeResultDes());
}else{ }else{
showDeclineDialog("QR Payment Failed!"); showDeclineDialog("QR Payment Failed! \n" + payDetail.getTradeResultDes());
} }
navigateToMainScreen(); navigateToMainScreen();
} else if (isQRPaySuccessTransaction(transactionType, payDetail)) { } else if (isQRPaySuccessTransaction(transactionType, payDetail)) {

View File

@ -144,7 +144,6 @@ public class QRRefundProcessFragment extends DataBindingFragment {
private void handleRefundResponse(KPayRefund.RefundResponse response, String referenceNo, String orgAmount) { private void handleRefundResponse(KPayRefund.RefundResponse response, String referenceNo, String orgAmount) {
if (response != null && response.getResponse() != null && "REFUND_SUCCESS".equalsIgnoreCase(response.getResponse().getRefundStatus())) { if (response != null && response.getResponse() != null && "REFUND_SUCCESS".equalsIgnoreCase(response.getResponse().getRefundStatus())) {
LogUtil.d(TAG, "Refund successful!"); LogUtil.d(TAG, "Refund successful!");
String refundAmount = response.getResponse().getRefundAmount(); String refundAmount = response.getResponse().getRefundAmount();
long text = POSUtil.getInstance().convertAmount(refundAmount); long text = POSUtil.getInstance().convertAmount(refundAmount);

View File

@ -40,15 +40,13 @@ public class RefundCertificateManager {
if (tmsAddress == null || tmsAddress.trim().isEmpty()) { if (tmsAddress == null || tmsAddress.trim().isEmpty()) {
LogUtil.e(TAG, "TMS address is empty"); LogUtil.e(TAG, "TMS address is empty");
return; return;
} };
String downloadBase = // String downloadBase = tmsAddress.trim() + "/api/v1/file/download?filePath=";
tmsAddress.trim() + "/api/v1/file/download?filePath="; String downloadBase = tmsAddress.trim() + "/file/download?filePath=";
String certUrl = String certUrl = SystemParamsOperation.getInstance().getCertificateUrl();
SystemParamsOperation.getInstance().getCertificateUrl(); String clientCertUrl = SystemParamsOperation.getInstance().getCertificateClientUrl();
String clientCertUrl =
SystemParamsOperation.getInstance().getCertificateClientUrl();
if (certUrl == null || clientCertUrl == null) { if (certUrl == null || clientCertUrl == null) {
LogUtil.e(TAG, "Certificate URLs are missing"); LogUtil.e(TAG, "Certificate URLs are missing");
@ -58,9 +56,9 @@ public class RefundCertificateManager {
String timestamp = String.valueOf(System.currentTimeMillis()); String timestamp = String.valueOf(System.currentTimeMillis());
String signature = generateSignature(timestamp); String signature = generateSignature(timestamp);
LogUtil.d(TAG, "Download base => " + downloadBase); // LogUtil.d(TAG, "Download base => " + downloadBase);
LogUtil.d(TAG, "Cert URL => " + certUrl); // LogUtil.d(TAG, "Cert URL => " + certUrl);
LogUtil.d(TAG, "Client Cert URL => " + clientCertUrl); // LogUtil.d(TAG, "Client Cert URL => " + clientCertUrl);
// ---------- CA CERT ---------- // ---------- CA CERT ----------
DownloadUtil.downloadCertificateRx( DownloadUtil.downloadCertificateRx(

View File

@ -290,8 +290,8 @@ public class NetworkModule {
tmsAddress = getTMSUrlFromNative(); tmsAddress = getTMSUrlFromNative();
} }
String baseUrl = tmsAddress.trim() + "/api/v1/"; //for on prim // String baseUrl = tmsAddress.trim() + "/api/v1/"; //for on prim
// String baseUrl = tmsAddress.trim() + "/"; //for uat String baseUrl = tmsAddress.trim() + "/"; //for uat
final Gson gson = final Gson gson =
new GsonBuilder().create(); new GsonBuilder().create();

View File

@ -343,9 +343,9 @@ public abstract class BaseXPrint {
// print2ColumnsStringNoSpace("AID :", MPU_AID); // print2ColumnsStringNoSpace("AID :", MPU_AID);
// } // }
if (payDetail.getTradeAnswerCode().equals(Constant.ANSWER_CODE_ACCEPT) || payDetail.getTradeAnswerCode().equals(Constant.ANSWER_CODE_APPROVED)) { // if (payDetail.getTradeAnswerCode().equals(Constant.ANSWER_CODE_ACCEPT) || payDetail.getTradeAnswerCode().equals(Constant.ANSWER_CODE_APPROVED)) {
print2ColumnsStringNoSpace("TXN ID :",payDetail.getReferNo()); // print2ColumnsStringNoSpace("TXN ID :",payDetail.getReferNo());
} // }

View File

@ -42,10 +42,10 @@ public class SystemParamsSettings implements Serializable {
// private String tmsAddress = "https://tms.smile-mm.com"; // private String tmsAddress = "https://tms.smile-mm.com";
// private String tmsAddress = "http://128.199.170.203"; // private String tmsAddress = "http://128.199.170.203";
private String tmsAddress = "http://sirius-nest.utsmyanmar.com"; // private String tmsAddress = "http://sirius-nest.utsmyanmar.com";
// private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; //for uat private String tmsAddress = "https://api-tms-uat.kbzbank.com:8443/sirius"; //for uat
private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com"; //for on prime // private String ereceiptAddress = "http://receipt-nest.utsmyanmar.com"; //for on prime
// private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt"; //for uat private String ereceiptAddress = "https://api-tms-uat.kbzbank.com:8443/receipt"; //for uat
private String terminalName = ""; private String terminalName = "";