Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,17 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
Expand All @@ -32,6 +37,7 @@ import com.google.android.gms_mock.ui.theme.GoogleWalletMockTheme
class MainActivity : ComponentActivity() {
companion object {
private const val TAG = "GoogleWalletMock"
internal const val DEFAULT_SIMULATED_DATA = "9e4eeb4e-71af-4024-b3ff-05c7a2d4460d"
}

// Variável para controlar o estado do alerta
Expand All @@ -40,6 +46,9 @@ class MainActivity : ComponentActivity() {
// Variável para controlar o estado do resultado na tela
private var resultState by mutableStateOf(ResultState())

// Estado do input de dados simulados
private var simulatedDataInput by mutableStateOf(DEFAULT_SIMULATED_DATA)

data class AlertState(
val show: Boolean = false,
val title: String = "",
Expand Down Expand Up @@ -165,7 +174,9 @@ class MainActivity : ComponentActivity() {
GoogleWalletMockTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
App2AppSimulator(
onSimulateClick = { simulateApp2App() },
simulatedDataInput = simulatedDataInput,
onSimulatedDataChange = { simulatedDataInput = it },
onSimulateClick = { simulateApp2App(simulatedDataInput) },
onClearClick = { clearResults() },
resultState = resultState,
modifier = Modifier.padding(innerPadding)
Expand Down Expand Up @@ -199,11 +210,8 @@ class MainActivity : ComponentActivity() {
}
}

private fun simulateApp2App() {
private fun simulateApp2App(simulatedData: String) {
try {
// Gerar dados simulados com tokenReferenceId
val simulatedData = "9e4eeb4e-71af-4024-b3ff-05c7a2d4460d"

Log.d(TAG, "📋 [GOOGLE] Simulated Data: $simulatedData")

val intent = Intent(BuildConfig.TARGET_APP_ACTION).apply {
Expand Down Expand Up @@ -238,6 +246,8 @@ class MainActivity : ComponentActivity() {

@Composable
fun App2AppSimulator(
simulatedDataInput: String,
onSimulatedDataChange: (String) -> Unit,
onSimulateClick: () -> Unit,
onClearClick: () -> Unit,
resultState: MainActivity.ResultState,
Expand All @@ -256,6 +266,27 @@ fun App2AppSimulator(
modifier = Modifier.padding(bottom = 32.dp)
)

TextField(
value = simulatedDataInput,
onValueChange = onSimulatedDataChange,
label = { Text("Token Reference ID") },
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
singleLine = true,
textStyle = MaterialTheme.typography.bodyMedium,
trailingIcon = {
if (simulatedDataInput.isNotEmpty()) {
IconButton(onClick = { onSimulatedDataChange("") }) {
Icon(
imageVector = Icons.Default.Close,
contentDescription = "Limpar"
)
}
}
}
)

Button(
onClick = onSimulateClick
) {
Expand Down Expand Up @@ -393,6 +424,8 @@ fun ResultDisplay(
fun App2AppSimulatorPreview() {
GoogleWalletMockTheme {
App2AppSimulator(
simulatedDataInput = MainActivity.DEFAULT_SIMULATED_DATA,
onSimulatedDataChange = { },
onSimulateClick = { },
onClearClick = { },
resultState = MainActivity.ResultState()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,17 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TextField
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
Expand All @@ -32,6 +37,7 @@ import com.samsung.android.spay_mock.ui.theme.SamsungwalletappmockTheme
class MainActivity : ComponentActivity() {
companion object {
private const val TAG = "SamsungWalletMock"
internal const val DEFAULT_SIMULATED_DATA = "9e4eeb4e-71af-4024-b3ff-05c7a2d4460d"
}

// Estado de alerta
Expand All @@ -40,6 +46,9 @@ class MainActivity : ComponentActivity() {
// Estado de resultado Samsung
private var samsungResultState by mutableStateOf(SamsungResultState())

// Estado do input de dados simulados
private var simulatedDataInput by mutableStateOf(DEFAULT_SIMULATED_DATA)

data class AlertState(
val show: Boolean = false,
val title: String = "",
Expand Down Expand Up @@ -154,17 +163,9 @@ class MainActivity : ComponentActivity() {
return message.toString()
}

private fun simulateSamsungApp2App() {
private fun simulateSamsungApp2App(simulatedData: String) {
try {
// Gerar dados simulados (Mastercard/Visa)
val simulatedJson = generateSamsungSimulatedData()
val simulatedData = android.util.Base64.encodeToString(
simulatedJson.toByteArray(Charsets.UTF_8),
android.util.Base64.NO_WRAP
)

Log.d(TAG, "📋 [SAMSUNG] JSON gerado: $simulatedJson")
Log.d(TAG, "📋 [SAMSUNG] Base64 gerado: $simulatedData")
Log.d(TAG, "📋 [SAMSUNG] Simulated Data: $simulatedData")

val intent = Intent(BuildConfig.SAMSUNG_TARGET_APP_ACTION).apply {
setPackage(BuildConfig.SAMSUNG_TARGET_APP_PACKAGE)
Expand Down Expand Up @@ -193,21 +194,6 @@ class MainActivity : ComponentActivity() {
}
}

private fun generateSamsungSimulatedData(): String {

val mastercardData = """
{
"paymentAppProviderId": "MASTERCARD_PROVIDER_123465",
"paymentAppInstanceId": "INSTANCE_1234",
"tokenUniqueReference": "TOKEN_1758556574675_98397",
"accountPanSuffix": "1234",
"accountExpiry": "12/25"
}
""".trimIndent()

return mastercardData
}

private fun clearResults() {
samsungResultState = SamsungResultState()
Log.d(TAG, "🧹 [SAMSUNG] Resultados limpos")
Expand All @@ -220,7 +206,9 @@ class MainActivity : ComponentActivity() {
SamsungwalletappmockTheme {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
SamsungApp2AppSimulator(
onSamsungSimulateClick = { simulateSamsungApp2App() },
simulatedDataInput = simulatedDataInput,
onSimulatedDataChange = { simulatedDataInput = it },
onSamsungSimulateClick = { simulateSamsungApp2App(simulatedDataInput) },
onClearClick = { clearResults() },
samsungResultState = samsungResultState,
modifier = Modifier.padding(innerPadding)
Expand All @@ -246,6 +234,8 @@ class MainActivity : ComponentActivity() {

@Composable
fun SamsungApp2AppSimulator(
simulatedDataInput: String,
onSimulatedDataChange: (String) -> Unit,
onSamsungSimulateClick: () -> Unit,
onClearClick: () -> Unit,
samsungResultState: MainActivity.SamsungResultState,
Expand All @@ -264,6 +254,27 @@ fun SamsungApp2AppSimulator(
modifier = Modifier.padding(bottom = 24.dp)
)

TextField(
value = simulatedDataInput,
onValueChange = onSimulatedDataChange,
label = { Text("Token Reference ID") },
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 16.dp),
singleLine = true,
textStyle = MaterialTheme.typography.bodyMedium,
trailingIcon = {
if (simulatedDataInput.isNotEmpty()) {
IconButton(onClick = { onSimulatedDataChange("") }) {
Icon(
imageVector = Icons.Default.Close,
contentDescription = "Limpar"
)
}
}
}
)

Button(
onClick = onSamsungSimulateClick,
colors = androidx.compose.material3.ButtonDefaults.buttonColors(
Expand Down Expand Up @@ -412,6 +423,8 @@ fun SamsungResultDisplay(
fun SamsungApp2AppSimulatorPreview() {
SamsungwalletappmockTheme {
SamsungApp2AppSimulator(
simulatedDataInput = MainActivity.DEFAULT_SIMULATED_DATA,
onSimulatedDataChange = { },
onSamsungSimulateClick = { },
onClearClick = { },
samsungResultState = MainActivity.SamsungResultState()
Expand Down