Compare commits
No commits in common. "main" and "master" have entirely different histories.
@ -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="17 (2)" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
|||||||
@ -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_17" default="true" project-jdk-name="17" 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">
|
||||||
|
|||||||
@ -14,8 +14,8 @@ android {
|
|||||||
applicationId "com.utsmm.kbz"
|
applicationId "com.utsmm.kbz"
|
||||||
minSdk 24
|
minSdk 24
|
||||||
targetSdk 33
|
targetSdk 33
|
||||||
versionCode 5
|
versionCode 7
|
||||||
versionName "1.05"
|
versionName "1.07"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@ -11,8 +11,8 @@
|
|||||||
"type": "SINGLE",
|
"type": "SINGLE",
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"versionCode": 5,
|
"versionCode": 6,
|
||||||
"versionName": "1.05",
|
"versionName": "1.06",
|
||||||
"outputFile": "app-release.apk"
|
"outputFile": "app-release.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@ -46,8 +46,7 @@
|
|||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme.NoActionBar"
|
android:theme="@style/AppTheme.NoActionBar">
|
||||||
>
|
|
||||||
<!-- android:manageSpaceActivity="com.utsmyanmar.upos.config.UTSManageSpaceActivity"-->
|
<!-- android:manageSpaceActivity="com.utsmyanmar.upos.config.UTSManageSpaceActivity"-->
|
||||||
<!-- <activity-->
|
<!-- <activity-->
|
||||||
<!-- android:screenOrientation="portrait"-->
|
<!-- android:screenOrientation="portrait"-->
|
||||||
|
|||||||
@ -292,7 +292,7 @@ public class MainFragment extends DataBindingFragment {
|
|||||||
|
|
||||||
private void updateButtonStatus() {
|
private void updateButtonStatus() {
|
||||||
mainViewModel.settlementStatus.setValue(SystemParamsOperation.getInstance().getSettlementStatus());
|
mainViewModel.settlementStatus.setValue(SystemParamsOperation.getInstance().getSettlementStatus());
|
||||||
mainViewModel.kPayStatus.setValue(SystemParamsOperation.getInstance().getWavePayStatus());
|
mainViewModel.kPayStatus.setValue(SystemParamsOperation.getInstance().getQRPayStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUpCarouselImages() {
|
private void setUpCarouselImages() {
|
||||||
|
|||||||
@ -94,7 +94,7 @@ public class MainViewModel extends ViewModel {
|
|||||||
|
|
||||||
settlementStatus.setValue(SystemParamsOperation.getInstance().getSettlementStatus());
|
settlementStatus.setValue(SystemParamsOperation.getInstance().getSettlementStatus());
|
||||||
|
|
||||||
kPayStatus.setValue(SystemParamsOperation.getInstance().getWavePayStatus());
|
kPayStatus.setValue(SystemParamsOperation.getInstance().getQRPayStatus());
|
||||||
|
|
||||||
disabledMsg.setValue(SystemParamsOperation.getInstance().getDisabledMsg());
|
disabledMsg.setValue(SystemParamsOperation.getInstance().getDisabledMsg());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,5 +5,6 @@ public enum CardTransactionType {
|
|||||||
MPU,
|
MPU,
|
||||||
EMV,
|
EMV,
|
||||||
MAG,
|
MAG,
|
||||||
FALLBACK
|
FALLBACK,
|
||||||
|
MOCK
|
||||||
}
|
}
|
||||||
|
|||||||
@ -106,11 +106,15 @@ public class CardWaitingFragment extends DataBindingFragment implements DataBind
|
|||||||
|
|
||||||
public void onClickManualEntry() {
|
public void onClickManualEntry() {
|
||||||
|
|
||||||
// showSingleInfoDialogAutoHide("Coming Soon!");
|
|
||||||
|
|
||||||
routeId = R.id.action_cardWaitingFragment_to_manualEntryFragment;
|
routeId = R.id.action_cardWaitingFragment_to_manualEntryFragment;
|
||||||
safeNavigateToRouteId();
|
safeNavigateToRouteId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onClickTap() {
|
||||||
|
cardReadViewModel.setCardTransactionType(CardTransactionType.MOCK);
|
||||||
|
routeId = R.id.action_cardWaitingFragment_to_processingCardFragment;
|
||||||
|
safeNavigateToRouteId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import android.view.View;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.utsmm.kbz.util.MockData;
|
||||||
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
import com.utsmyanmar.baselib.fragment.DataBindingFragment;
|
||||||
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
import com.utsmyanmar.baselib.util.DataBindingConfig;
|
||||||
import com.utsmyanmar.checkxread.model.CardDataX;
|
import com.utsmyanmar.checkxread.model.CardDataX;
|
||||||
@ -41,6 +42,8 @@ public class ProcessingCardFragment extends DataBindingFragment {
|
|||||||
private TransProcessViewModel transProcessViewModel;
|
private TransProcessViewModel transProcessViewModel;
|
||||||
private PinPadViewModel pinPadViewModel;
|
private PinPadViewModel pinPadViewModel;
|
||||||
private EmvTransactionProcessViewModel emvTransactionViewModel;
|
private EmvTransactionProcessViewModel emvTransactionViewModel;
|
||||||
|
|
||||||
|
|
||||||
private int routeId;
|
private int routeId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -102,9 +105,24 @@ public class ProcessingCardFragment extends DataBindingFragment {
|
|||||||
break;
|
break;
|
||||||
case MAG: readMAGStripe(false,true);
|
case MAG: readMAGStripe(false,true);
|
||||||
break;
|
break;
|
||||||
|
case MOCK: mockMPUCard();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void mockMPUCard() {
|
||||||
|
LogUtil.d(TAG,"initialize mock card data...");
|
||||||
|
routeId = R.id.action_processingCardFragment_to_pinPadFragment;
|
||||||
|
transProcessViewModel.transType.postValue(sharedViewModel.transactionsType.getValue());
|
||||||
|
pinPadViewModel.transType.postValue(sharedViewModel.transactionsType.getValue());
|
||||||
|
|
||||||
|
CardDataX cardDataX = MockData.getInstance().generateMPUCard();
|
||||||
|
|
||||||
|
TradeData tradeData = TransactionUtil.getInstance().initMPUTransaction(cardDataX, CardTypeX.IC);
|
||||||
|
transProcessViewModel.setTradeData(tradeData);
|
||||||
|
pinPadViewModel.setTradeData(tradeData);
|
||||||
|
sharedViewModel.setCardDataExist(true);
|
||||||
|
safeNavigateToRouteId();
|
||||||
|
}
|
||||||
|
|
||||||
private void readMPUCard() {
|
private void readMPUCard() {
|
||||||
cardReadViewModel.startReadXProcess(MPUXReadCard.getInstance(), new ReadCardResultX() {
|
cardReadViewModel.startReadXProcess(MPUXReadCard.getInstance(), new ReadCardResultX() {
|
||||||
|
|||||||
@ -42,12 +42,13 @@ import java.io.IOException;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import dagger.hilt.android.AndroidEntryPoint;
|
||||||
import retrofit2.HttpException;
|
import retrofit2.HttpException;
|
||||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
|
|
||||||
|
|
||||||
// Temporarily disabled Hilt
|
// Temporarily disabled Hilt
|
||||||
// @AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
public class TransactionResultFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback {
|
public class TransactionResultFragment extends DataBindingFragment implements DataBindingFragment.BackPressCallback {
|
||||||
|
|
||||||
private static final String TAG = TransactionResultFragment.class.getSimpleName();
|
private static final String TAG = TransactionResultFragment.class.getSimpleName();
|
||||||
|
|||||||
@ -25,6 +25,8 @@ import java.util.HashSet;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import io.reactivex.rxjava3.core.Single;
|
||||||
|
|
||||||
|
|
||||||
public class CardReadViewModel extends ViewModel {
|
public class CardReadViewModel extends ViewModel {
|
||||||
|
|
||||||
@ -46,7 +48,7 @@ public class CardReadViewModel extends ViewModel {
|
|||||||
public SingleLiveEvent<Integer> cardTypeData = new SingleLiveEvent<>();
|
public SingleLiveEvent<Integer> cardTypeData = new SingleLiveEvent<>();
|
||||||
public SingleLiveEvent<PayDetail> payDetail = new SingleLiveEvent<>();
|
public SingleLiveEvent<PayDetail> payDetail = new SingleLiveEvent<>();
|
||||||
|
|
||||||
public SingleLiveEvent<CardReadStatus> readStatus = new SingleLiveEvent<>();
|
|
||||||
|
|
||||||
public SingleLiveEvent<String> checkCardAlertMsg = new SingleLiveEvent<>();
|
public SingleLiveEvent<String> checkCardAlertMsg = new SingleLiveEvent<>();
|
||||||
|
|
||||||
@ -95,96 +97,6 @@ public class CardReadViewModel extends ViewModel {
|
|||||||
checkCardAlertMsg.setValue(null);
|
checkCardAlertMsg.setValue(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void initCardReadProcess(int allType, int timeOutInSec, ReadCardResult readCardResult) {
|
|
||||||
// ReadCardProcess.getInstance().startReadCard(allType,"",timeOutInSec,false).onStartReadCardProcess(new CheckCardListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onCheckCardSuccess(int cardType, MPUCardData mpuCardData, CardScheme cardScheme) {
|
|
||||||
//
|
|
||||||
// cardData.postValue(mpuCardData);
|
|
||||||
// cardSchemeData.postValue(cardScheme);
|
|
||||||
// cardTypeData.postValue(cardType);
|
|
||||||
// PayDetail payDetailData = new PayDetail();
|
|
||||||
// payDetailData.setCardNo(mpuCardData.getPan());
|
|
||||||
// payDetailData.setEXPDate(mpuCardData.getExp());
|
|
||||||
// payDetailData.setAccountType(cardScheme.name());
|
|
||||||
// payDetailData.setCardType(cardType);
|
|
||||||
// payDetailData.setCardHolderName(mpuCardData.getCardHolderName());
|
|
||||||
// CardInfo cardInfo = new CardInfo();
|
|
||||||
// MAGCardInfo magCardInfo = new MAGCardInfo();
|
|
||||||
// LogUtil.d(TAG,"track 2 : "+mpuCardData.getTrack2());
|
|
||||||
// magCardInfo.setTrack2Cipher(mpuCardData.getTrack2());
|
|
||||||
// cardInfo.setMAGCardInfo(magCardInfo);
|
|
||||||
// payDetailData.setCardInfo(cardInfo);
|
|
||||||
//
|
|
||||||
// payDetail.postValue(payDetailData);
|
|
||||||
//
|
|
||||||
// mainThreadHandler.post(readCardResult::onSuccess);
|
|
||||||
//// readCardResult.onSuccess();
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onCheckCardFail(int code, String message) {
|
|
||||||
//
|
|
||||||
// if(code == -2801) {
|
|
||||||
// mainThreadHandler.post(readCardResult::onCommunicationError);
|
|
||||||
//// readCardResult.onCommunicationError();
|
|
||||||
// } else {
|
|
||||||
// mainThreadHandler.post(() -> readCardResult.onError(code,message));
|
|
||||||
//// readCardResult.onError(code,message);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public SingleLiveEvent<CardReadStatus> startReadProcess(int allType,int timeOutInSec){
|
|
||||||
//
|
|
||||||
// ReadCardProcess.getInstance().startReadCard(allType,"",timeOutInSec,false).onStartReadCardProcess(new CheckCardListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onCheckCardSuccess(int cardType, MPUCardData mpuCardData, CardScheme cardScheme) {
|
|
||||||
// flag.postValue(true);
|
|
||||||
// cardData.postValue(mpuCardData);
|
|
||||||
// cardSchemeData.postValue(cardScheme);
|
|
||||||
// cardTypeData.postValue(cardType);
|
|
||||||
// PayDetail payDetailData = new PayDetail();
|
|
||||||
// payDetailData.setCardNo(mpuCardData.getPan());
|
|
||||||
// payDetailData.setEXPDate(mpuCardData.getExp());
|
|
||||||
// payDetailData.setAccountType(cardScheme.name());
|
|
||||||
// payDetailData.setCardType(cardType);
|
|
||||||
// payDetailData.setCardHolderName(mpuCardData.getCardHolderName());
|
|
||||||
// CardInfo cardInfo = new CardInfo();
|
|
||||||
// MAGCardInfo magCardInfo = new MAGCardInfo();
|
|
||||||
// LogUtil.d(TAG,"track 2 : "+mpuCardData.getTrack2());
|
|
||||||
// magCardInfo.setTrack2Cipher(mpuCardData.getTrack2());
|
|
||||||
// cardInfo.setMAGCardInfo(magCardInfo);
|
|
||||||
// payDetailData.setCardInfo(cardInfo);
|
|
||||||
//
|
|
||||||
// payDetail.postValue(payDetailData);
|
|
||||||
//
|
|
||||||
// readStatus.postValue(CardReadStatus.SUCCESS);
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onCheckCardFail(int code, String message) {
|
|
||||||
//
|
|
||||||
// readStatus.postValue(CardReadStatus.FAIL);
|
|
||||||
// // this action just need to do once because there's too many reason to get fail
|
|
||||||
// if(!oneTimeFlag){
|
|
||||||
// errorCode.postValue(code+":"+message);
|
|
||||||
// flag.postValue(false);
|
|
||||||
// cardSchemeData.postValue(CardScheme.UNK);
|
|
||||||
// oneTimeFlag = true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// return readStatus;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public void resetOneTimeFlag(){
|
public void resetOneTimeFlag(){
|
||||||
oneTimeFlag = false;
|
oneTimeFlag = false;
|
||||||
}
|
}
|
||||||
@ -193,19 +105,5 @@ public class CardReadViewModel extends ViewModel {
|
|||||||
NexGoSDK.getInstance().cancelCheckCard();
|
NexGoSDK.getInstance().cancelCheckCard();
|
||||||
}
|
}
|
||||||
|
|
||||||
// public void checkCard(){
|
|
||||||
// int allType = AidlConstants.CardType.NFC.getValue() | AidlConstants.CardType.IC.getValue() | AidlConstants.CardType.MAGNETIC.getValue();
|
|
||||||
// ReadCardProcess.getInstance().startReadCard(allType,"",60,false).onStartReadCardProcess(new CheckCardListener() {
|
|
||||||
// @Override
|
|
||||||
// public void onCheckCardSuccess(int cardType, MPUCardData mpuCardData, CardScheme cardScheme) {
|
|
||||||
// System.out.println("Success");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onCheckCardFail(int code, String message) {
|
|
||||||
//
|
|
||||||
// System.out.println("Failed");
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -492,9 +492,9 @@ public class EmvTransactionProcessViewModel extends EmvBaseViewModel implements
|
|||||||
private void handleTransactionProcess() {
|
private void handleTransactionProcess() {
|
||||||
|
|
||||||
String cardNo = mPayDetail.getCardNo();
|
String cardNo = mPayDetail.getCardNo();
|
||||||
if (cardNo == null || TextUtils.equals(cardNo, "")) {
|
// if (cardNo == null || TextUtils.equals(cardNo, "")) {
|
||||||
getCardInfo();
|
getCardInfo();
|
||||||
}
|
// }
|
||||||
getPayWaveData();
|
getPayWaveData();
|
||||||
getF055Data();
|
getF055Data();
|
||||||
if(transType.getValue() == TransactionsType.PRE_AUTH_COMPLETE || transType.getValue() == TransactionsType.PRE_AUTH_VOID || transType.getValue() == TransactionsType.REFUND ) {
|
if(transType.getValue() == TransactionsType.PRE_AUTH_COMPLETE || transType.getValue() == TransactionsType.PRE_AUTH_VOID || transType.getValue() == TransactionsType.REFUND ) {
|
||||||
|
|||||||
@ -36,6 +36,7 @@ import com.utsmyanmar.paylibs.model.TradeData;
|
|||||||
import com.utsmyanmar.paylibs.system.SingleLiveEvent;
|
import com.utsmyanmar.paylibs.system.SingleLiveEvent;
|
||||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||||
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsSettings;
|
||||||
|
|
||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -52,7 +53,11 @@ public class KPayViewModel extends ViewModel {
|
|||||||
|
|
||||||
private final Repository repository;
|
private final Repository repository;
|
||||||
|
|
||||||
private final String appKey = "UTSMMuat@2025";
|
private final String appKey = SystemParamsOperation.getInstance().getAppKey();
|
||||||
|
// private final String appKey = "UTSMMuat@2025";
|
||||||
|
|
||||||
|
private final String appId = SystemParamsOperation.getInstance().getAppId();
|
||||||
|
// private final String appId = "kp9b0794b349ae85b00c51e0677484c7";
|
||||||
|
|
||||||
private final ExecutorService executor = Executors.newSingleThreadExecutor();
|
private final ExecutorService executor = Executors.newSingleThreadExecutor();
|
||||||
private final Handler mainHandler = new Handler(Looper.getMainLooper());
|
private final Handler mainHandler = new Handler(Looper.getMainLooper());
|
||||||
@ -114,7 +119,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
bizContent.put("refund_request_no", refundOrderId);
|
bizContent.put("refund_request_no", refundOrderId);
|
||||||
bizContent.put("merch_order_id", origOrderId);
|
bizContent.put("merch_order_id", origOrderId);
|
||||||
bizContent.put("merch_code", mid);
|
bizContent.put("merch_code", mid);
|
||||||
bizContent.put("appid", "kp9b0794b349ae85b00c51e0677484c7");
|
bizContent.put("appid", appId);
|
||||||
if(!refundAmount.equals("0")) {
|
if(!refundAmount.equals("0")) {
|
||||||
bizContent.put("refund_amount", refundAmount);
|
bizContent.put("refund_amount", refundAmount);
|
||||||
}
|
}
|
||||||
@ -138,7 +143,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
|
|
||||||
KPayRefund.RefundRequest.RequestBody.BizContent biz =
|
KPayRefund.RefundRequest.RequestBody.BizContent biz =
|
||||||
new KPayRefund.RefundRequest.RequestBody.BizContent(
|
new KPayRefund.RefundRequest.RequestBody.BizContent(
|
||||||
"kp9b0794b349ae85b00c51e0677484c7",
|
appId,
|
||||||
mid,
|
mid,
|
||||||
origOrderId,
|
origOrderId,
|
||||||
refundAmount, // This can be null for original refunds
|
refundAmount, // This can be null for original refunds
|
||||||
@ -160,7 +165,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
} else {
|
} else {
|
||||||
KPayRefund.RefundRequest.RequestBody.BizContent biz =
|
KPayRefund.RefundRequest.RequestBody.BizContent biz =
|
||||||
new KPayRefund.RefundRequest.RequestBody.BizContent(
|
new KPayRefund.RefundRequest.RequestBody.BizContent(
|
||||||
"kp9b0794b349ae85b00c51e0677484c7",
|
appId,
|
||||||
mid,
|
mid,
|
||||||
origOrderId,
|
origOrderId,
|
||||||
refundOrderId,
|
refundOrderId,
|
||||||
@ -195,7 +200,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
Map<String, Object> bizContent = new HashMap<>();
|
Map<String, Object> bizContent = new HashMap<>();
|
||||||
bizContent.put("merch_order_id", merchOrderId);
|
bizContent.put("merch_order_id", merchOrderId);
|
||||||
bizContent.put("merch_code", mid);
|
bizContent.put("merch_code", mid);
|
||||||
bizContent.put("appid", "kp9b0794b349ae85b00c51e0677484c7");
|
bizContent.put("appid", appId);
|
||||||
bizContent.put("trade_type", "PAY_BY_QRCODE");
|
bizContent.put("trade_type", "PAY_BY_QRCODE");
|
||||||
bizContent.put("total_amount", amount);
|
bizContent.put("total_amount", amount);
|
||||||
bizContent.put("title", "testing");
|
bizContent.put("title", "testing");
|
||||||
@ -216,7 +221,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
String sign = Sign.INSTANCE.generateSign(requestMap, appKey);
|
String sign = Sign.INSTANCE.generateSign(requestMap, appKey);
|
||||||
|
|
||||||
KPayQRRequest.QrRequest.RequestBody.BizContent biz = new KPayQRRequest.QrRequest.RequestBody.BizContent(
|
KPayQRRequest.QrRequest.RequestBody.BizContent biz = new KPayQRRequest.QrRequest.RequestBody.BizContent(
|
||||||
"kp9b0794b349ae85b00c51e0677484c7",
|
appId,
|
||||||
mid,
|
mid,
|
||||||
merchOrderId,
|
merchOrderId,
|
||||||
"PAY_BY_QRCODE",
|
"PAY_BY_QRCODE",
|
||||||
@ -252,7 +257,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
Map<String, Object> bizContentMap = new HashMap<>();
|
Map<String, Object> bizContentMap = new HashMap<>();
|
||||||
bizContentMap.put("merch_order_id", merchOrderId);
|
bizContentMap.put("merch_order_id", merchOrderId);
|
||||||
bizContentMap.put("merch_code", mid);
|
bizContentMap.put("merch_code", mid);
|
||||||
bizContentMap.put("appid", "kp9b0794b349ae85b00c51e0677484c7");
|
bizContentMap.put("appid", appId);
|
||||||
|
|
||||||
Map<String, Object> requestMap = new HashMap<>();
|
Map<String, Object> requestMap = new HashMap<>();
|
||||||
requestMap.put("timestamp", currentTime);
|
requestMap.put("timestamp", currentTime);
|
||||||
@ -264,7 +269,7 @@ public class KPayViewModel extends ViewModel {
|
|||||||
String sign = Sign.INSTANCE.generateSign(requestMap, appKey);
|
String sign = Sign.INSTANCE.generateSign(requestMap, appKey);
|
||||||
|
|
||||||
KPayQRQueryRequest.QRQueryRequest.Request.BizContent bizContent = new KPayQRQueryRequest.QRQueryRequest.Request.BizContent(
|
KPayQRQueryRequest.QRQueryRequest.Request.BizContent bizContent = new KPayQRQueryRequest.QRQueryRequest.Request.BizContent(
|
||||||
"kp9b0794b349ae85b00c51e0677484c7",
|
appId,
|
||||||
mid,
|
mid,
|
||||||
merchOrderId
|
merchOrderId
|
||||||
);
|
);
|
||||||
|
|||||||
@ -119,7 +119,12 @@ public class PinPadViewModel extends ViewModel {
|
|||||||
case ON_CONFIRM_CLICK:
|
case ON_CONFIRM_CLICK:
|
||||||
LogUtil.d(TAG, "ON CLICK CONFIRM");
|
LogUtil.d(TAG, "ON CLICK CONFIRM");
|
||||||
// increasedKSN();
|
// increasedKSN();
|
||||||
pinStatus.postValue(PinPadStatus.ON_CONFIRM);
|
if(transType.getValue() == TransactionsType.PRE_AUTH_COMPLETE || transType.getValue() == TransactionsType.PRE_AUTH_VOID || transType.getValue() == TransactionsType.REFUND ) {
|
||||||
|
pinStatus.postValue(PinPadStatus.ON_NEXT_SCREEN);
|
||||||
|
} else {
|
||||||
|
pinStatus.postValue(PinPadStatus.ON_CONFIRM);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ON_CANCEL_CLICK:
|
case ON_CANCEL_CLICK:
|
||||||
LogUtil.d(TAG, "ON CLICK CANCEL");
|
LogUtil.d(TAG, "ON CLICK CANCEL");
|
||||||
|
|||||||
@ -8,6 +8,9 @@ import com.utsmyanmar.paylibs.model.PayDetail;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel;
|
||||||
|
|
||||||
|
@HiltViewModel
|
||||||
public class PreAuthVoidViewModel extends ViewModel {
|
public class PreAuthVoidViewModel extends ViewModel {
|
||||||
|
|
||||||
private Repository repository;
|
private Repository repository;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.utsmm.kbz.util;
|
package com.utsmm.kbz.util;
|
||||||
|
|
||||||
import com.sunmi.pay.hardware.aidlv2.AidlConstantsV2;
|
import com.sunmi.pay.hardware.aidlv2.AidlConstantsV2;
|
||||||
|
import com.utsmyanmar.checkxread.model.CardDataX;
|
||||||
import com.utsmyanmar.paylibs.model.CardInfo;
|
import com.utsmyanmar.paylibs.model.CardInfo;
|
||||||
import com.utsmyanmar.paylibs.model.ICCardInfo;
|
import com.utsmyanmar.paylibs.model.ICCardInfo;
|
||||||
import com.utsmyanmar.paylibs.model.MAGCardInfo;
|
import com.utsmyanmar.paylibs.model.MAGCardInfo;
|
||||||
@ -44,13 +45,29 @@ public class MockData {
|
|||||||
// .iccData("5F21BLAHBLAH")
|
// .iccData("5F21BLAHBLAH")
|
||||||
// .build();
|
// .build();
|
||||||
|
|
||||||
|
// mockCardData = new MockCardData.Builder()
|
||||||
|
// .cardNo("9503051034047056")
|
||||||
|
// .expDate("0230")
|
||||||
|
// .cardScheme("MPU")
|
||||||
|
// .cardHolderName("KBZ Debit")
|
||||||
|
// .iccData("9503051034047056=30021015930000000000")
|
||||||
|
// .build();
|
||||||
mockCardData = new MockCardData.Builder()
|
mockCardData = new MockCardData.Builder()
|
||||||
.cardNo("9503190006079422")
|
.cardNo("9505050161133125")
|
||||||
.expDate("0725")
|
.expDate("0127")
|
||||||
.cardScheme("MPU")
|
.cardScheme("MPU")
|
||||||
.cardHolderName("YOMA VALUED CUSTOMER")
|
.cardHolderName("KBZ Credit")
|
||||||
|
.iccData("9505050161133125=27011017250000000000")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
// mockCardData = new MockCardData.Builder()
|
||||||
|
// .cardNo("9503742975107251")
|
||||||
|
// .expDate("0629")
|
||||||
|
// .cardScheme("MPU")
|
||||||
|
// .cardHolderName("Bank Q")
|
||||||
|
// .iccData("9503742975107251=22081010000000000000")
|
||||||
|
// .build();
|
||||||
|
|
||||||
// mockCardData = new MockCardData.Builder()
|
// mockCardData = new MockCardData.Builder()
|
||||||
// .phoneNo("9794452506")
|
// .phoneNo("9794452506")
|
||||||
// .expDate("0425")
|
// .expDate("0425")
|
||||||
@ -74,6 +91,15 @@ public class MockData {
|
|||||||
return String.valueOf(randomNumber);
|
return String.valueOf(randomNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CardDataX generateMPUCard() {
|
||||||
|
CardDataX cardDataX = new CardDataX();
|
||||||
|
cardDataX.setPan(mockCardData.getCardNo());
|
||||||
|
cardDataX.setExp(mockCardData.getExpDate());
|
||||||
|
cardDataX.setCardHolderName(mockCardData.getCardHolderName());
|
||||||
|
cardDataX.setTrack2(mockCardData.getIccData());
|
||||||
|
return cardDataX;
|
||||||
|
}
|
||||||
|
|
||||||
public TradeData generateMockDataWithTime(TransactionsType transType,int cardInputType,String transDate,String transTime) {
|
public TradeData generateMockDataWithTime(TransactionsType transType,int cardInputType,String transDate,String transTime) {
|
||||||
String strDate = SystemDateTime.getMMDD();
|
String strDate = SystemDateTime.getMMDD();
|
||||||
String strTime = SystemDateTime.getHHmmss();
|
String strTime = SystemDateTime.getHHmmss();
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import com.utsmyanmar.baselib.network.model.sirius.SiriusMerchant;
|
|||||||
import com.utsmyanmar.baselib.network.model.sirius.SiriusProperty;
|
import com.utsmyanmar.baselib.network.model.sirius.SiriusProperty;
|
||||||
import com.utsmyanmar.baselib.network.model.sirius.SiriusResponse;
|
import com.utsmyanmar.baselib.network.model.sirius.SiriusResponse;
|
||||||
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsOperation;
|
||||||
|
import com.utsmyanmar.paylibs.utils.core_utils.SystemParamsSettings;
|
||||||
import com.utsmyanmar.paylibs.utils.enums.CurrencyType;
|
import com.utsmyanmar.paylibs.utils.enums.CurrencyType;
|
||||||
|
|
||||||
import com.utsmm.kbz.BuildConfig;
|
import com.utsmm.kbz.BuildConfig;
|
||||||
@ -412,15 +413,15 @@ public class TMSSetupsImpl implements TMSSetups{
|
|||||||
} else if (TextUtils.equals(name,"ssl_enable")) {
|
} else if (TextUtils.equals(name,"ssl_enable")) {
|
||||||
|
|
||||||
SystemParamsOperation.getInstance().setSslSwitchStatus(parseBoolean(data));
|
SystemParamsOperation.getInstance().setSslSwitchStatus(parseBoolean(data));
|
||||||
} else if (TextUtils.equals(name,"wave_pay_inquiry_status_enable")) {
|
} else if (TextUtils.equals(name,"qrpay_inquiry_status_enable")) {
|
||||||
|
|
||||||
SystemParamsOperation.getInstance().setWavePayInquiryStatus(parseBoolean(data));
|
SystemParamsOperation.getInstance().setQRPayInquiryStatus(parseBoolean(data));
|
||||||
} else if (TextUtils.equals(name,"tips_adjustment_enable")) {
|
} else if (TextUtils.equals(name,"tips_adjustment_enable")) {
|
||||||
|
|
||||||
SystemParamsOperation.getInstance().setTipsAdjustmentStatus(parseBoolean(data));
|
SystemParamsOperation.getInstance().setTipsAdjustmentStatus(parseBoolean(data));
|
||||||
} else if (TextUtils.equals(name,"wave_enable")) {
|
} else if (TextUtils.equals(name,"qrpay_enable")) {
|
||||||
|
|
||||||
SystemParamsOperation.getInstance().setWavePayStatus(parseBoolean(data));
|
SystemParamsOperation.getInstance().setQRPayStatus(parseBoolean(data));
|
||||||
} else if (TextUtils.equals(name,"print_iso_enable")) {
|
} else if (TextUtils.equals(name,"print_iso_enable")) {
|
||||||
|
|
||||||
SystemParamsOperation.getInstance().setPrintISOStatus(parseBoolean(data));
|
SystemParamsOperation.getInstance().setPrintISOStatus(parseBoolean(data));
|
||||||
@ -582,11 +583,14 @@ public class TMSSetupsImpl implements TMSSetups{
|
|||||||
}
|
}
|
||||||
} else if (TextUtils.equals(name,"speedup_contactless_enable")) {
|
} else if (TextUtils.equals(name,"speedup_contactless_enable")) {
|
||||||
SystemParamsOperation.getInstance().setSpeedUpContactless(parseBoolean(data));
|
SystemParamsOperation.getInstance().setSpeedUpContactless(parseBoolean(data));
|
||||||
}
|
} else if (TextUtils.equals(name,"manual_entry_pin_enable")) {
|
||||||
else if (TextUtils.equals(name,"manual_entry_pin_enable")) {
|
|
||||||
SystemParamsOperation.getInstance().setManualEntryPinEnable(parseBoolean(data));
|
SystemParamsOperation.getInstance().setManualEntryPinEnable(parseBoolean(data));
|
||||||
} else if (TextUtils.equals(name,"decimal_enable")) {
|
} else if (TextUtils.equals(name,"decimal_enable")) {
|
||||||
SystemParamsOperation.getInstance().setDecimalEnable(parseBoolean(data));
|
SystemParamsOperation.getInstance().setDecimalEnable(parseBoolean(data));
|
||||||
|
} else if (TextUtils.equals(name,"app_key")) {
|
||||||
|
SystemParamsOperation.getInstance().setAppKey(data);
|
||||||
|
} else if (TextUtils.equals(name,"app_id")) {
|
||||||
|
SystemParamsOperation.getInstance().setAppId(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -206,7 +206,7 @@ public class TMSUtil {
|
|||||||
voidStatus = SystemParamsOperation.getInstance().getVoidStatus();
|
voidStatus = SystemParamsOperation.getInstance().getVoidStatus();
|
||||||
cashAdvanceStatus = SystemParamsOperation.getInstance().getCashAdvanceStatus();
|
cashAdvanceStatus = SystemParamsOperation.getInstance().getCashAdvanceStatus();
|
||||||
refundStatus = SystemParamsOperation.getInstance().getRefundStatus();
|
refundStatus = SystemParamsOperation.getInstance().getRefundStatus();
|
||||||
wavePayInquiryStatus = SystemParamsOperation.getInstance().getWavePayInquiryStatus();
|
wavePayInquiryStatus = SystemParamsOperation.getInstance().getQRPayInquiryStatus();
|
||||||
tipAdjustmentStatus = SystemParamsOperation.getInstance().getTipsAdjustmentStatus();
|
tipAdjustmentStatus = SystemParamsOperation.getInstance().getTipsAdjustmentStatus();
|
||||||
settlementStatus = SystemParamsOperation.getInstance().getSettlementStatus();
|
settlementStatus = SystemParamsOperation.getInstance().getSettlementStatus();
|
||||||
|
|
||||||
|
|||||||
@ -149,6 +149,7 @@
|
|||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
app:cardCornerRadius="12dp"
|
app:cardCornerRadius="12dp"
|
||||||
app:cardElevation="2dp"
|
app:cardElevation="2dp"
|
||||||
|
android:onClick="@{()->click.onClickTap()}"
|
||||||
android:backgroundTint="#fff"
|
android:backgroundTint="#fff"
|
||||||
android:foreground="?android:attr/selectableItemBackground"
|
android:foreground="?android:attr/selectableItemBackground"
|
||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
|
|||||||
@ -186,6 +186,12 @@
|
|||||||
app:popUpToInclusive="true"
|
app:popUpToInclusive="true"
|
||||||
android:id="@+id/action_cardWaitingFragment_to_nav_main"
|
android:id="@+id/action_cardWaitingFragment_to_nav_main"
|
||||||
app:destination="@id/nav_main" />
|
app:destination="@id/nav_main" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_cardWaitingFragment_to_pinPadFragment"
|
||||||
|
app:launchSingleTop="true"
|
||||||
|
app:popUpTo="@+id/cardWaitingFragment"
|
||||||
|
app:popUpToInclusive="true"
|
||||||
|
app:destination="@id/pinPadFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
tools:layout="@layout/fragment_emv_input_pin"
|
tools:layout="@layout/fragment_emv_input_pin"
|
||||||
|
|||||||
@ -564,6 +564,8 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
|
|||||||
mHandler.obtainMessage(PIN_TIME_OUT,-7009).sendToTarget();
|
mHandler.obtainMessage(PIN_TIME_OUT,-7009).sendToTarget();
|
||||||
} else if (retCode == SdkResult.PinPad_No_Pin_Input) {
|
} else if (retCode == SdkResult.PinPad_No_Pin_Input) {
|
||||||
mHandler.obtainMessage(PIN_CLICK_CONFIRM).sendToTarget();
|
mHandler.obtainMessage(PIN_CLICK_CONFIRM).sendToTarget();
|
||||||
|
} else {
|
||||||
|
mHandler.obtainMessage(PIN_ERROR).sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
LogUtil.d(TAG, "RetCode:" + retCode);
|
LogUtil.d(TAG, "RetCode:" + retCode);
|
||||||
@ -631,24 +633,6 @@ public abstract class EmvBaseViewModel extends BaseViewModel {
|
|||||||
++pinEnterCount;
|
++pinEnterCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void keyMap(String str, PinPadDataV2 data) {
|
|
||||||
data.keyMap = new byte[64];
|
|
||||||
for (int i = 0, j = 0; i < 15; i++, j++) {
|
|
||||||
if (i == 9 || i == 12) { // || i == 12
|
|
||||||
data.keyMap[i] = 0x1B;//cancel
|
|
||||||
j--;
|
|
||||||
} else if (i == 13) { //10
|
|
||||||
data.keyMap[i] = 0x0C;//clear
|
|
||||||
j--;
|
|
||||||
} else if (i == 11 || i == 14) { // || i == 14
|
|
||||||
data.keyMap[i] = 0x0D;//confirm
|
|
||||||
j--;
|
|
||||||
} else {
|
|
||||||
data.keyMap[i] = (byte) str.charAt(j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private OnEmvProcessListener2 emvProcessListener = new OnEmvProcessListener2() {
|
private OnEmvProcessListener2 emvProcessListener = new OnEmvProcessListener2() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -8,8 +8,7 @@
|
|||||||
# The setting is particularly useful for tweaking memory settings.
|
# The setting is particularly useful for tweaking memory settings.
|
||||||
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -Dfile.encoding=UTF-8
|
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m -Dfile.encoding=UTF-8
|
||||||
# Force Gradle to use system Java instead of Android Studio's JBR
|
# Force Gradle to use system Java instead of Android Studio's JBR
|
||||||
#org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
|
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
|
||||||
org.gradle.java.home=C:\\Program Files\\Microsoft\\jdk-17.0.16.8-hotspot
|
|
||||||
|
|
||||||
# Enable parallel builds and configure cache
|
# Enable parallel builds and configure cache
|
||||||
org.gradle.parallel=true
|
org.gradle.parallel=true
|
||||||
|
|||||||
@ -17,7 +17,8 @@ public abstract class BaseISOMsgX {
|
|||||||
|
|
||||||
byte[] newSendBytes = EncodePackage.assembly(map, msgIdentifier, 0, "0000000000",hostName);
|
byte[] newSendBytes = EncodePackage.assembly(map, msgIdentifier, 0, "0000000000",hostName);
|
||||||
|
|
||||||
String BPCTPDU = "6005150000";
|
// String BPCTPDU = "6005150000"; //UAT
|
||||||
|
String BPCTPDU = "6005170000"; //PrePro
|
||||||
|
|
||||||
if(isoMode == ISOMode.BOTH_HEADER_TPDU) {
|
if(isoMode == ISOMode.BOTH_HEADER_TPDU) {
|
||||||
byte[] outBytes = new byte[newSendBytes.length - 6 ];
|
byte[] outBytes = new byte[newSendBytes.length - 6 ];
|
||||||
|
|||||||
@ -12,27 +12,29 @@ import com.utsmyanmar.paylibs.model.MAGCardInfo;
|
|||||||
import com.utsmyanmar.paylibs.model.PayDetail;
|
import com.utsmyanmar.paylibs.model.PayDetail;
|
||||||
import com.utsmyanmar.paylibs.model.TradeData;
|
import com.utsmyanmar.paylibs.model.TradeData;
|
||||||
import com.utsmyanmar.paylibs.utils.CardSchemeUtils;
|
import com.utsmyanmar.paylibs.utils.CardSchemeUtils;
|
||||||
|
import com.utsmyanmar.paylibs.utils.LogUtil;
|
||||||
import com.utsmyanmar.paylibs.utils.TLV;
|
import com.utsmyanmar.paylibs.utils.TLV;
|
||||||
import com.utsmyanmar.paylibs.utils.enums.CardScheme;
|
import com.utsmyanmar.paylibs.utils.enums.CardScheme;
|
||||||
|
|
||||||
|
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.utsmyanmar.paylibs.utils.LogUtil;
|
|
||||||
|
|
||||||
public class KernelDataProcessUtil {
|
public class KernelDataProcessUtil {
|
||||||
|
|
||||||
private static final String TAG = KernelDataProcessUtil.class.getSimpleName();
|
private static final String TAG = KernelDataProcessUtil.class.getSimpleName();
|
||||||
|
|
||||||
private static CardScheme cardScheme;
|
private static CardScheme cardScheme;
|
||||||
|
|
||||||
public static com.sunmi.pay.hardware.aidl.bean.CardInfo getCardInfo(int cardType, byte[] data) {
|
public static com.sunmi.pay.hardware.aidl.bean.CardInfo getCardInfo(int cardType, byte[] data) {
|
||||||
Map<String, TLV> tlvMap = TLVUtil.buildTLVMap(data);
|
Map<String, TLV> tlvMap = TLVUtil.buildTLVMap(data);
|
||||||
com.sunmi.pay.hardware.aidl.bean.CardInfo cardInfo = new com.sunmi.pay.hardware.aidl.bean.CardInfo();
|
com.sunmi.pay.hardware.aidl.bean.CardInfo cardInfo = new com.sunmi.pay.hardware.aidl.bean.CardInfo();
|
||||||
|
|
||||||
LogUtil.d(TAG,"EMV Track data : "+ByteUtil.bytes2HexStr(data));
|
LogUtil.d(TAG, "EMV Track data : " + ByteUtil.bytes2HexStr(data));
|
||||||
|
|
||||||
// Two magnetic
|
// Two magnetic
|
||||||
TLV tlv = tlvMap.get("57");
|
TLV tlv = tlvMap.get("57");
|
||||||
@ -40,10 +42,10 @@ public class KernelDataProcessUtil {
|
|||||||
String value = tlv.getValue().toUpperCase();
|
String value = tlv.getValue().toUpperCase();
|
||||||
cardInfo = Track2Util.parseTrack2(value);
|
cardInfo = Track2Util.parseTrack2(value);
|
||||||
// cardInfo.track2=value;
|
// cardInfo.track2=value;
|
||||||
LogUtil.d(TAG,"57 track:"+value);
|
LogUtil.d(TAG, "57 track:" + value);
|
||||||
cardInfo.track2 = value.replaceAll("F", ""); // Edited "0" with "" 20,Nov,2024
|
cardInfo.track2 = value.replaceAll("F", ""); // Edited "0" with "" 20,Nov,2024
|
||||||
|
|
||||||
LogUtil.d(TAG,"57 track:"+cardInfo.track2);
|
LogUtil.d(TAG, "57 track:" + cardInfo.track2);
|
||||||
}
|
}
|
||||||
// IC card obtains the card number and expiration date through 5A and 5F24
|
// IC card obtains the card number and expiration date through 5A and 5F24
|
||||||
if (AidlConstants.CardType.IC.getValue() == cardType) {
|
if (AidlConstants.CardType.IC.getValue() == cardType) {
|
||||||
@ -67,7 +69,7 @@ public class KernelDataProcessUtil {
|
|||||||
}
|
}
|
||||||
LogUtil.d(Constant.TAG, "The card is valid for:" + value);
|
LogUtil.d(Constant.TAG, "The card is valid for:" + value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Card serial number
|
// Card serial number
|
||||||
@ -94,7 +96,7 @@ public class KernelDataProcessUtil {
|
|||||||
cardInfo = Track2Util.parseTrack2(value);
|
cardInfo = Track2Util.parseTrack2(value);
|
||||||
cardInfo.track2 = value.replaceAll("F", "0"); // edited " " with "0"
|
cardInfo.track2 = value.replaceAll("F", "0"); // edited " " with "0"
|
||||||
|
|
||||||
LogUtil.d(TAG,"9F6B track:"+cardInfo.track2);
|
LogUtil.d(TAG, "9F6B track:" + cardInfo.track2);
|
||||||
}
|
}
|
||||||
|
|
||||||
cardInfo.cardType = cardType;
|
cardInfo.cardType = cardType;
|
||||||
@ -102,6 +104,7 @@ public class KernelDataProcessUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static TradeData fillTradeDataInfo(com.sunmi.pay.hardware.aidl.bean.CardInfo cardInfo, TradeData tradeData) {
|
public static TradeData fillTradeDataInfo(com.sunmi.pay.hardware.aidl.bean.CardInfo cardInfo, TradeData tradeData) {
|
||||||
|
|
||||||
PayDetail payDetail = tradeData.getPayDetail();
|
PayDetail payDetail = tradeData.getPayDetail();
|
||||||
if (cardInfo.expireDate != null && cardInfo.expireDate.length() > 4) {
|
if (cardInfo.expireDate != null && cardInfo.expireDate.length() > 4) {
|
||||||
cardInfo.expireDate = cardInfo.expireDate.substring(0, 4);
|
cardInfo.expireDate = cardInfo.expireDate.substring(0, 4);
|
||||||
@ -125,7 +128,11 @@ public class KernelDataProcessUtil {
|
|||||||
if (track2 != null && track2.length() > 0) {
|
if (track2 != null && track2.length() > 0) {
|
||||||
magCardInfo.setTrack2(track2);
|
magCardInfo.setTrack2(track2);
|
||||||
String track2Encrypt = TrackEncrypt.trackEncrypt(track2);
|
String track2Encrypt = TrackEncrypt.trackEncrypt(track2);
|
||||||
track2Encrypt = track2Encrypt.replace("=","D");
|
// /*
|
||||||
|
// * comment this line cuz mastercard network validation is getting failure
|
||||||
|
// * */
|
||||||
|
track2Encrypt = track2Encrypt.replace("=", "D");
|
||||||
|
|
||||||
|
|
||||||
magCardInfo.setTrack2Cipher(track2Encrypt);
|
magCardInfo.setTrack2Cipher(track2Encrypt);
|
||||||
}
|
}
|
||||||
@ -231,7 +238,7 @@ public class KernelDataProcessUtil {
|
|||||||
// if(value.equals("554E494F4E504159204445424954")){
|
// if(value.equals("554E494F4E504159204445424954")){
|
||||||
// payDetail.setCardHolderName("UNIONPAY");
|
// payDetail.setCardHolderName("UNIONPAY");
|
||||||
// }else{
|
// }else{
|
||||||
LogUtil.d(TAG,"App Label 50 : "+Utils.hexStr2AsciiStr(value));
|
LogUtil.d(TAG, "App Label 50 : " + Utils.hexStr2AsciiStr(value));
|
||||||
|
|
||||||
icCardInfo.setAppLabel(Utils.hexStr2AsciiStr(value));
|
icCardInfo.setAppLabel(Utils.hexStr2AsciiStr(value));
|
||||||
payDetail.setAppLabel(Utils.hexStr2AsciiStr(value));
|
payDetail.setAppLabel(Utils.hexStr2AsciiStr(value));
|
||||||
@ -246,7 +253,7 @@ public class KernelDataProcessUtil {
|
|||||||
String value = tlv.getValue();
|
String value = tlv.getValue();
|
||||||
icCardInfo.setAppName(value);
|
icCardInfo.setAppName(value);
|
||||||
payDetail.setAppName(value);
|
payDetail.setAppName(value);
|
||||||
LogUtil.d(TAG,"App Name : "+value);
|
LogUtil.d(TAG, "App Name : " + value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TVR Terminal verification result
|
// TVR Terminal verification result
|
||||||
@ -530,14 +537,22 @@ public class KernelDataProcessUtil {
|
|||||||
// Cardholder verification method result CVM
|
// Cardholder verification method result CVM
|
||||||
if (tlvMap.get("9F34") != null) {
|
if (tlvMap.get("9F34") != null) {
|
||||||
f55DataStr += "9F3403" + tlvMap.get("9F34").getValue();
|
f55DataStr += "9F3403" + tlvMap.get("9F34").getValue();
|
||||||
if(tlvMap.get("9F34").getValue() != null && !tlvMap.get("9F34").getValue().isEmpty()) {
|
if (tlvMap.get("9F34").getValue() != null && !tlvMap.get("9F34").getValue().isEmpty()) {
|
||||||
f55WaveDataStr += "9F3403" + tlvMap.get("9F34").getValue();
|
f55WaveDataStr += "9F3403" + tlvMap.get("9F34").getValue();
|
||||||
}
|
}
|
||||||
// f55WaveDataStr += "9F3403020200" ;
|
// f55WaveDataStr += "9F3403020200" ;
|
||||||
}
|
}
|
||||||
// f55DataStr += "9F34031F0302";
|
// f55DataStr += "9F34031F0302";
|
||||||
|
// TSI Transaction status information
|
||||||
|
if (tlvMap.get("9B") != null && !tlvMap.get("9B").getValue().isEmpty()) {
|
||||||
|
|
||||||
|
|
||||||
|
f55DataStr += "9B02" + tlvMap.get("9B").getValue();
|
||||||
|
f55WaveDataStr += "9B02" + tlvMap.get("9B").getValue();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// terminal type
|
// terminal type
|
||||||
if (tlvMap.get("9F35") != null) {
|
if (tlvMap.get("9F35") != null) {
|
||||||
f55DataStr += "9F3501" + tlvMap.get("9F35").getValue();
|
f55DataStr += "9F3501" + tlvMap.get("9F35").getValue();
|
||||||
@ -563,8 +578,8 @@ public class KernelDataProcessUtil {
|
|||||||
// need to keeps or not?
|
// need to keeps or not?
|
||||||
if (tlvMap.get("9F41") != null) {
|
if (tlvMap.get("9F41") != null) {
|
||||||
int length = tlvMap.get("9F41").getLength();
|
int length = tlvMap.get("9F41").getLength();
|
||||||
f55DataStr += "9F41" + String.format("%02d", length-1) + tlvMap.get("9F41").getValue().substring(2,8);
|
f55DataStr += "9F41" + String.format("%02d", length - 1) + tlvMap.get("9F41").getValue().substring(2, 8);
|
||||||
f55WaveDataStr += "9F41" + String.format("%02d", length-1) + tlvMap.get("9F41").getValue().substring(2,8);
|
f55WaveDataStr += "9F41" + String.format("%02d", length - 1) + tlvMap.get("9F41").getValue().substring(2, 8);
|
||||||
} else {
|
} else {
|
||||||
String batchNumStart = SystemParamsOperation.getInstance().getSystemParamsSettings().getBatchNumStart();
|
String batchNumStart = SystemParamsOperation.getInstance().getSystemParamsSettings().getBatchNumStart();
|
||||||
try {
|
try {
|
||||||
@ -576,29 +591,16 @@ public class KernelDataProcessUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if (tlvMap.get("4F") != null) {
|
|
||||||
tlv = tlvMap.get("4F");
|
|
||||||
String value = tlv.getValue();
|
|
||||||
int length = tlv.getLength();
|
|
||||||
String len = getHexLen(length);
|
|
||||||
f55DataStr += "4F" + len + value;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tlvMap.get("9F08") != null) {
|
|
||||||
tlv = tlvMap.get("9F08");
|
|
||||||
String value = tlv.getValue();
|
|
||||||
int length = tlv.getLength();
|
|
||||||
String len = getHexLen(length);
|
|
||||||
f55DataStr += "9F08" + len + value;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* merchant category code
|
* merchant category code
|
||||||
* */
|
* */
|
||||||
// disabled at 18/ July 2025
|
if (tlvMap.get("9F53") != null) {
|
||||||
// if(tlvMap.get("9F53") !=null){
|
f55DataStr += "9F5301" + tlvMap.get("9F53").getValue();
|
||||||
// f55DataStr += "9F5301"+ tlvMap.get("9F53").getValue();
|
} else {
|
||||||
// }
|
f55DataStr += "9F530150";
|
||||||
|
}
|
||||||
|
|
||||||
// else{
|
// else{
|
||||||
//// f55DataStr += "9F530152";
|
//// f55DataStr += "9F530152";
|
||||||
@ -659,53 +661,62 @@ public class KernelDataProcessUtil {
|
|||||||
if (cardType == AidlConstants.CardType.IC.getValue()) {
|
if (cardType == AidlConstants.CardType.IC.getValue()) {
|
||||||
icCardInfo.setICC55(f55DataStr);
|
icCardInfo.setICC55(f55DataStr);
|
||||||
payDetail.setICC55(f55DataStr);
|
payDetail.setICC55(f55DataStr);
|
||||||
LogUtil.d(TAG,"DE55 IC: "+f55DataStr);
|
LogUtil.d(TAG, "DE55 IC: " + f55DataStr);
|
||||||
} else {
|
} else {
|
||||||
String[] tagList = {
|
String[] tagList = {
|
||||||
"9F6E"
|
"9F6E"
|
||||||
};
|
};
|
||||||
|
|
||||||
String hexStr = "";
|
String hexStr = "";
|
||||||
byte[] dataOut = new byte[1024];
|
|
||||||
|
|
||||||
try {
|
if (tlvMap.get("9F6E") != null) {
|
||||||
int len = PayLibsUtils.getInstance().emvOptV2.getTlvList(AidlConstantsV2.EMV.TLVOpCode.OP_PAYWAVE, tagList, dataOut);
|
int length = tlvMap.get("9F6E").getLength();
|
||||||
if (len > 0) {
|
String len = getHexLen(length);
|
||||||
byte[] dataOutBytes = Arrays.copyOf(dataOut, len);
|
f55WaveDataStr += "9F6E" + len + tlvMap.get("9F6E").getValue();
|
||||||
hexStr = ByteUtil.bytes2HexStr(dataOutBytes);
|
|
||||||
LogUtil.d(TAG, "get 9F6E Data :" + hexStr);
|
|
||||||
Map<String, TLV> map = TLVUtil.buildTLVMap(hexStr);
|
|
||||||
LogUtil.d(TAG, "get 9F6E Data :" + map);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
LogUtil.e(TAG, "Get the data length of payWave is negative = " + len);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hexStr.equals("9F6E00")) {
|
LogUtil.d(TAG,"9F6E data :"+hexStr);
|
||||||
try {
|
// byte[] dataOut = new byte[1024];
|
||||||
int len = PayLibsUtils.getInstance().emvOptV2.getTlvList(AidlConstantsV2.EMV.TLVOpCode.OP_PAYPASS, tagList, dataOut);
|
//
|
||||||
if (len > 0) {
|
// try {
|
||||||
byte[] dataOutBytes = Arrays.copyOf(dataOut, len);
|
// int len = PayLibsUtils.getInstance().emvOptV2.getTlvList(AidlConstantsV2.EMV.TLVOpCode.OP_PAYWAVE, tagList, dataOut);
|
||||||
hexStr = ByteUtil.bytes2HexStr(dataOutBytes);
|
// if (len > 0) {
|
||||||
LogUtil.d(TAG, "get 9F6E Data :" + hexStr);
|
// byte[] dataOutBytes = Arrays.copyOf(dataOut, len);
|
||||||
Map<String, TLV> map = TLVUtil.buildTLVMap(hexStr);
|
// hexStr = ByteUtil.bytes2HexStr(dataOutBytes);
|
||||||
LogUtil.d(TAG, "get 9F6E Data :" + map);
|
// LogUtil.d(TAG, "get 9F6E Data :" + hexStr);
|
||||||
|
// Map<String, TLV> map = TLVUtil.buildTLVMap(hexStr);
|
||||||
} else {
|
// LogUtil.d(TAG, "get 9F6E Data :" + map);
|
||||||
LogUtil.e(TAG, "Get the data length of payPass is negative = " + len);
|
//
|
||||||
}
|
// } else {
|
||||||
} catch (Exception e) {
|
// LogUtil.e(TAG, "Get the data length of payWave is negative = " + len);
|
||||||
e.printStackTrace();
|
// }
|
||||||
}
|
// } catch (Exception e) {
|
||||||
}
|
// e.printStackTrace();
|
||||||
if(!hexStr.equals("9F6E00")) {
|
// }
|
||||||
f55WaveDataStr += hexStr;
|
//
|
||||||
}
|
// if (hexStr.equals("9F6E00")) {
|
||||||
|
// try {
|
||||||
|
// int len = PayLibsUtils.getInstance().emvOptV2.getTlvList(AidlConstantsV2.EMV.TLVOpCode.OP_PAYPASS, tagList, dataOut);
|
||||||
|
// if (len > 0) {
|
||||||
|
// byte[] dataOutBytes = Arrays.copyOf(dataOut, len);
|
||||||
|
// hexStr = ByteUtil.bytes2HexStr(dataOutBytes);
|
||||||
|
// LogUtil.d(TAG, "get 9F6E Data :" + hexStr);
|
||||||
|
// Map<String, TLV> map = TLVUtil.buildTLVMap(hexStr);
|
||||||
|
// LogUtil.d(TAG, "get 9F6E Data :" + map);
|
||||||
|
//
|
||||||
|
// } else {
|
||||||
|
// LogUtil.e(TAG, "Get the data length of payPass is negative = " + len);
|
||||||
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// if (!hexStr.equals("9F6E00")) {
|
||||||
|
// f55WaveDataStr += hexStr;
|
||||||
|
// }
|
||||||
icCardInfo.setICC55(f55WaveDataStr);
|
icCardInfo.setICC55(f55WaveDataStr);
|
||||||
payDetail.setICC55(f55WaveDataStr);
|
payDetail.setICC55(f55WaveDataStr);
|
||||||
LogUtil.d(TAG,"DE55 kpay: "+f55WaveDataStr);
|
LogUtil.d(TAG, "DE55 wave: " + f55WaveDataStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -715,6 +726,7 @@ public class KernelDataProcessUtil {
|
|||||||
return tradeData;
|
return tradeData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static String getHexLen(int len) {
|
private static String getHexLen(int len) {
|
||||||
String str = Integer.toHexString(len);
|
String str = Integer.toHexString(len);
|
||||||
if (str.length() == 1) {
|
if (str.length() == 1) {
|
||||||
|
|||||||
@ -395,9 +395,9 @@ public class SystemParamsOperation {
|
|||||||
saveSystemParamsSettings(params);
|
saveSystemParamsSettings(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWavePayInquiryStatus(boolean status) {
|
public void setQRPayInquiryStatus(boolean status) {
|
||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
params.setWavePayInquiryStatus(status);
|
params.setQRPayInquiryStatus(status);
|
||||||
saveSystemParamsSettings(params);
|
saveSystemParamsSettings(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,9 +423,9 @@ public class SystemParamsOperation {
|
|||||||
saveSystemParamsSettings(params);
|
saveSystemParamsSettings(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getWavePayInquiryStatus() {
|
public boolean getQRPayInquiryStatus() {
|
||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
return params.getWavePayInquiryStatus();
|
return params.getQRPayInquiryStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNfcEnabled(boolean status) {
|
public void setNfcEnabled(boolean status) {
|
||||||
@ -478,9 +478,9 @@ public class SystemParamsOperation {
|
|||||||
return params.isFallbackEnabled();
|
return params.isFallbackEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setWavePayStatus(boolean status) {
|
public void setQRPayStatus(boolean status) {
|
||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
params.setWavePayStatus(status);
|
params.setQRPayStatus(status);
|
||||||
saveSystemParamsSettings(params);
|
saveSystemParamsSettings(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -494,9 +494,9 @@ public class SystemParamsOperation {
|
|||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
return params.isDecimal_enable();
|
return params.isDecimal_enable();
|
||||||
}
|
}
|
||||||
public boolean getWavePayStatus() {
|
public boolean getQRPayStatus() {
|
||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
return params.getWavePayStatus();
|
return params.getQRPayStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getTipsAdjustmentStatus() {
|
public boolean getTipsAdjustmentStatus() {
|
||||||
@ -701,6 +701,28 @@ public class SystemParamsOperation {
|
|||||||
return params.isEmvEnabled();
|
return params.isEmvEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getAppId() {
|
||||||
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
|
return params.getAppId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppId(String appId) {
|
||||||
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
|
params.setAppId(appId);
|
||||||
|
saveSystemParamsSettings(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppKey() {
|
||||||
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
|
return params.getAppKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppKey(String appKey) {
|
||||||
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
|
params.setAppKey(appKey);
|
||||||
|
saveSystemParamsSettings(params);
|
||||||
|
}
|
||||||
|
|
||||||
public String getComp1(){
|
public String getComp1(){
|
||||||
SystemParamsSettings params = getSystemParamsSettings();
|
SystemParamsSettings params = getSystemParamsSettings();
|
||||||
return params.getComp1();
|
return params.getComp1();
|
||||||
|
|||||||
@ -129,6 +129,10 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
|
|
||||||
private String lastSuccessTranx = "000001";
|
private String lastSuccessTranx = "000001";
|
||||||
|
|
||||||
|
private String appId = "";
|
||||||
|
|
||||||
|
private String appKey = "";
|
||||||
|
|
||||||
private int fallbackCounter = 2;
|
private int fallbackCounter = 2;
|
||||||
|
|
||||||
private long jCbCVMLimit = 75000;
|
private long jCbCVMLimit = 75000;
|
||||||
@ -177,7 +181,7 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
|
|
||||||
private boolean cvv_bypass_status = false;
|
private boolean cvv_bypass_status = false;
|
||||||
|
|
||||||
private boolean wave_pay_inquiry_status = true;
|
private boolean qrpay_inquiry_status = true;
|
||||||
|
|
||||||
private boolean tips_adjustment_status = true;
|
private boolean tips_adjustment_status = true;
|
||||||
|
|
||||||
@ -187,7 +191,7 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
|
|
||||||
private boolean refund_status = true;
|
private boolean refund_status = true;
|
||||||
|
|
||||||
private boolean wave_status = true;
|
private boolean qrpay_status = true;
|
||||||
|
|
||||||
private boolean full_void_preauth_status = true;
|
private boolean full_void_preauth_status = true;
|
||||||
|
|
||||||
@ -285,6 +289,22 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
this.disabledMessage = disabledMessage;
|
this.disabledMessage = disabledMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAppId(String appId) {
|
||||||
|
this.appId = appId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAppKey(String appKey) {
|
||||||
|
this.appKey = appKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppId() {
|
||||||
|
return appId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAppKey() {
|
||||||
|
return appKey;
|
||||||
|
}
|
||||||
|
|
||||||
protected void setjCbCVMLimit(long amount) {
|
protected void setjCbCVMLimit(long amount) {
|
||||||
this.jCbCVMLimit = amount;
|
this.jCbCVMLimit = amount;
|
||||||
}
|
}
|
||||||
@ -369,8 +389,8 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
return ecrKey;
|
return ecrKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setWavePayInquiryStatus(boolean status) {
|
protected void setQRPayInquiryStatus(boolean status) {
|
||||||
this.wave_pay_inquiry_status = status;
|
this.qrpay_inquiry_status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getTerminalCapability() { return terminalCapability;}
|
protected String getTerminalCapability() { return terminalCapability;}
|
||||||
@ -403,11 +423,11 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
protected void setRandomPinPad(boolean randomPinPad) { this.isRandomPinPad = randomPinPad;}
|
protected void setRandomPinPad(boolean randomPinPad) { this.isRandomPinPad = randomPinPad;}
|
||||||
|
|
||||||
protected boolean isRandomPinPad() { return isRandomPinPad; }
|
protected boolean isRandomPinPad() { return isRandomPinPad; }
|
||||||
protected void setWavePayStatus(boolean status) {
|
protected void setQRPayStatus(boolean status) {
|
||||||
this.wave_status = status;
|
this.qrpay_status = status;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean getWavePayStatus() { return wave_status; }
|
protected boolean getQRPayStatus() { return qrpay_status; }
|
||||||
|
|
||||||
protected boolean isAutoPrintCustomerCopy() {
|
protected boolean isAutoPrintCustomerCopy() {
|
||||||
return isAutoPrintCustomerCopy;
|
return isAutoPrintCustomerCopy;
|
||||||
@ -415,8 +435,8 @@ public class SystemParamsSettings implements Serializable {
|
|||||||
|
|
||||||
protected void setAutoPrintCustomerCopy(boolean flag) { this.isAutoPrintCustomerCopy = flag; }
|
protected void setAutoPrintCustomerCopy(boolean flag) { this.isAutoPrintCustomerCopy = flag; }
|
||||||
|
|
||||||
protected boolean getWavePayInquiryStatus() {
|
protected boolean getQRPayInquiryStatus() {
|
||||||
return wave_pay_inquiry_status;
|
return qrpay_inquiry_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setTipsAdjustmentStatus(boolean status) {
|
protected void setTipsAdjustmentStatus(boolean status) {
|
||||||
|
|||||||
@ -24,7 +24,8 @@ public class BitmapConfig {
|
|||||||
|
|
||||||
public static final String FUND_TRANSFER = "7024048020801080";
|
public static final String FUND_TRANSFER = "7024048020801080";
|
||||||
|
|
||||||
public static final String CASH_ADVANCE = "7024048020801000";
|
// public static final String CASH_ADVANCE = "7024048020801000";
|
||||||
|
public static final String CASH_ADVANCE = "7020048020801000"; // removed DE 14
|
||||||
// 7020048000808000
|
// 7020048000808000
|
||||||
|
|
||||||
public static final String SIGN_ON = "2020000000800000";
|
public static final String SIGN_ON = "2020000000800000";
|
||||||
@ -58,7 +59,8 @@ public class BitmapConfig {
|
|||||||
// public static final String BPC_SALE = "3230058020C09000"; // original
|
// public static final String BPC_SALE = "3230058020C09000"; // original
|
||||||
// public static final String BPC_SALE = "3230058020C09A00"; // for emv
|
// public static final String BPC_SALE = "3230058020C09A00"; // for emv
|
||||||
// public static final String BPC_SALE = "7234058020C19A00"; // DUKPT
|
// public static final String BPC_SALE = "7234058020C19A00"; // DUKPT
|
||||||
public static final String BPC_SALE = "7234058020C19200"; // TMK
|
// public static final String BPC_SALE = "7234058020C19200"; // TMK
|
||||||
|
public static final String BPC_SALE = "7230058020C19200"; // TMK no DE 14
|
||||||
// public static final String BPC_SALE = "7230058020C19A00"; // also for manual
|
// public static final String BPC_SALE = "7230058020C19A00"; // also for manual
|
||||||
// public static final String BPC_SALE = "7230058020C09A00"; // also for manual , also added DE48
|
// public static final String BPC_SALE = "7230058020C09A00"; // also for manual , also added DE48
|
||||||
|
|
||||||
@ -88,19 +90,22 @@ public class BitmapConfig {
|
|||||||
// commented on Nov 13,2024
|
// commented on Nov 13,2024
|
||||||
// public static final String BPC_PRE_AUTH_SALE = "3230058020C09800";
|
// public static final String BPC_PRE_AUTH_SALE = "3230058020C09800";
|
||||||
// public static final String BPC_PRE_AUTH_SALE = "3230058020C09A00";
|
// public static final String BPC_PRE_AUTH_SALE = "3230058020C09A00";
|
||||||
public static final String BPC_PRE_AUTH_SALE = "7230058020C09A00"; // for manual
|
// public static final String BPC_PRE_AUTH_SALE = "7230058020C09A00"; // for manual
|
||||||
|
public static final String BPC_PRE_AUTH_SALE = "7230058020C09200"; // for tmk
|
||||||
|
|
||||||
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "7230058028C09000";
|
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "7230058028C09000";
|
||||||
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058020C09000";
|
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058020C09000";
|
||||||
|
|
||||||
// commented on Nov 13, 2024
|
// commented on Nov 13, 2024
|
||||||
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058028C09800";
|
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058028C09800";
|
||||||
public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058028C09A00";
|
// public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058028C09A00";
|
||||||
|
public static final String BPC_PRE_AUTH_SALE_COMPLETE = "3230058028C09200"; // for tmk
|
||||||
|
|
||||||
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "7230058028C09000";
|
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "7230058028C09000";
|
||||||
|
|
||||||
// commented on Nov 13,2024
|
// commented on Nov 13,2024
|
||||||
public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "7230058028C19800"; // added DE 2
|
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "7230058028C19800"; // added DE 2
|
||||||
|
public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "7234058008C09000"; // for tmk MPU
|
||||||
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "3230058028C19800";
|
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "3230058028C19800";
|
||||||
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "3230058028C19A00"; //DE55
|
// public static final String BPC_PRE_AUTH_SALE_VOID_REVERSAL = "3230058028C19A00"; //DE55
|
||||||
//
|
//
|
||||||
@ -122,7 +127,8 @@ public class BitmapConfig {
|
|||||||
public static final String BPC_TIP_ADJUSTMENTS = "723005802CC08000";
|
public static final String BPC_TIP_ADJUSTMENTS = "723005802CC08000";
|
||||||
|
|
||||||
// public static final String BPC_BATCH_UPLOAD = "7234058028C09000";
|
// public static final String BPC_BATCH_UPLOAD = "7234058028C09000";
|
||||||
public static final String BPC_BATCH_UPLOAD = "3234058028C08000";
|
// public static final String BPC_BATCH_UPLOAD = "3234058028C08000";
|
||||||
|
public static final String BPC_BATCH_UPLOAD = "3230058028C08000"; //removed de 14
|
||||||
|
|
||||||
|
|
||||||
public static final String BPC_NETWORK_CUT_OVER = "2220010000C00000";
|
public static final String BPC_NETWORK_CUT_OVER = "2220010000C00000";
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.utsmyanmar.paylibs.utils.iso_utils;
|
|||||||
public enum TransactionsType {
|
public enum TransactionsType {
|
||||||
SALE("SALE",1,"000000"),
|
SALE("SALE",1,"000000"),
|
||||||
|
|
||||||
VOID("VOID SALE",2,"200000"), //020000
|
VOID("VOID SALE",2,"020000"), //200000
|
||||||
|
|
||||||
SETTLEMENT("SETTLEMENT",3,"920000"),
|
SETTLEMENT("SETTLEMENT",3,"920000"),
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ public enum TransactionsType {
|
|||||||
|
|
||||||
PRE_AUTH_SALE("PRE-AUTH",5,"930000"),
|
PRE_AUTH_SALE("PRE-AUTH",5,"930000"),
|
||||||
|
|
||||||
PRE_AUTH_VOID("PREAUTH CANCELLATION",6,"200000"),
|
PRE_AUTH_VOID("PREAUTH CANCELLATION",6,"020000"), //200000
|
||||||
|
|
||||||
PRE_AUTH_COMPLETE("PREAUTH COMPLETION",7,"940000"),
|
PRE_AUTH_COMPLETE("PREAUTH COMPLETION",7,"940000"),
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user