combine MPU and internation hosts

This commit is contained in:
MooN 2026-02-08 21:28:53 +06:30
parent 13cc4db6ab
commit e873606e4c
12 changed files with 112 additions and 222 deletions

View File

@ -158,10 +158,10 @@ public class MainActivity extends AppCompatActivity implements
}
private void initKey(){
// SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com");
// SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
SystemParamsOperation.getInstance().setEReceiptAddress("https://receipt-nest.utsmyanmar.com");
SystemParamsOperation.getInstance().setTmsAddress("https://api-tms-uat.kbzbank.com:8443/sirius");
// SystemParamsOperation.getInstance().setTmsAddress("https://sirius-nest.utsmyanmar.com");
SystemParamsOperation.getInstance().setEReceiptAddress("https://api-tms-uat.kbzbank.com:8443/receipt");
// SystemParamsOperation.getInstance().setEReceiptAddress("https://receipt-nest.utsmyanmar.com");
PinPad pinPad = MyApplication.getInstance().deviceEngine.getPinPad();
byte[] encryptedPIK = SystemParamsOperation.getInstance().getPIK();

View File

@ -175,10 +175,17 @@ public class InputTraceNoFragment extends DataBindingFragment {
sharedViewModel.payDetail.setValue(payDetail);
if(sharedViewModel.hostType.getValue() == HostType.MPU) {
sharedViewModel.isEmv.setValue(false);
transProcessViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
transProcessViewModel.setOldTransPayDetail(payDetail);
transProcessViewModel.setPayDetail(payDetail);
boolean isMpu = "MPU".equals(payDetail.getAccountType());
if (isMpu) {
sharedViewModel.isEmv.setValue(false);
transProcessViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
transProcessViewModel.setOldTransPayDetail(payDetail);
transProcessViewModel.setPayDetail(payDetail);
} else {
sharedViewModel.isEmv.setValue(true);
emvTransactionProcessViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());
emvTransactionProcessViewModel.setPayDetail(payDetail);
}
} else {
sharedViewModel.isEmv.setValue(true);
emvTransactionProcessViewModel.transType.setValue(sharedViewModel.transactionsType.getValue());

View File

@ -94,12 +94,8 @@ public class DetailReportFragment extends DataBindingFragment {
managementViewModel.hostTypeDR.setValue("PAYMENT");
managementViewModel.cardTypeDR.setValue("QR PAY");
} else if(sharedViewModel.hostType.getValue() == HostType.MPU) {
managementViewModel.hostTypeDR.setValue("MPU");
managementViewModel.cardTypeDR.setValue("MPU");
} else if(sharedViewModel.hostType.getValue() == HostType.VISA_MASTER) {
managementViewModel.hostTypeDR.setValue("VISA/MASTER");
managementViewModel.cardTypeDR.setValue("VISA/MASTER");
managementViewModel.hostTypeDR.setValue("CARD");
managementViewModel.cardTypeDR.setValue("CARD");
}
}
@ -153,7 +149,7 @@ public class DetailReportFragment extends DataBindingFragment {
if(sharedViewModel.hostType.getValue() == HostType.MPU) {
if(payDetail.getAccountType().equals("MPU") && payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value && payDetail.getTransactionType() != TransactionsType.REVERSAL.value && payDetail.getTransactionType() != TransactionsType.SETTLEMENT.value && POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) {
if(payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value && payDetail.getTransactionType() != TransactionsType.REVERSAL.value && payDetail.getTransactionType() != TransactionsType.SETTLEMENT.value && POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) {
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.VOID.value || payDetail.getTransactionType() == TransactionsType.REFUND.value;
lists.add(payDetail);
count++;
@ -175,19 +171,6 @@ public class DetailReportFragment extends DataBindingFragment {
totalAmount += payDetail.getAmount();
}
}
} if(sharedViewModel.hostType.getValue() == HostType.VISA_MASTER) {
if(!payDetail.getAccountType().equals("MPU") && payDetail.getTransactionType() != TransactionsType.MMQR_REFUND.value && payDetail.getTransactionType() != TransactionsType.MMQR.value && payDetail.getTransactionType() != TransactionsType.REVERSAL.value && payDetail.getTransactionType() != TransactionsType.SETTLEMENT.value && POSUtil.getInstance().getYesterdayDate().compareTo(POSUtil.getInstance().getDateByString(payDetail.transDate)) < 1) {
boolean isNeedMinusSign = payDetail.getTransactionType() == TransactionsType.VOID.value || payDetail.getTransactionType() == TransactionsType.REFUND.value;
lists.add(payDetail);
count++;
if(isNeedMinusSign) {
totalAmount -= payDetail.getAmount();
} else {
totalAmount += payDetail.getAmount();
}
}
}
}

View File

@ -122,6 +122,7 @@ public class ManagementFunctionFragment extends DataBindingFragment {
public void onClickReprintLastTrans() {
sharedViewModel.setTransMenu(TransMenu.REPRINT);
sharedViewModel.suppressReprintButtons.setValue(false);
observeLastTransaction();
}

View File

@ -308,7 +308,7 @@ public class ReprintAnyTransactionFragment extends DataBindingFragment {
// April 2, 2024 client requested to add QR host at host selection type
if(sharedViewModel.hostType.getValue() == HostType.MPU) {
if(pay.getAccountType().equals("MPU") && pay.getTransactionType() != TransactionsType.MMQR.value && pay.getTransactionType() != TransactionsType.MMQR_REFUND.value) {
if(pay.getTransactionType() != TransactionsType.MMQR.value && pay.getTransactionType() != TransactionsType.MMQR_REFUND.value) {
filteredLists.add(pay);
}
@ -318,10 +318,6 @@ public class ReprintAnyTransactionFragment extends DataBindingFragment {
filteredLists.add(pay);
}
}
} else if(sharedViewModel.hostType.getValue() == HostType.VISA_MASTER) {
if(!pay.getAccountType().equals("MPU") && pay.getTransactionType() != TransactionsType.MMQR.value && pay.getTransactionType() != TransactionsType.MMQR_REFUND.value) {
filteredLists.add(pay);
}
}
}

View File

@ -354,13 +354,11 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi
}
break;
case TIP_ADJUSTMENT:
if(sharedViewModel.hostType.getValue() == HostType.VISA_MASTER) {
if(sharedViewModel.hostType.getValue() != HostType.QR) {
routeId = R.id.action_selectHostFragment_to_inputTraceFragment;
} else {
routeId = R.id.action_selectHostFragment_to_errorFragment;
sharedViewModel.set_errorFragmentMsg(getResourceString(R.string.txt_tip_adjust_not_allowed));
}
safeNavigateToRouteId();
break;
@ -411,23 +409,9 @@ public class SelectHostFragment extends DataBindingFragment implements DataBindi
public class ClickEvent {
public void onClickVisaMaster() {
sharedViewModel.hostType.setValue(HostType.VISA_MASTER);
if(SystemParamsOperation.getInstance().isEmvEnabled()) {
observeRoute();
} else {
showSingleInfoDialog("Currently this menu is unavailable!");
}
}
public void onClickMPU() {
public void onClickCards() {
sharedViewModel.hostType.setValue(HostType.MPU);
observeRoute();
}
public void onClickQR() {

View File

@ -282,44 +282,22 @@ public class TransactionSummaryFragment extends DataBindingFragment {
waveRefund.inc(pay.amount);
}
} else if (sharedViewModel.hostType.getValue() == HostType.MPU) {
if ("MPU".equals(pay.getAccountType())) {
if (pay.getTransactionType() == TransactionsType.VOID.value) {
voidTran.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.SALE.value) {
sale.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.CASH_OUT.value) {
ca.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_SALE.value) {
preAuth.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_VOID.value) {
preAuthVoid.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_COMPLETE.value) {
preAuthComp.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_COMPLETE_VOID.value) {
preAuthCompVoid.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.REFUND.value) {
refund.inc(pay.amount);
}
}
} else if (sharedViewModel.hostType.getValue() == HostType.VISA_MASTER) {
if (!"MPU".equals(pay.getAccountType())) {
if (pay.getTransactionType() == TransactionsType.VOID.value) {
voidTran.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.SALE.value) {
sale.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.CASH_OUT.value) {
ca.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_SALE.value) {
preAuth.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_VOID.value) {
preAuthVoid.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_COMPLETE.value) {
preAuthComp.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_COMPLETE_VOID.value) {
preAuthCompVoid.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.REFUND.value) {
refund.inc(pay.amount);
}
if (pay.getTransactionType() == TransactionsType.VOID.value) {
voidTran.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.SALE.value) {
sale.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.CASH_OUT.value) {
ca.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_SALE.value) {
preAuth.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_VOID.value) {
preAuthVoid.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_COMPLETE.value) {
preAuthComp.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.PRE_AUTH_COMPLETE_VOID.value) {
preAuthCompVoid.inc(pay.amount);
} else if (pay.getTransactionType() == TransactionsType.REFUND.value) {
refund.inc(pay.amount);
}
}
}
@ -350,9 +328,7 @@ public class TransactionSummaryFragment extends DataBindingFragment {
if (sharedViewModel.hostType.getValue() == HostType.QR) {
return "WALLET";
} else if (sharedViewModel.hostType.getValue() == HostType.MPU) {
return "MPU";
} else if (sharedViewModel.hostType.getValue() == HostType.VISA_MASTER) {
return "Visa/Master";
return "CARD";
}
return "";
}

View File

@ -42,8 +42,8 @@ public class RefundCertificateManager {
return;
};
String downloadBase = tmsAddress.trim() + "/api/v1/file/download?filePath="; //local
// String downloadBase = tmsAddress.trim() + "/file/download?filePath="; // uat and prod
// String downloadBase = tmsAddress.trim() + "/api/v1/file/download?filePath="; //local
String downloadBase = tmsAddress.trim() + "/file/download?filePath="; // uat and prod
String certUrl = SystemParamsOperation.getInstance().getCertificateUrl();
String clientCertUrl = SystemParamsOperation.getInstance().getCertificateClientUrl();

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -86,9 +86,9 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Visa/Master Card Option -->
<!-- Cards Option (MPU + International) -->
<androidx.cardview.widget.CardView
android:id="@+id/visaMasterCard"
android:id="@+id/cardsCard"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginBottom="16dp"
@ -98,7 +98,7 @@
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
android:onClick="@{()->click.onClickVisaMaster()}">
android:onClick="@{()->click.onClickCards()}">
<!-- Card with border -->
<LinearLayout
@ -111,59 +111,74 @@
android:padding="16dp">
<!-- Card Logos Grid Container -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_marginEnd="16dp">
<!-- <LinearLayout-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="vertical"-->
<!-- android:gravity="center"-->
<!-- android:layout_marginEnd="16dp">-->
<!-- First Row: Visa and Mastercard -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_marginBottom="8dp">
<!-- &lt;!&ndash; First Row: MPU, Visa, Mastercard &ndash;&gt;-->
<!-- <LinearLayout-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="horizontal"-->
<!-- android:gravity="center"-->
<!-- android:layout_marginBottom="8dp">-->
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@drawable/visa_logo"
android:scaleType="fitCenter"
android:layout_marginEnd="8dp" />
<!-- <ImageView-->
<!-- android:layout_width="35dp"-->
<!-- android:layout_height="35dp"-->
<!-- android:src="@drawable/logo_mpu"-->
<!-- android:scaleType="fitCenter"-->
<!-- android:layout_marginEnd="8dp" />-->
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@drawable/mastercard_logo"
android:scaleType="fitCenter" />
<!-- <ImageView-->
<!-- android:layout_width="35dp"-->
<!-- android:layout_height="35dp"-->
<!-- android:src="@drawable/visa_logo"-->
<!-- android:scaleType="fitCenter"-->
<!-- android:layout_marginEnd="8dp" />-->
</LinearLayout>
<!-- <ImageView-->
<!-- android:layout_width="35dp"-->
<!-- android:layout_height="35dp"-->
<!-- android:src="@drawable/mastercard_logo"-->
<!-- android:scaleType="fitCenter" />-->
<!-- Second Row: JCB and UnionPay -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<!-- </LinearLayout>-->
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@drawable/jcb_logo"
android:scaleType="fitCenter"
android:layout_marginEnd="8dp" />
<!-- &lt;!&ndash; Second Row: JCB and UnionPay &ndash;&gt;-->
<!-- <LinearLayout-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="horizontal"-->
<!-- android:gravity="center">-->
<ImageView
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@drawable/logo_upi"
android:scaleType="fitCenter" />
<!-- <ImageView-->
<!-- android:layout_width="35dp"-->
<!-- android:layout_height="35dp"-->
<!-- android:src="@drawable/jcb_logo"-->
<!-- android:scaleType="fitCenter"-->
<!-- android:layout_marginEnd="8dp" />-->
</LinearLayout>
<!-- <ImageView-->
<!-- android:layout_width="35dp"-->
<!-- android:layout_height="35dp"-->
<!-- android:src="@drawable/logo_upi"-->
<!-- android:scaleType="fitCenter" />-->
</LinearLayout>
<!-- </LinearLayout>-->
<!-- </LinearLayout>-->
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/ic_bank_card"
app:tint="@color/colorPrimary"
android:alpha="0.8"
android:scaleType="fitCenter"
android:layout_marginEnd="16dp" />
<!-- Card Details -->
<LinearLayout
@ -175,7 +190,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="International Cards"
android:text="Cards"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
android:textStyle="bold"
@ -185,79 +200,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Visa, Mastercard, JCB &amp; UnionPay"
android:textColor="@color/colorPrimary"
android:textSize="13sp"
android:alpha="0.7"
android:fontFamily="sans-serif" />
</LinearLayout>
<!-- Arrow Icon -->
<ImageView
android:layout_width="20dp"
android:layout_height="20dp"
android:src="@drawable/ic_right_arrow"
app:tint="@color/colorPrimary"
android:alpha="0.6" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- MPU Option -->
<androidx.cardview.widget.CardView
android:id="@+id/mpuCard"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginBottom="16dp"
app:cardCornerRadius="16dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/white"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
android:onClick="@{()->click.onClickMPU()}">
<!-- Card with border -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="2dp"
android:background="@drawable/bg_edittext_primary_border"
android:orientation="horizontal"
android:gravity="center"
android:padding="16dp">
<!-- MPU Logo -->
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/logo_mpu"
android:scaleType="fitCenter"
android:layout_marginEnd="16dp" />
<!-- MPU Details -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="MPU"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
android:textStyle="bold"
android:fontFamily="sans-serif-medium"
android:layout_marginBottom="2dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Myanmar Payment Union cards"
android:text="MPU, Visa, Mastercard, JCB &amp; UnionPay"
android:textColor="@color/colorPrimary"
android:textSize="13sp"
android:alpha="0.7"
@ -305,7 +248,7 @@
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/logo_qr_pay_db"
android:src="@drawable/ic_qr_pay"
app:tint="@color/colorPrimary"
android:alpha="0.8"
android:scaleType="fitCenter"

View File

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

View File

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