From 4d5124fc6467948b30b9155d22b790505980b87a Mon Sep 17 00:00:00 2001 From: MooN <56061215+MgKyawLay@users.noreply.github.com> Date: Wed, 3 Dec 2025 00:01:11 +0630 Subject: [PATCH] qr e-receipt push fix --- .../kbz/ui/kpay/QRTransactionFragment.java | 54 ---------------- .../ui/qr_pay/QRRefundProcessFragment.java | 64 +++---------------- .../java/com/utsmm/kbz/util/EReceiptUtil.java | 44 +++++++++++++ .../utsmyanmar/baselib/repo/Repository.java | 3 +- 4 files changed, 54 insertions(+), 111 deletions(-) diff --git a/app/src/main/java/com/utsmm/kbz/ui/kpay/QRTransactionFragment.java b/app/src/main/java/com/utsmm/kbz/ui/kpay/QRTransactionFragment.java index 85ced04..e2cf098 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/kpay/QRTransactionFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/kpay/QRTransactionFragment.java @@ -431,58 +431,4 @@ public class QRTransactionFragment extends DataBindingFragment implements DataBi }); } - private String mapCurrency(String currency) { - if (currency == null) return "MMK"; - - switch (currency) { - case "104": return "MMK"; - case "840": return "USD"; - case "764": return "THB"; - case "702": return "SGD"; - case "978": return "EUR"; - default: return currency; // Already alphabetic? return as-is - } - } - - -// private EReceiptQRRequest buildEReceiptQRReceipt(PayDetail payDetail, boolean isSuccess, String reason) { -// -// // Timestamp (MMddHHmmss) -// String currentTimestamp = new java.text.SimpleDateFormat( -// "MMddHHmmss", java.util.Locale.getDefault() -// ).format(new java.util.Date()); -// -// // Device Info -// String serial = TMSUtil.getInstance().getSerialNumber(); -// String appId = requireActivity().getPackageName(); -// -// // Terminal Info -//// String terminalId = SystemParamsOperation.getInstance().getTerminalId(); -//// String merchantId = SystemParamsOperation.getInstance().getMerchantId(); -// -// -// // Amount convert (long cents → double → 0.00) -// double realAmount = payDetail.getAmount() / 100.0; -// DecimalFormat df = new DecimalFormat("0.00"); -// String amount = df.format(realAmount); -// -// EReceiptQRRequest request = new EReceiptQRRequest(); -// request.setDE3("QR"); // QR Process Code -// request.setDE4(amount); // Amount -// request.setDE7(currentTimestamp); // Timestamp -// request.setDE37(payDetail.getReferNo()); // Reference No -// request.setDE39(isSuccess ? "A" : "E"); // A=Approved, D=Declined/Timeout -// request.setDE41(terminalId); -// request.setDE42(merchantId); -// request.setDE49(mapCurrency(payDetail.getCurrencyCode())); // Currency -// request.setSerial(serial); -// request.setInvoiceNumber(payDetail.getInvoiceNo()); -// request.setDE11(payDetail.getVoucherNo()); // STAN -// request.setAppId(appId); -// request.setDescription(reason); // Anything: success / timeout / error message -// -// return request; -// } - - } diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java index 39acd80..d95cef0 100644 --- a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java +++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRRefundProcessFragment.java @@ -12,12 +12,15 @@ import com.utsmm.kbz.config.Constants; import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel; import com.utsmm.kbz.ui.kpay.KPayViewModel; import com.utsmm.kbz.ui.kpay.QRRefundFragment; +import com.utsmm.kbz.util.EReceiptUtil; import com.utsmm.kbz.util.TransactionUtil; import com.utsmm.kbz.util.ecr.CoreUtils; +import com.utsmm.kbz.util.enums.TransResultStatus; import com.utsmm.kbz.util.tms.TMSUtil; import com.utsmyanmar.baselib.fragment.DataBindingFragment; import com.utsmyanmar.baselib.network.model.KPayRefund; //import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptQRRequest; +import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptRequest; import com.utsmyanmar.baselib.util.DataBindingConfig; import com.utsmyanmar.paylibs.model.PayDetail; import com.utsmyanmar.paylibs.system.SystemDateTime; @@ -144,7 +147,8 @@ public class QRRefundProcessFragment extends DataBindingFragment { payDetail.setReferNo(referenceNo); payDetail.setIsCanceled(true); -// sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, true, "Refund success")); + EReceiptRequest request = EReceiptUtil.getInstance().generateQRRefundReceipt(sharedViewModel.payDetail.getValue(), TransResultStatus.SUCCESS); + sharedViewModel.pushReceipt(request); retrievedUpdatePayDetail(referenceNo); @@ -159,8 +163,9 @@ public class QRRefundProcessFragment extends DataBindingFragment { errorMsg = response.getResponse().getMsg(); } payDetail.setTradeResultDes(errorMsg); -// sharedViewModel.pushReceipt(buildEReceiptQRReceipt(payDetail, false, "Refund Failed! "+errorMsg)); - + EReceiptRequest request = EReceiptUtil.getInstance().generateQRRefundReceipt(sharedViewModel.payDetail.getValue(), TransResultStatus.FAIL); + sharedViewModel.pushReceipt(request); + sharedViewModel.payDetail.setValue(payDetail); navigateToNext(); } @@ -220,57 +225,4 @@ public class QRRefundProcessFragment extends DataBindingFragment { } } - private String mapCurrency(String currency) { - if (currency == null) return "MMK"; - - switch (currency) { - case "104": return "MMK"; - case "840": return "USD"; - case "764": return "THB"; - case "702": return "SGD"; - case "978": return "EUR"; - default: return currency; // Already alphabetic? return as-is - } - } - -// private EReceiptQRRequest buildEReceiptQRReceipt(PayDetail payDetail, boolean isSuccess, String reason) { -// -// // Timestamp (MMddHHmmss) -// String currentTimestamp = new java.text.SimpleDateFormat( -// "MMddHHmmss", java.util.Locale.getDefault() -// ).format(new java.util.Date()); -// -// // Device Info -// String serial = TMSUtil.getInstance().getSerialNumber(); -// String appId = requireActivity().getPackageName(); -// -// -// // Terminal Info -//// String terminalId = SystemParamsOperation.getInstance().getTerminalId(); -//// String merchantId = SystemParamsOperation.getInstance().getMerchantId(); -// String terminalId = TransactionUtil.getInstance().getQRTerminalId(); -// String merchantId = TransactionUtil.getInstance().getQRMerchantId(); -// -// // Amount convert (long cents → double → 0.00) -// double realAmount = payDetail.getAmount() / 100.0; -// DecimalFormat df = new DecimalFormat("0.00"); -// String amount = df.format(realAmount); -// -// EReceiptQRRequest request = new EReceiptQRRequest(); -// request.setDE3("QRV"); // QR Process Code(fix later with get from config) -// request.setDE4(amount); // Amount -// request.setDE7(currentTimestamp); // Timestamp -// request.setDE37(payDetail.getReferNo()); // Reference No -// request.setDE39(isSuccess ? "A" : "E"); // A=Approved, E=Error/Declined/Timeout -// request.setDE41(terminalId); -// request.setDE42(merchantId); -// request.setDE49(mapCurrency(payDetail.getCurrencyCode())); // Currency(fix later with get from config) -// request.setSerial(serial); -// request.setInvoiceNumber(payDetail.getInvoiceNo()); -// request.setDE11(payDetail.getVoucherNo()); // STAN -// request.setAppId(appId); -// request.setDescription(reason); // Anything: success / timeout / error message -// -// return request; -// } } diff --git a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java index f4f3269..429f3c3 100644 --- a/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java +++ b/app/src/main/java/com/utsmm/kbz/util/EReceiptUtil.java @@ -85,6 +85,50 @@ public class EReceiptUtil { + return request; + } + + public EReceiptRequest generateQRRefundReceipt(PayDetail payDetail, TransResultStatus status) { + + double realAmount = payDetail.getAmount() / 100.0; + DecimalFormat df = new DecimalFormat("0.00"); + String amount = df.format(realAmount); + + String currentTimeStamp = new java.text.SimpleDateFormat("MMddHHmmss", java.util.Locale.getDefault()) + .format(new java.util.Date()); + EReceiptRequest request = new EReceiptRequest(); + request.setDE3("QRV"); + + request.setDE7(currentTimeStamp); + request.setDE37(payDetail.getReferNo()); + + request.setDE49("MMK"); + request.setSerial(serialNum); + request.setAppId(packageName); + request.setDE41(terminalId); + request.setDE42(merchantId); + request.setInvoiceNumber(payDetail.getInvoiceNo()); + request.setDE11(payDetail.getVoucherNo()); + + // need to add payment identifier field too + + if(status == TransResultStatus.SUCCESS) { + request.setDE4(amount); + request.setDescription("qr refund success"); + request.setDE39("A"); + } else if(status == TransResultStatus.TIME_OUT) { + request.setDE4("0"); + request.setDescription("qr refund timeout"); + request.setDE39("D"); + } else if(status == TransResultStatus.FAIL) { + request.setDE4("0"); + request.setDescription("qr refund failed"); + request.setDE39("E"); + } + + + + return request; } diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java index 8bda331..45f23b4 100644 --- a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java +++ b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java @@ -107,7 +107,8 @@ public class Repository { return siriusApiService.getParams(siriusRequest); } public Observable sendReceipt(Object body){ - String apiSecret = BuildConfig.ERECEIPT_SECRET; +// String apiSecret = BuildConfig.ERECEIPT_SECRET; + String apiSecret = "8f4df38d1001bcc4620b5c736c66a03eef4653eb3ba31105faa2f2ee294c4a46"; String timestamp = String.valueOf(System.currentTimeMillis()); String bodyString = new Gson().toJson(body); String dataToHash = bodyString + apiSecret + timestamp;