qr e-receipt push fix

This commit is contained in:
MooN 2025-12-03 00:01:11 +06:30
parent 6b1c6ef4b5
commit 4d5124fc64
4 changed files with 54 additions and 111 deletions

View File

@ -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;
// }
}

View File

@ -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;
// }
}

View File

@ -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;
}

View File

@ -107,7 +107,8 @@ public class Repository {
return siriusApiService.getParams(siriusRequest);
}
public Observable<EReceiptResponse> 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;