diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt index 9ab79a9..fe47f0d 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/navigation/AppNavGraph.kt @@ -38,12 +38,14 @@ import com.mob.utsmyanmar.ui.settlement.SettlementViewModel import com.mob.utsmyanmar.ui.transaction_result.TransactionResultEvent import com.mob.utsmyanmar.ui.transaction_result.TransactionResultViewModel import com.mob.utsmyanmar.ui.functions.FunctionsScreen +import com.mob.utsmyanmar.ui.refund_rrn.RRNViewModel import com.mob.utsmyanmar.ui.tms_setup.TmsSetupRoute import com.mob.utsmyanmar.ui.tms_setup.TmsSetupViewModel import com.mob.utsmyanmar.ui.version.VersionScreen import com.mob.utsmyanmar.viewmodel.SharedViewModel import com.mob.utsmyanmar.viewmodel.TransProcessViewModel import com.utsmyanmar.ecr.data.TransType +import com.utsmyanmar.paylibs.model.TradeData import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType @SuppressLint("ContextCastToActivity") @@ -112,16 +114,27 @@ fun AppNavGraph( } composable(Routes.SeeMore.route) { + val sharedViewModel: SharedViewModel = hiltViewModel(activity) SeeMoreScreen( onBack = { navController.popBackStack() }, onNavigateAmount = { action -> - if (action == "Void") { - navController.navigate(Routes.VoidTrace.route) { - launchSingleTop = true + when (action) { + "Void" -> { + sharedViewModel.transactionsType.value = TransactionsType.VOID + navController.navigate(Routes.VoidTrace.route) { + launchSingleTop = true + } } - } else { - navController.navigate(Routes.Amount.createRoute(action)) { - launchSingleTop = true + "Pre-Auth Complete Void" -> { + sharedViewModel.transactionsType.value = TransactionsType.PRE_AUTH_COMPLETE_VOID + navController.navigate(Routes.VoidTrace.route) { + launchSingleTop = true + } + } + else -> { + navController.navigate(Routes.Amount.createRoute(action)) { + launchSingleTop = true + } } } } @@ -144,8 +157,9 @@ fun AppNavGraph( composable(Routes.VoidTrace.route) { val voidViewModel: VoidViewModel = hiltViewModel() - + val sharedViewModel: SharedViewModel = hiltViewModel(activity) VoidTraceScreen( + sharedViewModel = sharedViewModel, voidViewModel = voidViewModel, onNavigateTranDetail = { trace -> navController.navigate(Routes.VoidTranDetail.createRoute(trace)) { @@ -194,8 +208,19 @@ fun AppNavGraph( trace = trace, onBack = { navController.popBackStack() }, onProceedVoid = { payDetail -> - sharedViewModel.transactionsType.value = TransactionsType.VOID - transProcessViewModel.setTransType(TransactionsType.VOID) + if(sharedViewModel.transactionsType.value == TransactionsType.VOID) { + transProcessViewModel.setTransType(TransactionsType.VOID) + payDetail.transType = TransactionsType.VOID.name + payDetail.transactionType = TransactionsType.VOID.value + } else { + transProcessViewModel.setTransType(TransactionsType.PRE_AUTH_COMPLETE_VOID) + payDetail.transType = TransactionsType.PRE_AUTH_COMPLETE_VOID.name + payDetail.transactionType = TransactionsType.PRE_AUTH_COMPLETE_VOID.value + } + + val tradeData = TradeData() + tradeData.payDetail = payDetail + transProcessViewModel.setTradeData(tradeData) sharedViewModel.payDetail.value = payDetail navController.navigate(Routes.Processing.route) { popUpTo(Routes.VoidTranDetail.route) { @@ -392,8 +417,11 @@ fun AppNavGraph( composable(Routes.InputRrn.route) { val sharedViewModel: SharedViewModel = hiltViewModel(activity) - + val rrnViewModel: RRNViewModel = hiltViewModel(activity) + val transProcessViewModel: TransProcessViewModel = hiltViewModel(activity) InputRrnRoute( + transProcessViewModel = transProcessViewModel, + rrnViewModel = rrnViewModel, sharedViewModel = sharedViewModel, onBack = { navController.popBackStack() }, onNavigateProcessing = { diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/pinpad/PinPadViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/pinpad/PinPadViewModel.kt index cc05eb6..8914840 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/pinpad/PinPadViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/pinpad/PinPadViewModel.kt @@ -405,8 +405,19 @@ class PinPadViewModel @Inject constructor( ON_CONFIRM_CLICK -> { LogUtil.d(TAG, "ON CLICK CONFIRM") - isTerminalStateReached = true - _pinStatus.value = PinPadStatus.ON_CONFIRM + + if ( + transType.value == TransactionsType.PRE_AUTH_COMPLETE || + transType.value == TransactionsType.PRE_AUTH_VOID || + transType.value == TransactionsType.REFUND + ) { + isTerminalStateReached = true + _pinStatus.value = PinPadStatus.ON_NEXT_SCREEN + } else { + isTerminalStateReached = true + _pinStatus.value = PinPadStatus.ON_CONFIRM + } + } ON_CANCEL_CLICK -> { @@ -488,18 +499,11 @@ class PinPadViewModel @Inject constructor( payDetail?.pinCipher = "" } - if ( - transType.value == TransactionsType.PRE_AUTH_COMPLETE || - transType.value == TransactionsType.PRE_AUTH_VOID || - transType.value == TransactionsType.REFUND - ) { - isTerminalStateReached = true - _pinStatus.value = PinPadStatus.ON_NEXT_SCREEN - } else { + handler.obtainMessage( ON_CONFIRM_CLICK ).sendToTarget() - } + } override fun onCancel() { diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt b/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt index c989aa5..fc7a3d4 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/print_receipt/PrintReceiptScreen.kt @@ -200,6 +200,7 @@ fun ReceiptPreview( ReceiptDivider() ReceiptRow("Merchant", state.payDetail?.merchantName.toString() ) ReceiptRow("Terminal ID", state.payDetail?.terminalNo.toString() ) + ReceiptRow("Trace No", state.payDetail?.voucherNo.toString() ) ReceiptRow("Transaction", state.payDetail?.transType.toString()) ReceiptRow("Amount", POSUtil.getInstance().getDecimalAmountSeparatorFormat(state.payDetail?.amount?:0)) ReceiptRow("Card Type", state.payDetail?.accountType.toString()) diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/InputRrnRoute.kt b/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/InputRrnRoute.kt index 53df0e2..4a4d646 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/InputRrnRoute.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/InputRrnRoute.kt @@ -6,14 +6,22 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.mob.utsmyanmar.ui.components.NumericEntryScreen import com.mob.utsmyanmar.viewmodel.SharedViewModel +import com.mob.utsmyanmar.viewmodel.TransProcessViewModel +import com.utsmyanmar.paylibs.model.PayDetail +import com.utsmyanmar.paylibs.model.TradeData import com.utsmyanmar.paylibs.utils.POSUtil +import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType +import sunmi.sunmiui.utils.LogUtil private const val RRN_MAX_LENGTH = 12 @Composable fun InputRrnRoute( + transProcessViewModel: TransProcessViewModel, + rrnViewModel: RRNViewModel, sharedViewModel: SharedViewModel, onBack: () -> Unit, onNavigateProcessing: () -> Unit @@ -28,6 +36,75 @@ fun InputRrnRoute( errorMessage = null } + val payDetailState by rrnViewModel.payDetailState.collectAsStateWithLifecycle() + + + fun processPreAuthComp(payDetail: PayDetail) { + val newPay = transProcessViewModel.payDetail + + + + newPay?.setReferNo(payDetail.referNo) + newPay?.setApprovalCode(payDetail.getApprovalCode()) + newPay?.setTradeTime(payDetail.getTradeTime()) + newPay?.setTradeDate(payDetail.getTradeDate()) + + + val tradeData = TradeData() + tradeData.payDetail = newPay + transProcessViewModel.setOldTransPayDetail(payDetail) + transProcessViewModel.setTradeData(tradeData) + + rrnViewModel.resetState() + onNavigateProcessing() + + } + + fun processPreAuthVoid(payDetail: PayDetail) { + val newPay = transProcessViewModel.payDetail + + newPay?.setReferNo(payDetail.referNo) + + + val tradeData = TradeData() + tradeData.payDetail = newPay + transProcessViewModel.setOldTransPayDetail(payDetail) + transProcessViewModel.setTradeData(tradeData) + + rrnViewModel.resetState() + onNavigateProcessing() + } + + + + + LaunchedEffect(payDetailState) { + LogUtil.d("RRN","paydetail state: $payDetailState") + when (val state = payDetailState) { + + is RRNViewModel.PayDetailState.Success -> { + + + sharedViewModel.payDetail.value = state.data + sharedViewModel.rrNNo.value = state.data.referNo + + if(sharedViewModel.transactionsType.value == TransactionsType.PRE_AUTH_COMPLETE) { + processPreAuthComp(state.data) + } else if(sharedViewModel.transactionsType.value == TransactionsType.PRE_AUTH_VOID) { + processPreAuthVoid(state.data) + } + + } + is RRNViewModel.PayDetailState.Error -> { + errorMessage = state.message + rrnViewModel.resetState() + // show dialog + // navigate to home + } + else -> Unit + } + } + NumericEntryScreen( title = "Input RRN", prompt = "Enter RRN", @@ -38,17 +115,32 @@ fun InputRrnRoute( onCancelClick = onBack, onConfirmClick = { val trimmedRrn = rrn.trim() + if (POSUtil.getInstance().checkNumberField(trimmedRrn)) { errorMessage = "Invalid RRN" return@NumericEntryScreen } - sharedViewModel.rrNNo.value = trimmedRrn - sharedViewModel.payDetail.value?.let { payDetail -> - payDetail.referNo = trimmedRrn - sharedViewModel.payDetail.value = payDetail + + + if(sharedViewModel.transactionsType.value == TransactionsType.REFUND ) { + val newPay = transProcessViewModel.payDetail + + newPay?.setReferNo(trimmedRrn) + val tradeData = TradeData() + tradeData.payDetail = newPay + transProcessViewModel.setTradeData(tradeData) + rrnViewModel.resetState() + onNavigateProcessing() + } else{ + rrnViewModel.searchPayDetail( + trimmedRrn, + sharedViewModel.payDetail.value?.cardNo?:"" + ) } - onNavigateProcessing() + + + }, onKeyClick = { value -> rrn = appendRrnValue(rrn, value) diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/RRNViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/RRNViewModel.kt new file mode 100644 index 0000000..b27a476 --- /dev/null +++ b/app/src/main/java/com/mob/utsmyanmar/ui/refund_rrn/RRNViewModel.kt @@ -0,0 +1,56 @@ +package com.mob.utsmyanmar.ui.refund_rrn + +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModel +import androidx.lifecycle.asFlow +import androidx.lifecycle.viewModelScope +import com.utsmyanmar.baselib.repo.Repository +import com.utsmyanmar.paylibs.model.PayDetail +import com.utsmyanmar.paylibs.system.SingleLiveEvent +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.launch +import javax.inject.Inject + + +@HiltViewModel +class RRNViewModel @Inject constructor( + private val repository: Repository +) : ViewModel() { + + sealed class PayDetailState { + object Idle : PayDetailState() + object Loading : PayDetailState() + data class Success(val data: PayDetail) : PayDetailState() + data class Error(val message: String) : PayDetailState() + } + + private val _payDetailState = MutableStateFlow(PayDetailState.Idle) + val payDetailState: StateFlow = _payDetailState + + fun searchPayDetail(refNo: String, cardNo: String) { + _payDetailState.value = PayDetailState.Loading + viewModelScope.launch { + try { + repository.searchPayDetail(cardNo, refNo) + .asFlow() + .filterNotNull() + .first() + .let { result -> + _payDetailState.value = PayDetailState.Success(result) + } + } catch (e: Exception) { + _payDetailState.value = PayDetailState.Error(e.message ?: "Search failed") + } + } + } + + fun resetState() { + _payDetailState.value = PayDetailState.Idle + } + +} diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/sale_void/VoidTraceScreen.kt b/app/src/main/java/com/mob/utsmyanmar/ui/sale_void/VoidTraceScreen.kt index e870e51..e37309a 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/sale_void/VoidTraceScreen.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/sale_void/VoidTraceScreen.kt @@ -40,11 +40,14 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.mob.utsmyanmar.ui.components.appbar.AppBar import com.mob.utsmyanmar.ui.theme.Color +import com.mob.utsmyanmar.viewmodel.SharedViewModel import com.utsmyanmar.paylibs.model.PayDetail import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType +import sunmi.sunmiui.utils.LogUtil @Composable fun VoidTraceScreen( + sharedViewModel: SharedViewModel, voidViewModel: VoidViewModel, onNavigateTranDetail: (String) -> Unit, onBack: () -> Unit = {} @@ -57,12 +60,18 @@ fun VoidTraceScreen( val recentTransactions by voidViewModel.getLastThreeTransactions().observeAsState(emptyList()) val transactionSource: LiveData = remember(searchedTrace) { + val transType = if(sharedViewModel.transactionsType.value == TransactionsType.VOID) { + TransactionsType.SALE.value + } else { + TransactionsType.PRE_AUTH_COMPLETE.value; + } + LogUtil.d("void screen","transaction type : $transType and trace number : $searchedTrace") if (searchedTrace.isBlank()) { MutableLiveData(null) } else { @Suppress("UNCHECKED_CAST") voidViewModel.getVoidTrans( - TransactionsType.SALE.value, + transType, searchedTrace ) as LiveData } diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/sending_to_host/SendingToHostRoute.kt b/app/src/main/java/com/mob/utsmyanmar/ui/sending_to_host/SendingToHostRoute.kt index 11627a3..15a0619 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/sending_to_host/SendingToHostRoute.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/sending_to_host/SendingToHostRoute.kt @@ -35,18 +35,18 @@ fun ProcessingRoute( val settlementStatus by settlementViewModel.uiState.collectAsStateWithLifecycle() - val settlementStatusResult by settlementViewModel.events.collectAsStateWithLifecycle(Channel.BUFFERED) - - if(sharedViewModel.transactionsType.value == TransactionsType.SETTLEMENT) { LaunchedEffect(Unit) { settlementViewModel.startSettlementProcess() } - LaunchedEffect(settlementStatusResult) { - when(settlementStatusResult) { + LaunchedEffect(settlementStatus.status) { + when(settlementStatus.status) { TransactionStatus.ON_ERROR, - TransactionStatus.ON_SUCCESS -> onNavigateTransactionResult() + TransactionStatus.ON_SUCCESS -> { + sharedViewModel.payDetail.value = settlementViewModel.getPayDetail() + onNavigateTransactionResult() + } else -> {} } } diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt index 7a6ac3a..d9f0f90 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/settlement/SettlementViewModel.kt @@ -205,6 +205,7 @@ class SettlementViewModel @Inject constructor( } } + fun getPayDetail() = payDetail fun setSettlementType(type: SettlementType) { _uiState.update { it.copy(settlementType = type) @@ -351,6 +352,7 @@ class SettlementViewModel @Inject constructor( totalERefundAmount } + payDetail = currentPayDetail tradeData.payDetail = currentPayDetail tradeData.field60 = field60 diff --git a/app/src/main/java/com/mob/utsmyanmar/ui/tms_setup/TmsSetupViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/ui/tms_setup/TmsSetupViewModel.kt index 886252b..09d89e7 100644 --- a/app/src/main/java/com/mob/utsmyanmar/ui/tms_setup/TmsSetupViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/ui/tms_setup/TmsSetupViewModel.kt @@ -53,6 +53,7 @@ class TmsSetupViewModel @Inject constructor( init { viewModelScope.launch { waitForHardware() + TMSUtil.getInstance().generateFinalVersion() downloadConfigs() } } @@ -62,6 +63,8 @@ class TmsSetupViewModel @Inject constructor( it.copy(isLoading = true, isError = false, statusText = "Connecting to TMS server...") } + + val disposable = repository.getParams(buildRequest()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -103,6 +106,7 @@ class TmsSetupViewModel @Inject constructor( delay(500) elapsed += 500 } + } private fun onConfigApplied() { diff --git a/app/src/main/java/com/mob/utsmyanmar/utils/tms/TMSSetupsImpl.kt b/app/src/main/java/com/mob/utsmyanmar/utils/tms/TMSSetupsImpl.kt index e340302..e5550a7 100644 --- a/app/src/main/java/com/mob/utsmyanmar/utils/tms/TMSSetupsImpl.kt +++ b/app/src/main/java/com/mob/utsmyanmar/utils/tms/TMSSetupsImpl.kt @@ -267,6 +267,7 @@ class TMSSetupsImpl : TMSSetups { } catch (e: Exception) { "?" } + SystemParamsOperation.getInstance().setFinalVersion("PHV$phv-RV$rv-SV$sv") return "PHV$phv-RV$rv-SV$sv" } private fun parseBoolean(data: String): Boolean = diff --git a/app/src/main/java/com/mob/utsmyanmar/viewmodel/TransProcessViewModel.kt b/app/src/main/java/com/mob/utsmyanmar/viewmodel/TransProcessViewModel.kt index acac75a..ad40565 100644 --- a/app/src/main/java/com/mob/utsmyanmar/viewmodel/TransProcessViewModel.kt +++ b/app/src/main/java/com/mob/utsmyanmar/viewmodel/TransProcessViewModel.kt @@ -3,7 +3,6 @@ package com.mob.utsmyanmar.viewmodel import android.text.TextUtils import androidx.lifecycle.ViewModel import com.mob.utsmyanmar.model.TransResultStatus -import com.mob.utsmyanmar.ui.processing_card.ProcessingCardState import com.mob.utsmyanmar.ui.sending_to_host.ProcessingState import com.utsmyanmar.baselib.repo.Repository import com.utsmyanmar.paylibs.model.PayDetail @@ -109,6 +108,12 @@ class TransProcessViewModel @Inject constructor( fun setOldTransPayDetail(payDetail: PayDetail) { oldTransPayDetail = payDetail } + + fun setNewPayDetail(payDetail: PayDetail) { + this.payDetail = payDetail + tradeData = TradeData() + tradeData.payDetail = payDetail + } private val _state = MutableStateFlow(ProcessingState()) val state = _state.asStateFlow() @@ -263,9 +268,36 @@ class TransProcessViewModel @Inject constructor( ) } - override fun processPreVoidDb(payResult: PayDetail) {} - override fun processPreCompDb(payResult: PayDetail) {} - override fun processPreCompVoidDb(payResult: PayDetail) {} + override fun processPreVoidDb(payResult: PayDetail) { + oldTransPayDetail?.apply { + isCanceled = true + repository.updatePayDetail(oldTransPayDetail!!) + } + + + repository.insertPayDetail(updateCurrentDateAndTime(payResult)) + } + override fun processPreCompDb(payResult: PayDetail) { + if (oldTransPayDetail?.getAmount() == payResult.getAmount()) { + oldTransPayDetail?.apply { + isCanceled = true + repository.updatePayDetail(this) + } + } else { + oldTransPayDetail?.apply { + isCanceled = false + repository.updatePayDetail(this) + } + } + repository.insertPayDetail(updateCurrentDateAndTime(payResult)) + } + override fun processPreCompVoidDb(payResult: PayDetail) { + payDetail?.apply { + isCanceled = true + repository.updatePayDetail(this) + } + repository.insertPayDetail(updateCurrentDateAndTime(payResult)) + } /* * Reversal diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java index 7441fad..7c15376 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/print/printx/BaseXPrint.java @@ -206,7 +206,7 @@ public abstract class BaseXPrint { String finalVersion = SystemParamsOperation.getInstance().getFinalVersion(); sunmiPrinterService.setFontSize(textSize, innerResultCallback); - sunmiPrinterService.printText("***** MERCHANT COPY *****" + "\n", innerResultCallback); +// sunmiPrinterService.printText("***** MERCHANT COPY *****" + "\n", innerResultCallback); sunmiPrinterService.printText(finalVersion + "\n", innerResultCallback); sunmiPrinterService.printText(receiptFooter + "\n", innerResultCallback); } catch (RemoteException e) { diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/sign_on/SignOnProcess.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/sign_on/SignOnProcess.java index 497f791..3bc0ef8 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/sign_on/SignOnProcess.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/sign_on/SignOnProcess.java @@ -50,7 +50,7 @@ public class SignOnProcess { private SignOnProcess() { tradeData = Params.newTrade(true); // payDetail = tradeData.getPayDetail(); - isoMsgX = new ISOMsgX.ISOMsgXBuilder(ISOVersion.VERSION_1993, ISOMode.ONLY_HEADER,HostName.MPU) + isoMsgX = new ISOMsgX.ISOMsgXBuilder(ISOVersion.VERSION_1993, ISOMode.ONLY_HEADER,HostName.CARDZONE) .build(); } @@ -59,7 +59,7 @@ public class SignOnProcess { flag = false; return listener -> { // LogUtil.d(TAG, "Starting TX SignOn"); - HostName hostName = HostName.MPU; + HostName hostName = HostName.CARDZONE; PayDetail payDetail = tradeData.getPayDetail(); payDetail.setProcessCode(TransactionsType.SIGN_ON.processCode); @@ -67,7 +67,7 @@ public class SignOnProcess { payDetail.setTransactionType(TransactionsType.SIGN_ON.value); payDetail.setHostName(hostName.name); - byte[] sendBytes = isoMsgX.buildISOPackets(tradeData, BitmapConfig.MPU_NEW_SIGN_ON, MessageType.NETWORK_MANAGEMENT); + byte[] sendBytes = isoMsgX.buildISOPackets(tradeData, BitmapConfig.CZ_SIGN_ON, MessageType.NETWORK_MANAGEMENT); ISOSocket.getInstance().enqueue(sendBytes, sendBytes.length,false, new ISOCallback() { @Override public void onReceive(byte[] bytes, int length) { diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/transactions/TransactionsOperation.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/transactions/TransactionsOperation.java index 50a1c9c..35e9f04 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/transactions/TransactionsOperation.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/transactions/TransactionsOperation.java @@ -174,8 +174,8 @@ public class TransactionsOperation { if (responseMap.get("F038") != null) { transPayDetail.setApprovalCode(Objects.requireNonNull(responseMap.get("F038")).getDataStr()); } else { - transPayDetail.setIsNeedReversal(true); - return; +// transPayDetail.setIsNeedReversal(true); +// return; } if (responseMap.get("F046") != null) { @@ -376,7 +376,6 @@ public class TransactionsOperation { newPay.setTransCVM(TransCVM.SIGNATURE); if((oldPay.getAccountType().equals(CardScheme.MASTERCARD.name) || oldPay.getAccountType().equals(CardScheme.VISA.name))) { - newPay.setProcessCode(TransactionsType.PRE_AUTH_SALE.processCode); } // for manual entry reversal which need de 35 @@ -391,12 +390,14 @@ public class TransactionsOperation { newPay.setReferNo(oldPay.getReferNo()); newPay.setTempKSN(oldPay.getTempKSN()); newPay.setTransCVM(oldPay.getTransCVM()); //added on 26 Nov 2025 + newPay.setApprovalCode(oldPay.getApprovalCode()); + newPay.setTradeTime(oldPay.getTradeTime()); // mpu + newPay.setTradeDate(oldPay.getTradeDate()); // mpu } else if (transactionsType == TransactionsType.PRE_AUTH_COMPLETE_VOID) { newPay.setVoucherNo(oldPay.getVoucherNo()); newPay.setCustomOrderNo(oldPay.getVoucherNo()); newPay.setReferNo(oldPay.getReferNo()); newPay.setCardInfo(oldPay.getCardInfo()); - /* * new requirements */ newPay.setCardType(AidlConstants.CardType.IC.getValue()); @@ -406,7 +407,7 @@ public class TransactionsOperation { if(oldPay.getAccountType().equals(CardScheme.MPU.name) || oldPay.getAccountType().equals(CardScheme.MPU_CTLS.name)){ - newPay.setTransCVM(TransCVM.NO_CVM); + newPay.setTransCVM(TransCVM.SIGNATURE); } newTrade.setPayDetail(newPay); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/host_utils/HostUtils.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/host_utils/HostUtils.java index ed32139..880f88b 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/host_utils/HostUtils.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/host_utils/HostUtils.java @@ -130,7 +130,7 @@ public class HostUtils { if (hostName == HostName.BPC) { msgType = MessageType.REVERSAL; } else { - msgType = MessageType.FINANCIAL; + msgType = MessageType.REVERSAL; } break; case SETTLEMENT: diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/FieldUtils.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/FieldUtils.java index 16a4cde..5af4b8e 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/FieldUtils.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/FieldUtils.java @@ -374,13 +374,10 @@ public class FieldUtils { 08 – mail order/telephone order * */ // Service point condition code Fill in 00 for ordinary consumer transactions and mobile phone chip transactions, fill in 08 for order consumer transactions, fill in 64 for installment transactions, fill in 65 for points consumption transactions, fill in 67 for mobile phone card-free reservations -// if (payDetail.getTransactionType() == PRE_AUTH_VOID.value) { -// field.setDataStr("06"); -// } else { -// field.setDataStr("00"); -// } - - if(payDetail.getTransactionType() == REFUND.value) { + if (payDetail.getTransactionType() == PRE_AUTH_SALE.value) { + field.setDataStr("06"); + } + else if(payDetail.getTransactionType() == REFUND.value) { field.setDataStr("00"); // MPU } else if(payDetail.getCardType() == -1) { field.setDataStr("08"); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/params/Params.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/params/Params.java index 0c767da..bf8807b 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/params/Params.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/params/Params.java @@ -82,6 +82,7 @@ public class Params { payDetail.setIsCanceled(false); payDetail.transNum = System.currentTimeMillis() / 1000; // need to add host logic in another place +// payDetail.setHostName("MPU"); payDetail.setHostName("MPU"); // payDetail.setHostName("MOB"); diff --git a/paylibs/src/main/res/raw/mob.crt b/paylibs/src/main/res/raw/mob.crt new file mode 100644 index 0000000..1b2e164 --- /dev/null +++ b/paylibs/src/main/res/raw/mob.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIETeycDjANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQGEwJt +eTELMAkGA1UECBMCa2wxDDAKBgNVBAcTA2trbDERMA8GA1UEChMIY2FyZHpvbmUx +ETAPBgNVBAsTCGNhcmR6b25lMREwDwYDVQQDEwhjYXJkem9uZTAeFw0yMTA3MDcw +ODU5MzlaFw0zMTA3MDUwODU5MzlaMGExCzAJBgNVBAYTAm15MQswCQYDVQQIEwJr +bDEMMAoGA1UEBxMDa2tsMREwDwYDVQQKEwhjYXJkem9uZTERMA8GA1UECxMIY2Fy +ZHpvbmUxETAPBgNVBAMTCGNhcmR6b25lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2v7WJjmr0b9WpbcsTtk6llJDA5XeReWc3in0sirutMQi+9jLUdgJ +0Kdr0Cro0vbJAcVWTBYnMqnqh7oJQYs6vpIFKJA175ZhclQFAcL2jth+Tsqx9Av1 +DxbuuB7yxU7ErkhXe+/B0R8zOag866R3Xg7u09GG4mlQMx5zmo1Hn3lqMU0lxEXM +vhkzVXLUMLhVwu/oJk98u+6pPXoCzXPjBCgy3iR+BaGIR6aiflz8Bi1Rn3XgfnMi +PzOzxKRZu5mNBRijs7ztcjA8Pc2uNI0ux3+jUJTgu2JRIBJs+7BkNcJeLzpW5psz +qfFdwxTKkgfqU9gJwuPaEbdnP0j7Rv2MBwIDAQABoyEwHzAdBgNVHQ4EFgQUOF7s +btNCxmv9HSAkSAPVAHpDXY4wDQYJKoZIhvcNAQELBQADggEBADOJaUnRiVucIb8q +jxplpSE0gOHMng+BMq2gKcqqc+QRc/mgM3n0J8F1A3rzj3udbzen3/9TnOiH17uy +FGLH12sJ7dJWMGAJ2p15N307ckrCab3+3Y1w6OQJLZ8t3eeXFGPVWQJtiOUbyX73 +3Fv+TpNl6X1uEdQ0zNDiAvWZQ/e6ynYGF/tSgZLJvgV+8UY5ShCA0Ypousm6sPqb +KQXPCs3kRn1eMgMy8PcmUlZK/5qhD+xZswWgNiQ6EyCWmwpB4O0N9wQbLBTFZkGA +bDke78LVS1nUam9czcNvSDYyjWsk9ud8mo9JfF21qmwCR68btqDgeU0hM9W6lEQo +ezrrz9k= +-----END CERTIFICATE----- diff --git a/paylibs/src/main/res/raw/mpu_crt_2026.crt b/paylibs/src/main/res/raw/mpu_crt_2026.crt deleted file mode 100644 index bf7b7b0..0000000 --- a/paylibs/src/main/res/raw/mpu_crt_2026.crt +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIID3DCCAsSgAwIBAgIJAIuL4ypXInCoMA0GCSqGSIb3DQEBBQUAMGcxCzAJBgNV -BAYTAk1SMQswCQYDVQQIDAJNUjEMMAoGA1UECgwDTVBVMQwwCgYDVQQLDANNUFUx -DTALBgNVBAMMBHRlc3QxIDAeBgkqhkiG9w0BCQEWEXdhaXlhbkBmcHQuY29tLnZu -MB4XDTIxMDIwMzE3MTExMloXDTIyMDIwMzE3MTExMlowdzELMAkGA1UEBhMCTVIx -DzANBgNVBAgMBllhbmdvbjEPMA0GA1UEBwwGWWFuZ29uMQwwCgYDVQQKDANNUFUx -DDAKBgNVBAsMA01QVTENMAsGA1UEAwwEdGVzdDEbMBkGCSqGSIb3DQEJARYMdGVz -dEBtcHUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAujLe6mWJ -GXliGUoLdJEA37VyBOQ7zLpge7u2QM2UMQXnKosdtZzMzXnVrnctJ6ehzLnhL0Lv -Oissr7qo53haXsJJccHeqcTH5cFkh96IswOrc8/1MMrb4zMjnNjOZaxmB4HeGHKk -KjNLKTTO8It3v/MziBhxUEEKVrN4npeUfsGVPfrvYnZXSWuRLhzYYLtEz/LFg4Yh -28pCXqk2vmGNV62oZ2+SDisoiYdIVEOMRqb/7cJg+cd0JRdvxHsTNuYRHGtJOM10 -lEnoI+moE5OIUpp8Z+i4ZcvyThpNbRWf9sRzB8oc32fZ2UWnlN5+bVRLCjlk2jNO -SGdMuMaF0bs3GwIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1P -cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUipyzRYfqRc2P -QCJ0FJp6eAvI1wkwHwYDVR0jBBgwFoAUvYEAOtcvUt4CxCp+9zRG2oJqos8wDQYJ -KoZIhvcNAQEFBQADggEBAAjBQroy74ACyyJCZJ50KBTYQI3Sk82hO/+zZFqsJgWm -mNum31TtfwhvQmi94sXQSar0UsqLTmLC3UTucwEdSKOPzXF5BK4EEbkYgMm78hNK -2zqhGvcWlqun+KPxmnMRFoVmN3Ck2PkcgudvAeV0G3rm0OdLUwLoK2TcREVf1Cwg -C7jX5QtGOgVqnKDZBuoSvdbV30ka7pKkdJAy/Wus4N9hHH+bR2FNkLgTDoXnV8LL -E2dRKVYAh9TtuXiW/ejhPtEc14sMP+8JpCFX3DYx4yRW8ZeMl5jal4LhRFXdDbVl -Wm99KcWM+TNw/nzKwv0zUJXy0HlN82tvLX1/wbBUo8M= ------END CERTIFICATE----- diff --git a/paylibs/src/main/res/raw/mpucert.crt b/paylibs/src/main/res/raw/mpucert.crt deleted file mode 100644 index 040c8f7..0000000 Binary files a/paylibs/src/main/res/raw/mpucert.crt and /dev/null differ diff --git a/paylibs/src/main/res/raw/my_cert.crt b/paylibs/src/main/res/raw/my_cert.crt deleted file mode 100644 index 38ba437..0000000 Binary files a/paylibs/src/main/res/raw/my_cert.crt and /dev/null differ diff --git a/paylibs/src/main/res/raw/smile_uat.crt b/paylibs/src/main/res/raw/smile_uat.crt deleted file mode 100644 index baee849..0000000 --- a/paylibs/src/main/res/raw/smile_uat.crt +++ /dev/null @@ -1,113 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIG8DCCBNigAwIBAgIQWgAhSkRBOifV9FjHQOJCuDANBgkqhkiG9w0BAQwFADBL -MQswCQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NT -TCBSU0EgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTI0MDkwMzAwMDAwMFoXDTI1 -MDkwMzIzNTk1OVowGTEXMBUGA1UEAwwOKi55b21hYmFuay5uZXQwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCAqUfzHF/N4m3xxNr/noBpg9s8edFWghYn -sYEAOQmMD1tVsjFavds9eAO5JBhL2+yQ8dxd5P5yqAHuQmEcBpw0YdPEAsKJbrqG -4VXU40q1DbQipnHiTrQx0RG5aRFsP6OTrRU0MnQMaFGTSgMKYKg0YM24si/JyyiX -eJXpEIXzt10NWpQfJ7T3RrzkkEHsfPzYmiBecUVmCu2Mb0/jym+Hr5eBvEf/mmhR -re/0hofitx9OTwmZt85uPVwpP6miOLpby+/46v7k8PSZ7qJhCv34AnnldY3uA+Ws -ld+Ria5Kpt6dHiBPzer/8HNd2Xkdpo2Ny3jq8N9vo0UJ2H7rWgy7AgMBAAGjggMA -MIIC/DAfBgNVHSMEGDAWgBTI2XhootkZaNU9ct5fCj7ctYaGpjAdBgNVHQ4EFgQU -Iu3iisKOIvooYnMumJGFqW4LTEkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQC -MAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYL -KwYBBAGyMQECAk4wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9D -UFMwCAYGZ4EMAQIBMIGIBggrBgEFBQcBAQR8MHowSwYIKwYBBQUHMAKGP2h0dHA6 -Ly96ZXJvc3NsLmNydC5zZWN0aWdvLmNvbS9aZXJvU1NMUlNBRG9tYWluU2VjdXJl -U2l0ZUNBLmNydDArBggrBgEFBQcwAYYfaHR0cDovL3plcm9zc2wub2NzcC5zZWN0 -aWdvLmNvbTAnBgNVHREEIDAegg4qLnlvbWFiYW5rLm5ldIIMeW9tYWJhbmsubmV0 -MIIBfAYKKwYBBAHWeQIEAgSCAWwEggFoAWYAdQDd3Mo0ldfhFgXnlTL6x5/4PRxQ -39sAOhQSdgosrLvIKgAAAZG2rpYwAAAEAwBGMEQCIAdAYV4eBpRPW8pCNmvriCr0 -sOJZeBqBHoQ6fBSJHG1CAiAs841ZeuQRpFtLzZxxDXWbQYKJuT8iV6l2bZHsUdDh -owB1AA3h8jAr0w3BQGISCepVLvxHdHyx1+kw7w5CHrR+Tqo0AAABkbaulhAAAAQD -AEYwRAIgCLjpVhxG/w/Fsm+aAmE4t4PVAgASOgVMzoD/eOuor/MCIHN5h/YzzOzy -KbhEl5VkeSLbLUFz99Lq+Ci5Z0jRRTJ9AHYAEvFONL1TckyEBhnDjz96E/jntWKH -iJxtMAWE6+WGJjoAAAGRtq6WDwAABAMARzBFAiEA7uQaaiKBOBPRukDoHqvTzifk -1N8fcbf34xDC+BlelnUCIAZaPHlu2u+DJcxCAGgBoqVtZhdO64tcV6yy1fYqo2fq -MA0GCSqGSIb3DQEBDAUAA4ICAQBrxQPnmGA+CnhEq2ZaqZNQteRXb9+HbLT9Vq/I -6je5BtuYZrF1hd8V/NV3ug+vfWwNjUAILM068BnzfCvAaFxQ/kzmzPgttH2S5e0x -0fkG/I0pLtNj9ABcIcOKAnLK3Ce4ANgkpoHg8LtlBy2Tu9Aj+QgDCxz3Jhk6fIOi -dBlcveoRE3UpzaZ6G6XLz6CLHcFePhca+qlwWh9L3aw7Kr7ykgU62Y+z2R/KBmvg -6lPhumXSMffd3ikESgn+RyVXO6VRyszrIG5/B9NGLc1Of4g0+eE+znWIk4T7eVet -RnBMO5I4pLZb63Af9tuYBBBBOkoW+oWFeqxu0Y8G5EqReZiBvG8NvNi2Zj/wvDB+ -aQN8u2oQnWHTqH5TS+3WSymWKsxHu3anYtRsNdLWb898HkYRPENXDLn8jETDyopN -cMBA4qou6di0HOaTmGfGn9cDvrJ/ciYZnT3msCdTSwAk19hacpEtgH3T12FMAtjk -aDj45VD1rRfmWj6j8xLVuOV6G6gjsloh3ruQv0j9va1vbmGufc9VbeUPCqFzL2UZ -vRr8xAggyjtYPpRwtA+SHAD27nnma3XeEBPwdJJs15wvZw2EH7fI4yYwZ3IrTtAq -ICt+BIXVlTQhfgtIC2XCuw3f5e5VlThZRKrJEB1TFAcmW9cCpTrKc5R4cs7XcTbt -m7MTbw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw -MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE -ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT -aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj -4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs -JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4 -t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF -WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc -RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U -gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD -hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt -iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF -x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W -2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp -wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA -FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c -tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE -FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC -TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1 -c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG -CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu -Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw -Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV -ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4 -YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA -Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ -qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd -4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW -+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0 -2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W -kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4 -RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG -ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5 -S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw -MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV -BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B -3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY -tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ -Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 -VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT -79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 -c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT -Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l -c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee -UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE -Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd -BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G -A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF -Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO -VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 -ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs -8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR -iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze -Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ -XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ -qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB -VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB -L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG -jjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE----- \ No newline at end of file diff --git a/paylibs/src/main/res/raw/star_yomabank_net.crt b/paylibs/src/main/res/raw/star_yomabank_net.crt deleted file mode 100644 index 8cc5f20..0000000 --- a/paylibs/src/main/res/raw/star_yomabank_net.crt +++ /dev/null @@ -1,113 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIG7zCCBNegAwIBAgIQX5oO6r1lg7MfeJb1v5aSwDANBgkqhkiG9w0BAQwFADBL -MQswCQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NT -TCBSU0EgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTIzMDkyOTAwMDAwMFoXDTI0 -MDkyODIzNTk1OVowGTEXMBUGA1UEAwwOKi55b21hYmFuay5uZXQwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCAqUfzHF/N4m3xxNr/noBpg9s8edFWghYn -sYEAOQmMD1tVsjFavds9eAO5JBhL2+yQ8dxd5P5yqAHuQmEcBpw0YdPEAsKJbrqG -4VXU40q1DbQipnHiTrQx0RG5aRFsP6OTrRU0MnQMaFGTSgMKYKg0YM24si/JyyiX -eJXpEIXzt10NWpQfJ7T3RrzkkEHsfPzYmiBecUVmCu2Mb0/jym+Hr5eBvEf/mmhR -re/0hofitx9OTwmZt85uPVwpP6miOLpby+/46v7k8PSZ7qJhCv34AnnldY3uA+Ws -ld+Ria5Kpt6dHiBPzer/8HNd2Xkdpo2Ny3jq8N9vo0UJ2H7rWgy7AgMBAAGjggL/ -MIIC+zAfBgNVHSMEGDAWgBTI2XhootkZaNU9ct5fCj7ctYaGpjAdBgNVHQ4EFgQU -Iu3iisKOIvooYnMumJGFqW4LTEkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQC -MAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkGA1UdIARCMEAwNAYL -KwYBBAGyMQECAk4wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9zZWN0aWdvLmNvbS9D -UFMwCAYGZ4EMAQIBMIGIBggrBgEFBQcBAQR8MHowSwYIKwYBBQUHMAKGP2h0dHA6 -Ly96ZXJvc3NsLmNydC5zZWN0aWdvLmNvbS9aZXJvU1NMUlNBRG9tYWluU2VjdXJl -U2l0ZUNBLmNydDArBggrBgEFBQcwAYYfaHR0cDovL3plcm9zc2wub2NzcC5zZWN0 -aWdvLmNvbTAnBgNVHREEIDAegg4qLnlvbWFiYW5rLm5ldIIMeW9tYWJhbmsubmV0 -MIIBewYKKwYBBAHWeQIEAgSCAWsEggFnAWUAdQB2/4g/Crb7lVHCYcz1h7o0tKTN -uyncaEIKn+ZnTFo6dAAAAYrfFnGoAAAEAwBGMEQCID23iGjCqSL5njxZ4dhGR6xC -lr6Wrn//LYaRhG3luDIHAiBLPvTSOFO9fz8LpL/QZ+49xE5WbvFYBPW6pVcXYvqA -/gB2ANq2v2s/tbYin5vCu1xr6HCRcWy7UYSFNL2kPTBI1/urAAABit8WcgQAAAQD -AEcwRQIgANdbNT0g+H+IUw2MxicwxabC/rsHw9/QwF6KRQW1bKMCIQCHPlGpPhow -CiXAGeBXMt/of2hI0ePkT+2Wq70vzYLa+QB0AO7N0GTV2xrOxVy3nbTNE6Iyh0Z8 -vOzew1FIWUZxH7WbAAABit8WcdcAAAQDAEUwQwIfQypm/cC8h3QPtMaBJC5m72O0 -rY6wDYEhQQQ2vlcehQIgV4tV4sv8dlrkMjMVXDhKAutb9neYewzaYKYgOAD95C8w -DQYJKoZIhvcNAQEMBQADggIBAAhDQXNDUdbWDhRVIeFnJuueUrpq6IbG3S+l8tt4 -qxUEa3xqhUsujry4yNrJvY+rCSjS6QxHytctmLVaFwvKgELNUXqPtEBTYIw/O/v/ -+RZnLF2wG4rdD7BzhyBGQZsbcY1nxJlJ1BB8m0+b8aNQesL731ARbn1Tf9Tl46jZ -C9pDE5+KbJHJRy9yE/cyik+W9ndUBgEHRDwtZaMsQVHTstg2pBg2Sw9XvDraYMQI -Qhr2R9hjMHJaZd9pnjXfDkvA2MZvhjGEEHOvPv0k/r+vf4p2eiHhzYZ0Bv0atMVe -RG1sFV7jPvgsi/XhWQgAPUPk8nh/zyImgzVfoiHi4hZkGE2Kv0Gri+lxGyFzZ3rk -SNkcgMRFYoLI993ypLNIkcWTs8k4w5RjbQXYml7lEZHS1GjBcc4yaxX25Viyto74 -vVwSjoKj/PrtT6gVOcub1HrXEaWauJgPaeHNcyT7ZpQ0s3PlnLjrLe5YSrlX1Aji -acMq7vQKtGG/6NSShCyIcKAQrFy90tmBV7qs8dwuPh/sUeBPT0fkFQQ50GIswMZU -10f/D0GAxEJtdFdp8zHdYmuz0CfTTao6EOKsszQVdde1GRlo4bWNifjtQPpulhai -dVmhitRmgLHWz2dIgD0kxM5elRsL1U35bumg9ldSacBCthJYvzeHZkPsa7+g2xZD -Mrq3 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw -MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE -ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT -aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj -4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs -JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4 -t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF -WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc -RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U -gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD -hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt -iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF -x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W -2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp -wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA -FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c -tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE -FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC -TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1 -c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG -CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu -Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw -Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV -ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4 -YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA -Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ -qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd -4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW -+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0 -2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W -kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4 -RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG -ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5 -S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw -MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV -BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU -aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy -dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B -3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY -tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/ -Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2 -VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT -79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6 -c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT -Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l -c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee -UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE -Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd -BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G -A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF -Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO -VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3 -ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs -8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR -iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze -Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ -XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/ -qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB -VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB -L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG -jjxDah2nGN59PRbxYvnKkKj9 ------END CERTIFICATE-----