package for jcb

This commit is contained in:
moon 2026-09-28 13:57:41 +06:30
parent 22ac9deeac
commit 117c93a2c4
13 changed files with 24 additions and 13 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" /> <bytecodeTargetLevel target="21" />
</component> </component>
</project> </project>

View File

@ -6,7 +6,7 @@
<GradleProjectSettings> <GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" /> <option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="temurin-17" /> <option name="gradleJvm" value="#JAVA_HOME" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="temurin-17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="temurin-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -105,3 +105,6 @@ card
## [2.43] ## [2.43]
- settlement can now send without Tid, Mid but only Qr
- USD sale, void fixed that showing only MMR
- fixed QR records showing previous data when settle

View File

@ -39,8 +39,8 @@ android {
applicationId "com.utsmm.kbz.uat" applicationId "com.utsmm.kbz.uat"
versionNameSuffix "-uat" versionNameSuffix "-uat"
resValue "string", "app_name", "KBZ-UAT" resValue "string", "app_name", "KBZ-UAT"
versionCode 48 versionCode 49
versionName "2.43" versionName "2.44"
} }
prod { prod {

View File

@ -310,9 +310,7 @@ public class MyBindingAdapter {
@BindingAdapter({"isTrace"}) @BindingAdapter({"isTrace"})
public static void checkIsTraceOrInvoice(TextView textView, PayDetail payDetail) { public static void checkIsTraceOrInvoice(TextView textView, PayDetail payDetail) {
if(payDetail.getTransactionType() == TransactionsType.MMQR.value || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) { if(payDetail.getTransactionType() == TransactionsType.MMQR.value || payDetail.getTransactionType() == TransactionsType.MMQR_REFUND.value) {
// textView.setText("INV:"+payDetail.getInvoiceNo()); textView.setText("INV:"+payDetail.getInvoiceNo());
//tempo fix for qr trace num
textView.setText("TRC:"+payDetail.getVoucherNo());
} else { } else {
textView.setText("TRC:"+payDetail.getVoucherNo()); textView.setText("TRC:"+payDetail.getVoucherNo());
} }

View File

@ -134,7 +134,7 @@ public class QRRefundFragment extends DataBindingFragment {
List<PayDetail> filteredList = new ArrayList<>(); List<PayDetail> filteredList = new ArrayList<>();
for(PayDetail item: originalList){ for(PayDetail item: originalList){
boolean match = item.getVoucherNo() != null && item.getVoucherNo().contains(keyword); boolean match = item.getInvoiceNo() != null && item.getInvoiceNo().contains(keyword);
if(match){ if(match){
filteredList.add(item); filteredList.add(item);
} }

View File

@ -11,8 +11,8 @@
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 47, "versionCode": 48,
"versionName": "2.42-uat", "versionName": "2.43-uat",
"outputFile": "app-uat-release.apk" "outputFile": "app-uat-release.apk"
} }
], ],

View File

@ -25,7 +25,8 @@ public final class TerminalKeyUtil {
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("B4D74774CC846CAFF6D1AAAC2EB79CFF".toUpperCase()); // KBZ UAT // 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_usd_data = ByteUtil.hexStr2Bytes("3f4bcac6cc559ab12bbbc5a51118f3f5".toUpperCase()); // KBZ UAT
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("3F4BCAC6CC559AB12BBBC5A51118F3F5".toUpperCase()); // private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("3F4BCAC6CC559AB12BBBC5A51118F3F5".toUpperCase());
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("b4d74774cc846caff6d1aaac2eb79cff".toUpperCase()); // private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("b4d74774cc846caff6d1aaac2eb79cff".toUpperCase());
private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("875f63741753d18811a3449090d1777b".toUpperCase());
// private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU // private static final byte[] main_key_data = ByteUtil.hexStr2Bytes("e121249099a677e8b7d4f6a9d49fe8d1".toUpperCase()); // MPU
private static final byte[] work_key_data = new byte[16]; private static final byte[] work_key_data = new byte[16];
public static void initNexKey() { public static void initNexKey() {

View File

@ -1286,7 +1286,7 @@ public abstract class BaseXPrint {
printString("CARD TYPE:" + pay.getAccountType()); printString("CARD TYPE:" + pay.getAccountType());
printString("CARD NO :" + PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo())); printString("CARD NO :" + PrintUtils.getInstance().maskCardNumberPciDss(pay.getCardNo()));
printString("INV NO :" + pay.getVoucherNo()); printString("INV NO :" + pay.getInvoiceNo());
printString("RRN :" + pay.getReferNo()); printString("RRN :" + pay.getReferNo());
printString("DATE :" + POSUtil.getInstance().formatDisplayDate(pay.getTransDate())); printString("DATE :" + POSUtil.getInstance().formatDisplayDate(pay.getTransDate()));
printString(" " + pay.getTransTime()); printString(" " + pay.getTransTime());

View File

@ -72,6 +72,9 @@ public class AuthorizationProcessUtil {
case "104": case "104":
emvOnlineResult.setRejCode("62"); emvOnlineResult.setRejCode("62");
break; break;
case "123":
emvOnlineResult.setRejCode("61");
break;
default: default:
emvOnlineResult.setRejCode(field39.getDataStr()); emvOnlineResult.setRejCode(field39.getDataStr());
break; break;
@ -116,6 +119,7 @@ public class AuthorizationProcessUtil {
String value71 = null; String value71 = null;
String value72 = null; String value72 = null;
String value91 = null; String value91 = null;
String value61 = null;
if (f055Valid) { if (f055Valid) {
String f55 = field55.getDataStr(); String f55 = field55.getDataStr();
Map<String, String> tlvMap = TLVUtils.builderAuthorizationProcessMap(f55); Map<String, String> tlvMap = TLVUtils.builderAuthorizationProcessMap(f55);
@ -166,6 +170,10 @@ public class AuthorizationProcessUtil {
tagList.add("91"); tagList.add("91");
valueList.add(value91); valueList.add(value91);
} }
if (value61 != null && value61.length() > 0) {
tagList.add("61");
valueList.add(value61);
}
int size = tagList.size(); int size = tagList.size();
byte[] outData = new byte[24]; byte[] outData = new byte[24];