settlement QR setup

This commit is contained in:
MooN 2025-12-29 02:19:58 +06:30
parent c6c5dd39e4
commit 7276f8c572
6 changed files with 103 additions and 8 deletions

View File

@ -14,8 +14,8 @@ android {
applicationId "com.utsmm.kbz"
minSdk 24
targetSdk 33
versionCode 8
versionName "1.07"
versionCode 9
versionName "1.08"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@ -404,7 +404,7 @@ public class AutoSettleService extends Service {
// Push e-receipt data using repository directly
try {
EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(payDetail);
EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(payDetail, qrTransactionsList);
sendEReceipt(request);
LogUtil.d(TAG, "QR Settlement e-receipt data prepared and sent");
} catch (Exception e) {

View File

@ -331,7 +331,7 @@ public class QRSettlementTransactionFragment extends DataBindingFragment impleme
}
private void updateData() {
// EReceiptRequest request = EReceiptUtil.getInstance().generateMPUReceipt(sharedViewModel.payDetail.getValue());
EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue());
EReceiptRequest request = EReceiptUtil.getInstance().generateQRSettlement(sharedViewModel.payDetail.getValue(), qrTransactionsList);
sharedViewModel.pushReceipt(request);
}

View File

@ -4,6 +4,7 @@ import com.utsmm.kbz.BuildConfig;
import com.utsmm.kbz.util.enums.TransResultStatus;
import com.utsmm.kbz.util.tms.TMSUtil;
import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest;
import com.utsmyanmar.baselib.network.model.e_receipt.Transaction;
import com.utsmyanmar.paylibs.model.PayDetail;
import com.utsmyanmar.paylibs.model.SettleData;
import com.utsmyanmar.paylibs.system.BaseErrorCode;
@ -12,6 +13,8 @@ import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
public class EReceiptUtil {
@ -225,7 +228,7 @@ public class EReceiptUtil {
return request;
}
public EReceiptRequest generateQRSettlement(PayDetail payDetail) {
public EReceiptRequest generateQRSettlement(PayDetail payDetail, List<PayDetail> transactions) {
double realAmount = payDetail.getAmount() / 100.0;
DecimalFormat df = new DecimalFormat("0.00");
@ -237,13 +240,15 @@ public class EReceiptUtil {
String terminalId = SystemParamsOperation.getInstance().getTerminalIdForEreceipt();
EReceiptRequest request = new EReceiptRequest();
request.setDE3(convertTransactionType(payDetail.getTransactionType()));
// request.setDE3(convertTransactionType(payDetail.getTransactionType()));
request.setDE3("QRST");
request.setDE7(currentTimeStamp);
request.setDE11(payDetail.getVoucherNo());
String hostId = SystemParamsOperation.getInstance().getSecHostId();
request.setHostId(hostId);
request.setTerminalId(terminalId);//terminalId is not tid
request.setShortCode(qrMerchantId);
request.setTransactions(buildTransactions(transactions));
SettleData settleData = payDetail.getSettleDataObj();
@ -251,8 +256,6 @@ public class EReceiptUtil {
double realTotalAmount = totalAmt / 100.0;
String totalAmount = df.format(realTotalAmount);
request.setDE4(totalAmount);
request.setDE63_01(settleData.getSaleCount() + "");
request.setDE63_02(settleData.getSaleAmount() + "");
request.setDE63_03(settleData.getRefundCount() + "");
@ -275,6 +278,32 @@ public class EReceiptUtil {
return request;
}
private static List<Transaction> buildTransactions(List<PayDetail> payDetails) {
List<Transaction> list = new ArrayList<>();
for (PayDetail pay : payDetails) {
double realAmount = pay.getAmount() / 100.0;
DecimalFormat df = new DecimalFormat("0.00");
String amount = df.format(realAmount);
Transaction txn = new Transaction();
txn.setTran_id(pay.getVoucherNo()); // or ref no
txn.setStatus(
pay.getTransactionType() == TransactionsType.MMQR_REFUND.value
? "REFUND_SUCCESS"
: "PAY_SUCCESS"
);
txn.setDate(pay.getTransDate()); // yyyyMMdd
txn.setTime(pay.getTransTime()); // HHmmss
txn.setAmount(amount);
list.add(txn);
}
return list;
}
public String convertTransactionType(int transactionType) {
if (transactionType == TransactionsType.SALE.value) {
return "S";

View File

@ -1,5 +1,7 @@
package com.utsmyanmar.baselib.network.model.e_receipt;
import java.util.List;
public class EReceiptRequest {
private String DE2;
private String DE3;
@ -41,8 +43,18 @@ public class EReceiptRequest {
private String hostId;
private String paymentIdentifier;
private List<Transaction> transactions;
public EReceiptRequest() {}
public List<Transaction> getTransactions(){
return transactions;
}
public void setTransactions(List<Transaction> transactions){
this.transactions = transactions;
}
// GETTERS
public String getPaymentIdentifier(){
@ -258,3 +270,5 @@ public class EReceiptRequest {
}
public void setMmqrRef(String mmqrRef){ this.mmqrRef = mmqrRef; }
}

View File

@ -0,0 +1,52 @@
package com.utsmyanmar.baselib.network.model.e_receipt;
public class Transaction {
private String tran_id;
private String status;
private String date;
private String time;
private String amount;
public Transaction() {}
public String getTran_id() {
return tran_id;
}
public void setTran_id(String tran_id) {
this.tran_id = tran_id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getAmount() {
return amount;
}
public void setAmount(String amount) {
this.amount = amount;
}
}