diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/model/request/napm/v2/PONativeAlternativePaymentAuthorizationDetailsRequest.kt b/sdk/src/main/kotlin/com/processout/sdk/api/model/request/napm/v2/PONativeAlternativePaymentAuthorizationDetailsRequest.kt deleted file mode 100644 index f15d95d05..000000000 --- a/sdk/src/main/kotlin/com/processout/sdk/api/model/request/napm/v2/PONativeAlternativePaymentAuthorizationDetailsRequest.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.processout.sdk.api.model.request.napm.v2 - -import android.os.Parcelable -import com.processout.sdk.core.annotation.ProcessOutInternalApi -import kotlinx.parcelize.Parcelize - -/** - * Request parameters for native alternative payment authorization details. - * - * @param[invoiceId] Invoice identifier. - * @param[gatewayConfigurationId] Gateway configuration identifier. - */ -/** @suppress */ -@ProcessOutInternalApi -@Parcelize -data class PONativeAlternativePaymentAuthorizationDetailsRequest( - val invoiceId: String, - val gatewayConfigurationId: String -) : Parcelable diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentAuthorizationResponse.kt b/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentAuthorizationResponse.kt index 0066bbab1..b6e44365b 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentAuthorizationResponse.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentAuthorizationResponse.kt @@ -1,6 +1,8 @@ package com.processout.sdk.api.model.response.napm.v2 +import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentAuthorizationResponse.Invoice import com.processout.sdk.core.annotation.ProcessOutInternalApi +import com.squareup.moshi.Json import com.squareup.moshi.JsonClass /** @@ -16,8 +18,8 @@ import com.squareup.moshi.JsonClass @ProcessOutInternalApi data class PONativeAlternativePaymentAuthorizationResponse( val state: PONativeAlternativePaymentState, -// val invoice: Invoice, // TODO(v2): uncomment -// val paymentMethod: PONativeAlternativePaymentMethodDetails, // TODO(v2): uncomment + val invoice: Invoice, + val paymentMethod: PONativeAlternativePaymentMethodDetails, val elements: List?, val redirect: PONativeAlternativePaymentRedirect? ) { @@ -38,9 +40,9 @@ data class PONativeAlternativePaymentAuthorizationResponse( @JsonClass(generateAdapter = true) internal data class NativeAlternativePaymentAuthorizationResponseBody( val state: PONativeAlternativePaymentState, -// val invoice: Invoice, // TODO(v2): uncomment -// @Json(name = "payment_method") -// val paymentMethod: PONativeAlternativePaymentMethodDetails, // TODO(v2): uncomment + val invoice: Invoice, + @Json(name = "payment_method") + val paymentMethod: PONativeAlternativePaymentMethodDetails, val elements: List?, val redirect: PONativeAlternativePaymentRedirect? ) diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentTokenizationResponse.kt b/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentTokenizationResponse.kt index 4b99a844d..7b2c662ba 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentTokenizationResponse.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/model/response/napm/v2/PONativeAlternativePaymentTokenizationResponse.kt @@ -1,6 +1,7 @@ package com.processout.sdk.api.model.response.napm.v2 import com.processout.sdk.core.annotation.ProcessOutInternalApi +import com.squareup.moshi.Json import com.squareup.moshi.JsonClass /** @@ -15,7 +16,7 @@ import com.squareup.moshi.JsonClass @ProcessOutInternalApi data class PONativeAlternativePaymentTokenizationResponse( val state: PONativeAlternativePaymentState, -// val paymentMethod: PONativeAlternativePaymentMethodDetails, // TODO(v2): uncomment + val paymentMethod: PONativeAlternativePaymentMethodDetails, val elements: List?, val redirect: PONativeAlternativePaymentRedirect? ) @@ -23,8 +24,8 @@ data class PONativeAlternativePaymentTokenizationResponse( @JsonClass(generateAdapter = true) internal data class NativeAlternativePaymentTokenizationResponseBody( val state: PONativeAlternativePaymentState, -// @Json(name = "payment_method") -// val paymentMethod: PONativeAlternativePaymentMethodDetails, // TODO(v2): uncomment + @Json(name = "payment_method") + val paymentMethod: PONativeAlternativePaymentMethodDetails, val elements: List?, val redirect: PONativeAlternativePaymentRedirect? ) diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/network/CustomerTokensApi.kt b/sdk/src/main/kotlin/com/processout/sdk/api/network/CustomerTokensApi.kt index 2aa27853e..058683caa 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/network/CustomerTokensApi.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/network/CustomerTokensApi.kt @@ -20,7 +20,7 @@ internal interface CustomerTokensApi { @Body request: AssignCustomerTokenRequestWithDeviceData ): Response - @POST("/customers/{customer_id}/tokens/{token_id}/tokenize") + @POST("/customers/{customer_id}/apm-tokens/{token_id}/tokenize") suspend fun tokenize( @Path("customer_id") customerId: String, @Path("token_id") tokenId: String, diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/network/InvoicesApi.kt b/sdk/src/main/kotlin/com/processout/sdk/api/network/InvoicesApi.kt index 5fc41173f..d59f738e7 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/network/InvoicesApi.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/network/InvoicesApi.kt @@ -26,12 +26,6 @@ internal interface InvoicesApi { @Body request: NativeAlternativePaymentRequestBody ): Response - @GET("/invoices/{invoiceId}/apm-payment/{gatewayConfigurationId}") - suspend fun nativeAlternativePayment( - @Path("invoiceId") invoiceId: String, - @Path("gatewayConfigurationId") gatewayConfigurationId: String - ): Response - @POST("/invoices/{id}/native-payment") suspend fun initiatePayment( @Path("id") invoiceId: String, diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultCustomerTokensRepository.kt b/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultCustomerTokensRepository.kt index d026b16a4..5114dae7b 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultCustomerTokensRepository.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultCustomerTokensRepository.kt @@ -94,7 +94,7 @@ internal class DefaultCustomerTokensRepository( private fun NativeAlternativePaymentTokenizationResponseBody.toModel() = PONativeAlternativePaymentTokenizationResponse( state = state, -// paymentMethod = paymentMethod, // TODO(v2): uncomment + paymentMethod = paymentMethod, elements = elements?.map { when (it) { is NativeAlternativePaymentElement.Form -> diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultInvoicesRepository.kt b/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultInvoicesRepository.kt index daea990e1..4500d66a9 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultInvoicesRepository.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/repository/DefaultInvoicesRepository.kt @@ -3,7 +3,6 @@ package com.processout.sdk.api.repository import com.processout.sdk.api.model.request.* import com.processout.sdk.api.model.request.napm.v2.NativeAlternativePaymentRequestBody import com.processout.sdk.api.model.request.napm.v2.NativeAlternativePaymentRequestBody.SubmitData -import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationDetailsRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentSubmitData.Parameter import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentSubmitData.Parameter.Value @@ -44,15 +43,6 @@ internal class DefaultInvoicesRepository( ) }.map { it.toModel() } - override suspend fun nativeAlternativePayment( - request: PONativeAlternativePaymentAuthorizationDetailsRequest - ) = apiCall { - api.nativeAlternativePayment( - invoiceId = request.invoiceId, - gatewayConfigurationId = request.gatewayConfigurationId - ) - }.map { it.toModel() } - override suspend fun initiatePayment( request: PONativeAlternativePaymentMethodRequest ) = apiCall { @@ -172,8 +162,8 @@ internal class DefaultInvoicesRepository( private fun NativeAlternativePaymentAuthorizationResponseBody.toModel() = PONativeAlternativePaymentAuthorizationResponse( state = state, -// invoice = invoice, // TODO(v2): uncomment -// paymentMethod = paymentMethod, // TODO(v2): uncomment + invoice = invoice, + paymentMethod = paymentMethod, elements = elements?.map { when (it) { is NativeAlternativePaymentElement.Form -> diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/repository/InvoicesRepository.kt b/sdk/src/main/kotlin/com/processout/sdk/api/repository/InvoicesRepository.kt index 4bddbec24..64f931cfe 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/repository/InvoicesRepository.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/repository/InvoicesRepository.kt @@ -4,7 +4,6 @@ import com.processout.sdk.api.model.request.POCreateInvoiceRequest import com.processout.sdk.api.model.request.POInvoiceAuthorizationRequest import com.processout.sdk.api.model.request.POInvoiceRequest import com.processout.sdk.api.model.request.PONativeAlternativePaymentMethodRequest -import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationDetailsRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationRequest import com.processout.sdk.api.model.response.* import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentAuthorizationResponse @@ -22,10 +21,6 @@ internal interface InvoicesRepository { request: PONativeAlternativePaymentAuthorizationRequest ): ProcessOutResult - suspend fun nativeAlternativePayment( - request: PONativeAlternativePaymentAuthorizationDetailsRequest - ): ProcessOutResult - suspend fun initiatePayment( request: PONativeAlternativePaymentMethodRequest ): ProcessOutResult diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/service/DefaultInvoicesService.kt b/sdk/src/main/kotlin/com/processout/sdk/api/service/DefaultInvoicesService.kt index b733456e2..9a880b3c8 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/service/DefaultInvoicesService.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/service/DefaultInvoicesService.kt @@ -6,7 +6,6 @@ import com.processout.sdk.api.model.request.POCreateInvoiceRequest import com.processout.sdk.api.model.request.POInvoiceAuthorizationRequest import com.processout.sdk.api.model.request.POInvoiceRequest import com.processout.sdk.api.model.request.PONativeAlternativePaymentMethodRequest -import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationDetailsRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationRequest import com.processout.sdk.api.model.response.POInvoice import com.processout.sdk.api.model.response.PONativeAlternativePaymentMethod @@ -170,11 +169,6 @@ internal class DefaultInvoicesService( ): ProcessOutResult = repository.authorizeInvoice(request) - override suspend fun nativeAlternativePayment( - request: PONativeAlternativePaymentAuthorizationDetailsRequest - ): ProcessOutResult = - repository.nativeAlternativePayment(request) - override suspend fun initiatePayment( request: PONativeAlternativePaymentMethodRequest ): ProcessOutResult = diff --git a/sdk/src/main/kotlin/com/processout/sdk/api/service/POInvoicesService.kt b/sdk/src/main/kotlin/com/processout/sdk/api/service/POInvoicesService.kt index b40c848f7..9a3134220 100644 --- a/sdk/src/main/kotlin/com/processout/sdk/api/service/POInvoicesService.kt +++ b/sdk/src/main/kotlin/com/processout/sdk/api/service/POInvoicesService.kt @@ -4,7 +4,6 @@ import com.processout.sdk.api.model.request.POCreateInvoiceRequest import com.processout.sdk.api.model.request.POInvoiceAuthorizationRequest import com.processout.sdk.api.model.request.POInvoiceRequest import com.processout.sdk.api.model.request.PONativeAlternativePaymentMethodRequest -import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationDetailsRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationRequest import com.processout.sdk.api.model.response.POInvoice import com.processout.sdk.api.model.response.PONativeAlternativePaymentMethod @@ -75,15 +74,6 @@ interface POInvoicesService { request: PONativeAlternativePaymentAuthorizationRequest ): ProcessOutResult - /** - * Fetch native alternative payment details. - */ - /** @suppress */ - @ProcessOutInternalApi - suspend fun nativeAlternativePayment( - request: PONativeAlternativePaymentAuthorizationDetailsRequest - ): ProcessOutResult - /** * Initiates native alternative payment with the given request. */ diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/napm/PONativeAlternativePaymentConfiguration.kt b/ui/src/main/kotlin/com/processout/sdk/ui/napm/PONativeAlternativePaymentConfiguration.kt index ad4195774..c3652e935 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/napm/PONativeAlternativePaymentConfiguration.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/napm/PONativeAlternativePaymentConfiguration.kt @@ -313,7 +313,7 @@ data class PONativeAlternativePaymentConfiguration( @Parcelize data class Style( val title: POTextStyle? = null, - val label: POTextStyle? = null, + val label: POTextStyle? = null, // TODO(v2): remove, not used val field: POFieldStyle? = null, val codeField: POFieldStyle? = null, val radioField: PORadioFieldStyle? = null, @@ -323,7 +323,7 @@ data class PONativeAlternativePaymentConfiguration( val dialog: PODialogStyle? = null, val background: POBackgroundStyle? = null, val message: POTextStyle? = null, - val errorMessage: POTextStyle? = null, + val errorMessage: POTextStyle? = null, // TODO(v2): remove, not used val errorMessageBox: POMessageBoxStyle? = null, val successMessage: POTextStyle? = null, @DrawableRes @@ -346,14 +346,12 @@ data class PONativeAlternativePaymentConfiguration( * @param[field] Field style. * @param[codeField] Code field style. * @param[radioButton] Radio button style. __Deprecated__: not used. - * @param[checkbox] Checkbox style. * @param[dropdownMenu] Dropdown menu style. * @param[actionsContainer] Style of action buttons and their container. * @param[dialog] Dialog style. * @param[background] Background style. * @param[message] Message style. * @param[errorMessage] Error message style. - * @param[errorMessageBox] Error message box style. * @param[successMessage] Success message style. * @param[successImageResId] Success image drawable resource ID. * @param[progressIndicatorColorResId] Color resource ID for progress indicator. @@ -368,14 +366,12 @@ data class PONativeAlternativePaymentConfiguration( field: POFieldStyle? = null, codeField: POFieldStyle? = null, radioButton: PORadioButtonStyle? = null, - checkbox: POCheckboxStyle? = null, dropdownMenu: PODropdownMenuStyle? = null, actionsContainer: POActionsContainerStyle? = null, dialog: PODialogStyle? = null, background: POBackgroundStyle? = null, message: POTextStyle? = null, errorMessage: POTextStyle? = null, - errorMessageBox: POMessageBoxStyle? = null, successMessage: POTextStyle? = null, @DrawableRes successImageResId: Int? = null, @@ -393,14 +389,14 @@ data class PONativeAlternativePaymentConfiguration( field = field, codeField = codeField, radioField = null, - checkbox = checkbox, + checkbox = null, dropdownMenu = dropdownMenu, actionsContainer = actionsContainer, dialog = dialog, background = background, message = message, errorMessage = errorMessage, - errorMessageBox = errorMessageBox, + errorMessageBox = null, successMessage = successMessage, successImageResId = successImageResId, progressIndicatorColorResId = progressIndicatorColorResId, diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractor.kt b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractor.kt index 39078855f..d29388af2 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractor.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractor.kt @@ -17,13 +17,13 @@ import coil.request.ImageRequest import coil.request.ImageResult import com.processout.sdk.R import com.processout.sdk.api.dispatcher.POEventDispatcher -import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationDetailsRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentAuthorizationRequest import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentSubmitData import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentSubmitData.Parameter.Companion.phoneNumber import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentSubmitData.Parameter.Companion.string import com.processout.sdk.api.model.request.napm.v2.PONativeAlternativePaymentTokenizationRequest import com.processout.sdk.api.model.response.napm.v2.* +import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentAuthorizationResponse.Invoice import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.CustomerInstruction import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form.Parameter @@ -157,14 +157,17 @@ internal class NativeAlternativePaymentInteractor( } private suspend fun fetchAuthorizationDetails(flow: Authorization) { - val request = PONativeAlternativePaymentAuthorizationDetailsRequest( + val request = PONativeAlternativePaymentAuthorizationRequest( invoiceId = flow.invoiceId, gatewayConfigurationId = flow.gatewayConfigurationId ) - invoicesService.nativeAlternativePayment(request) + invoicesService.authorize(request) .onSuccess { response -> handlePaymentState( - stateValue = initUserInputStateValue(), + stateValue = initUserInputStateValue( + paymentMethod = response.paymentMethod, + invoice = response.invoice + ), paymentState = response.state, elements = response.elements ) @@ -183,7 +186,10 @@ internal class NativeAlternativePaymentInteractor( customerTokensService.tokenize(request) .onSuccess { response -> handlePaymentState( - stateValue = initUserInputStateValue(), + stateValue = initUserInputStateValue( + paymentMethod = response.paymentMethod, + invoice = null + ), paymentState = response.state, elements = response.elements ) @@ -216,7 +222,12 @@ internal class NativeAlternativePaymentInteractor( handleFormParameters(stateValue, parameters) } - private fun initUserInputStateValue() = UserInputStateValue( + private fun initUserInputStateValue( + paymentMethod: PONativeAlternativePaymentMethodDetails, + invoice: Invoice?, + ) = UserInputStateValue( + paymentMethod = paymentMethod, + invoice = invoice, fields = emptyList(), focusedFieldId = null, primaryActionId = ActionId.SUBMIT, diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractorState.kt b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractorState.kt index ec1b6d06a..fd066503c 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractorState.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentInteractorState.kt @@ -2,8 +2,10 @@ package com.processout.sdk.ui.napm.v2 import android.graphics.Bitmap import com.processout.sdk.api.model.response.POBarcode.BarcodeType +import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentAuthorizationResponse.Invoice import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form.Parameter import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form.Parameter.* +import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentMethodDetails import com.processout.sdk.ui.napm.v2.NativeAlternativePaymentInteractorState.* import com.processout.sdk.ui.shared.state.FieldValue import kotlinx.coroutines.flow.MutableStateFlow @@ -39,8 +41,8 @@ internal sealed interface NativeAlternativePaymentInteractorState { //endregion data class UserInputStateValue( -// val invoice: Invoice, // TODO(v2) -// val gateway: Gateway, // TODO(v2) + val paymentMethod: PONativeAlternativePaymentMethodDetails, + val invoice: Invoice?, val fields: List, val focusedFieldId: String?, val primaryActionId: String, diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentScreen.kt b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentScreen.kt index 5df874a64..24818bc48 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentScreen.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentScreen.kt @@ -709,7 +709,6 @@ internal object NativeAlternativePaymentScreen { @Immutable data class Style( val title: POText.Style, - val label: POText.Style, val field: POField.Style, val codeField: POField.Style, val radioField: PORadioField.Style, @@ -720,7 +719,6 @@ internal object NativeAlternativePaymentScreen { val normalBackgroundColor: Color, val successBackgroundColor: Color, val message: AndroidTextView.Style, - val errorMessage: POText.Style, val errorMessageBox: POMessageBox.Style, val successMessage: POText.Style, @DrawableRes val successImageResId: Int, @@ -736,9 +734,6 @@ internal object NativeAlternativePaymentScreen { title = custom?.title?.let { POText.custom(style = it) } ?: POText.title, - label = custom?.label?.let { - POText.custom(style = it) - } ?: POText.label1, field = custom?.field?.let { POField.custom(style = it) } ?: POField.default2, @@ -773,9 +768,6 @@ internal object NativeAlternativePaymentScreen { controlsTintColor = controlsTintColor ?: colors.text.primary ) } ?: AndroidTextView.default, - errorMessage = custom?.errorMessage?.let { - POText.custom(style = it) - } ?: POText.errorLabel, errorMessageBox = custom?.errorMessageBox?.let { POMessageBox.custom(style = it) } ?: POMessageBox.error2, diff --git a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentViewModel.kt b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentViewModel.kt index 5b852d98a..b14b2b551 100644 --- a/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentViewModel.kt +++ b/ui/src/main/kotlin/com/processout/sdk/ui/napm/v2/NativeAlternativePaymentViewModel.kt @@ -11,7 +11,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import com.processout.sdk.R import com.processout.sdk.api.ProcessOut -import com.processout.sdk.api.model.response.PONativeAlternativePaymentMethodTransactionDetails.Invoice +import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentAuthorizationResponse.Invoice import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form.Parameter import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form.Parameter.* import com.processout.sdk.api.model.response.napm.v2.PONativeAlternativePaymentElement.Form.Parameter.Otp.Subtype @@ -118,14 +118,12 @@ internal class NativeAlternativePaymentViewModel private constructor( private fun UserInput.map() = with(value) { NativeAlternativePaymentViewModelState.UserInput( -// title = configuration.title ?: app.getString(R.string.po_native_apm_title_format, gateway.displayName), - title = String(), // TODO(v2): map from gateway + title = configuration.title ?: app.getString(R.string.po_native_apm_title_format, paymentMethod.displayName), fields = fields.map(), focusedFieldId = focusedFieldId, primaryAction = POActionState( id = primaryActionId, -// text = configuration.submitButton.text ?: invoice.formatPrimaryActionText(), - text = String(), // TODO(v2): map from invoice + text = configuration.submitButton.text ?: invoice.formatPrimaryActionText(), primary = true, enabled = submitAllowed, loading = submitting, @@ -458,15 +456,19 @@ internal class NativeAlternativePaymentViewModel private constructor( Unknown -> KeyboardOptions.Default } - private fun Invoice.formatPrimaryActionText() = - try { - val price = NumberFormat.getCurrencyInstance().apply { - currency = Currency.getInstance(currencyCode) - }.format(amount.toDouble()) + private fun Invoice?.formatPrimaryActionText(): String { + if (this == null) { + return app.getString(R.string.po_native_apm_submit_button_text) + } + return try { + val formatter = NumberFormat.getCurrencyInstance() + formatter.currency = Currency.getInstance(currency) + val price = formatter.format(amount.toDouble()) app.getString(R.string.po_native_apm_submit_button_text_format, price) } catch (_: Exception) { app.getString(R.string.po_native_apm_submit_button_text) } + } private fun CancelButton.toActionState( id: String,