ereceipt push logic changed in signature receipt
This commit is contained in:
parent
4ffdc1f679
commit
2dd686d513
@ -345,8 +345,12 @@ public class ProcessingFragment extends DataBindingFragment {
|
||||
handleAfterTransaction();
|
||||
break;
|
||||
case SUCCESS:
|
||||
if(requiresSignature()){
|
||||
handleAfterTransaction();
|
||||
}else{
|
||||
sharedViewModel.pushReceipt(buildEReceiptCardReceipt(payDetail, true, BaseErrorCode.getCode(payDetail.getTradeAnswerCode())));
|
||||
handleAfterTransaction();
|
||||
}
|
||||
break;
|
||||
case OFFLINE_SUCCESS:
|
||||
if(SystemParamsOperation.getInstance().getDemoStatus()) {
|
||||
|
||||
@ -9,6 +9,7 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.github.gcacace.signaturepad.views.SignaturePad;
|
||||
import com.utsmm.kbz.util.helper.EReceiptHelper;
|
||||
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
||||
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
||||
import com.utsmm.kbz.BR;
|
||||
@ -19,6 +20,7 @@ import com.utsmm.kbz.ui.core_viewmodel.SharedViewModel;
|
||||
import com.utsmyanmar.paylibs.model.PayDetail;
|
||||
import com.utsmyanmar.paylibs.print.printx.PrintX;
|
||||
import com.utsmyanmar.paylibs.print.printx.PrintXReceipt;
|
||||
import com.utsmyanmar.paylibs.system.BaseErrorCode;
|
||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||
import com.utsmyanmar.paylibs.utils.print_utils.BitmapUtils;
|
||||
|
||||
@ -139,6 +141,14 @@ public class SignatureFragment extends DataBindingFragment {
|
||||
payDetail.setESignBlob(blob);
|
||||
sharedViewModel.payDetail.setValue(payDetail);
|
||||
sharedViewModel.updateESignBlob(payDetail.voucherNo, blob);
|
||||
sharedViewModel.pushReceipt(EReceiptHelper.buildEReceiptCardReceipt(
|
||||
requireContext(),
|
||||
payDetail,
|
||||
true,
|
||||
BaseErrorCode.getCode(payDetail.getTradeAnswerCode()),
|
||||
blob)
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public class ClickEvent {
|
||||
|
||||
137
app/src/main/java/com/utsmm/kbz/util/helper/EReceiptHelper.java
Normal file
137
app/src/main/java/com/utsmm/kbz/util/helper/EReceiptHelper.java
Normal file
@ -0,0 +1,137 @@
|
||||
package com.utsmm.kbz.util.helper;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Base64;
|
||||
|
||||
import com.utsmm.kbz.util.tms.TMSUtil;
|
||||
import com.utsmyanmar.baselib.network.model.e_receipt.EReceiptCardRequest;
|
||||
import com.utsmyanmar.paylibs.model.PayDetail;
|
||||
import com.utsmyanmar.paylibs.print.PrintUtils;
|
||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
public class EReceiptHelper {
|
||||
public static EReceiptCardRequest buildEReceiptCardReceipt(Context context, PayDetail payDetail, boolean isSuccess, String reason , byte[] signature){
|
||||
//current timestamp
|
||||
String currentTimestamp = new java.text.SimpleDateFormat(
|
||||
"MMddHHmmss", java.util.Locale.getDefault()
|
||||
).format(new java.util.Date());
|
||||
|
||||
//DeviceInfo
|
||||
String serial = TMSUtil.getInstance().getSerialNumber();
|
||||
String appId = context.getPackageName();
|
||||
|
||||
//TerminalInfo
|
||||
String terminalId = SystemParamsOperation.getInstance().getTerminalId();
|
||||
String merchantId = SystemParamsOperation.getInstance().getMerchantId();
|
||||
|
||||
double realAmount = payDetail.getAmount() / 100.0;
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
String amount = df.format(realAmount);
|
||||
|
||||
String rawName = PrintUtils.getInstance()
|
||||
.getCardHolderName(payDetail.getCardHolderName());
|
||||
|
||||
String secondLine = PrintUtils.getInstance()
|
||||
.processNameSpaceSecondLine(rawName);
|
||||
|
||||
String firstLine = PrintUtils.getInstance()
|
||||
.processNameSpaceFirstLine(rawName, secondLine);
|
||||
|
||||
|
||||
String cardHolderName = firstLine +
|
||||
(secondLine.isEmpty() ? "" : " " + secondLine);
|
||||
|
||||
EReceiptCardRequest request = new EReceiptCardRequest();
|
||||
request.setDE2(PrintUtils.getInstance().maskCardNumberPciDss(payDetail.getCardNo()));
|
||||
request.setDE3(mapTransactionType(payDetail.getTransactionType()));
|
||||
request.setDE4(amount);
|
||||
request.setDE7(currentTimestamp);
|
||||
request.setDE11(payDetail.getVoucherNo());
|
||||
// request.setDE22(mapTransactionType(payDetail.getTransactionType()));
|
||||
request.setDE22(PrintUtils.getInstance().getEntryType(payDetail.getCardType()));
|
||||
request.setDE37(payDetail.getReferNo());
|
||||
request.setDE38(payDetail.getApprovalCode());
|
||||
request.setDE39(isSuccess ? "A" : "E");
|
||||
request.setDE41(terminalId);
|
||||
request.setDE42(merchantId);
|
||||
request.setDE49(mapCurrency(payDetail.getCurrencyCode()));
|
||||
request.setSerial(serial);
|
||||
request.setInvoiceNumber(payDetail.getInvoiceNo());
|
||||
request.setAppId(appId);
|
||||
request.setDescription(reason);
|
||||
request.setBatchNumber(payDetail.batchNo);
|
||||
request.setDE55(payDetail.getAppLabel());
|
||||
request.setCardLabel(payDetail.getAccountType());
|
||||
request.setDE14(PrintUtils.getInstance().getFormatExpDate(payDetail.getEXPDate()));
|
||||
request.setDE43(formatDE43(cardHolderName));
|
||||
request.setDE48(payDetail.getAID());
|
||||
request.setDE115(signature != null ? Base64.encodeToString(signature, Base64.NO_WRAP) : "");
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
public static String mapTransactionType(int type) {
|
||||
switch (type) {
|
||||
case 1: // SALE
|
||||
return "S";
|
||||
|
||||
case 2: // VOID SALE
|
||||
return "V";
|
||||
|
||||
case 4: // REFUND
|
||||
return "R";
|
||||
|
||||
case 5: // PRE-AUTH
|
||||
return "P";
|
||||
|
||||
case 6: // PRE-AUTH VOID
|
||||
return "PV";
|
||||
|
||||
case 7: // PRE-AUTH COMPLETE
|
||||
return "PC";
|
||||
|
||||
case 8: // PRE-AUTH COMPLETE VOID
|
||||
return "PCV";
|
||||
|
||||
case 9: // CASH OUT
|
||||
return "CAV";
|
||||
|
||||
case 18: // TIP ADJUST
|
||||
return "TA";
|
||||
|
||||
case 20: // QR PAYMENT
|
||||
return "QR";
|
||||
|
||||
case 34: // QR REFUND
|
||||
return "QRV";
|
||||
|
||||
default:
|
||||
return "UNK";
|
||||
}
|
||||
}
|
||||
|
||||
private static 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 static String formatDE43(String value) {
|
||||
if (value == null) value = "";
|
||||
|
||||
if (value.length() > 40) {
|
||||
return value.substring(0, 40);
|
||||
}
|
||||
|
||||
return String.format("%-40s", value); // right pad with space
|
||||
}
|
||||
}
|
||||
@ -24,7 +24,7 @@ public final class TerminalKeyUtil {
|
||||
|
||||
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("B4D74774CC846CAFF6D1AAAC2EB79CFF".toUpperCase()); // KBZ UAT
|
||||
// private static final byte[] main_key_usd_data = ByteUtil.hexStr2Bytes("3f4bcac6cc559ab12bbbc5a51118f3f5".toUpperCase()); // KBZ UAT
|
||||
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase());
|
||||
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("3F4BCAC6CC559AB12BBBC5A51118F3F5".toUpperCase());
|
||||
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU
|
||||
private static final byte[] work_key_data = new byte[16];
|
||||
public static void initNexKey() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user