From f070ad1c109c1f3f51b31d9eb19a1f9eb16ce099 Mon Sep 17 00:00:00 2001 From: kizzy Date: Thu, 11 Jun 2026 15:41:30 +0700 Subject: [PATCH] MPU still in progress only left preauth test cases --- .../ui/sending_to_host/SendingToHostRoute.kt | 24 ++++++--- .../ui/settlement/SettlementViewModel.kt | 1 + .../utsmyanmar/paylibs/network/ISOSocket.java | 51 ++++--------------- .../paylibs/utils/iso_utils/BitmapConfig.java | 2 +- .../paylibs/utils/params/Params.java | 1 + 5 files changed, 28 insertions(+), 51 deletions(-) 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 5c8836e..11627a3 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 @@ -16,6 +16,7 @@ import androidx.compose.runtime.collectAsState import com.mob.utsmyanmar.model.TransactionStatus import com.mob.utsmyanmar.ui.settlement.SettlementViewModel import com.utsmyanmar.paylibs.utils.iso_utils.TransactionsType +import kotlinx.coroutines.channels.Channel private const val MOCK_HOST_DELAY_MS = 2000L @@ -34,19 +35,28 @@ 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) { + TransactionStatus.ON_ERROR, + TransactionStatus.ON_SUCCESS -> onNavigateTransactionResult() + else -> {} + } + } } else { LaunchedEffect(Unit) { transProcessViewModel.resetTransactionStatus() transProcessViewModel.startOnlineProcess() } - } - LaunchedEffect(transStatus) { + LaunchedEffect(transStatus) { when(transStatus) { TransResultStatus.SUCCESS -> { sharedViewModel.payDetail.value = transProcessViewModel.payDetailResult.value @@ -61,17 +71,15 @@ fun ProcessingRoute( TransResultStatus.REVERSAL_FAIL -> onNavigateMain() else -> {} } - } - - LaunchedEffect(settlementStatus.status) { - when(settlementStatus.status) { - TransactionStatus.ON_SUCCESS -> onNavigateTransactionResult() - else -> {} } } + + + + if(sharedViewModel.transactionsType.value == TransactionsType.SETTLEMENT) { ProcessingScreen(settlementStatus.processingState) } 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 2ddae78..7a6ac3a 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 @@ -232,6 +232,7 @@ class SettlementViewModel @Inject constructor( deleteTrans.clear() } + fun startSettlementProcess() { _uiState.update { it.copy(isLoading = true) diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/network/ISOSocket.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/network/ISOSocket.java index 1da0f01..7847ed3 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/network/ISOSocket.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/network/ISOSocket.java @@ -152,7 +152,7 @@ public class ISOSocket { private SSLSocketFactory getSSLSocketFactory() throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException, KeyManagementException { CertificateFactory cf = CertificateFactory.getInstance("X.509"); - InputStream caInput = context.getResources().openRawResource(R.raw.mpu_crt_2026); // this cert file stored in \app\src\main\res\raw folder path + InputStream caInput = context.getResources().openRawResource(R.raw.mob_uat); // this cert file stored in \app\src\main\res\raw folder path Certificate ca = cf.generateCertificate(caInput); caInput.close(); @@ -179,7 +179,7 @@ public class ISOSocket { private OkHttpClient getClient() throws CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException, KeyManagementException { CertificateFactory cf = CertificateFactory.getInstance("X.509"); - InputStream caInput = context.getResources().openRawResource(R.raw.mpu_crt_2026); // this cert file stored in \app\src\main\res\raw folder path + InputStream caInput = context.getResources().openRawResource(R.raw.mob_uat); // this cert file stored in \app\src\main\res\raw folder path Certificate ca = cf.generateCertificate(caInput); caInput.close(); @@ -402,6 +402,8 @@ public class ISOSocket { if (SystemParamsOperation.getInstance().isSslOn()) { try { + + // For MPU TrustManager[] trustAll = new TrustManager[]{new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) {} public void checkServerTrusted(X509Certificate[] chain, String authType) {} @@ -412,52 +414,17 @@ public class ISOSocket { SSLSocketFactory factory = ctx.getSocketFactory(); -// try (SSLSocket sslsock = (SSLSocket) factory.createSocket()) { -// -// sslsock.setEnabledProtocols(new String[]{"TLSv1.2"}); -//// while (!isSSLOnline(timeout,subscriber)) { -//// Thread.sleep(150); -//// subscriber.onError(new Throwable("java.net.SocketTimeoutException: connect timed out")); -//// } -// -// sslsock.setSoTimeout(60000); -// sslsock.connect(new InetSocketAddress(serverIP, serverPort), connectTimeout); -// -// sslsock.startHandshake(); -// -// SSLSession session = sslsock.getSession(); -// -// LogUtil.d(TAG, "SSL handshake success to " + serverIP + ":" + serverPort + "\n"); -// LogUtil.d(TAG, "TLS handshake success to " + serverIP + ":" + serverPort + "\n"); -// LogUtil.d(TAG, "TLS version: " + session.getProtocol() + "\n"); -// LogUtil.d(TAG,"Cipher suite: " + session.getCipherSuite() + "\n"); -// -// try { -// java.security.cert.Certificate[] chain = session.getPeerCertificates(); -// if (chain != null && chain.length > 0) { -// LogUtil.d(TAG,"Peer certificates:\n"); -// for (int i = 0; i < chain.length; i++) { -// X509Certificate x = (X509Certificate) chain[i]; -// LogUtil.d(TAG, " [" + i + "] Subject: " + x.getSubjectX500Principal().getName() + "\n"); -// LogUtil.d(TAG," Issuer: " + x.getIssuerX500Principal().getName() + "\n"); -// LogUtil.d(TAG," Valid: " + formatDate(x.getNotBefore()) + " - " + formatDate(x.getNotAfter()) + "\n"); -// } -// } -// } catch (Exception ignored) { } -// } -// OkHttpClient client = getClient(); + + sslSocket = (SSLSocket) factory.createSocket(); sslSocket.setEnabledProtocols(new String[]{"TLSv1.2"}); -// sslSocket.setEnabledProtocols(new String[]{"TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"}); -// while (!isSSLOnline(timeout,subscriber)) { -// Thread.sleep(150); -// subscriber.onError(new Throwable("java.net.SocketTimeoutException: connect timed out")); -// } + sslSocket.setSoTimeout(60000); sslSocket.connect(new InetSocketAddress(serverIP, serverPort), connectTimeout); + // MPU sslSocket.startHandshake(); SSLSession session = sslSocket.getSession(); @@ -512,7 +479,7 @@ public class ISOSocket { subscriber.onComplete(); - } catch ( IOException | + } catch (IOException | NoSuchAlgorithmException | KeyManagementException e) { e.printStackTrace(); subscriber.onError(e); diff --git a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/BitmapConfig.java b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/BitmapConfig.java index e2c52e8..94cb21c 100644 --- a/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/BitmapConfig.java +++ b/paylibs/src/main/java/com/utsmyanmar/paylibs/utils/iso_utils/BitmapConfig.java @@ -176,7 +176,7 @@ public class BitmapConfig { // 703C058008C08000 7038058028C00000 public static final String MPU_NEW_REFUND ="703C058008C08000"; - public static final String MPU_NEW_PRE_AUTH ="7020058020C08000"; + public static final String MPU_NEW_PRE_AUTH ="7020058020C09000"; 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 bccfaf8..0c767da 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 @@ -83,6 +83,7 @@ public class Params { payDetail.transNum = System.currentTimeMillis() / 1000; // need to add host logic in another place payDetail.setHostName("MPU"); +// payDetail.setHostName("MOB"); payDetail.setOriginalTransDate(SystemDateTime.getMMDD()+SystemDateTime.getYYYY());