diff --git a/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayFragment.kt b/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayFragment.kt index 9d5e8c8..1a03351 100644 --- a/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayFragment.kt +++ b/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayFragment.kt @@ -50,13 +50,18 @@ class SamsungPayFragment : Fragment() { SamsungPayManager.initiate( requireActivity(), paymentRequest, + onCanceled = { + MoyasarAppContainer.viewModel.notifyPaymentResult(PaymentResult.Canceled) + }, authorizePayment = { token, orderNumber -> if (token != null && orderNumber != null) { progressBar.show() SamsungPayManager.authorizePayment(token, orderNumber) + } else { + MoyasarAppContainer.viewModel.notifyPaymentResult( + PaymentResult.Failed(Throwable("Something went wrong.")) + ) } - else MoyasarAppContainer.viewModel.notifyPaymentResult(PaymentResult.Failed( - Throwable("Something went wrong."))) } ) diff --git a/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayManager.kt b/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayManager.kt index 9b1a9d3..09b02da 100644 --- a/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayManager.kt +++ b/sdk/src/main/java/com/moyasar/android/sdk/samsungpay/presentation/SamsungPayManager.kt @@ -56,6 +56,7 @@ object SamsungPayManager { fun initiate( context: Context, paymentRequest: PaymentRequest, + onCanceled: () -> Unit = {}, authorizePayment: (String?, String?) -> Unit ) { val samsungPayConfig = paymentRequest.samsungPay @@ -76,6 +77,7 @@ object SamsungPayManager { paymentRequest, context, samsungPay, + onCanceled, authorizePayment ) } @@ -173,6 +175,7 @@ object SamsungPayManager { paymentRequest: PaymentRequest, context: Context, samsungPay: SamsungPay, + onCanceled: () -> Unit, authorizePayment: (String?, String?) -> Unit ) { val customSheetPaymentInfo = makeCustomSheetPaymentInfo(paymentRequest) @@ -224,6 +227,11 @@ object SamsungPayManager { } override fun onFailure(errorCode: Int, errorData: Bundle?) { + if (errorCode == ERROR_USER_CANCELED) { + MoyasarLogger.log("MoyasarSDK", "Samsung Pay canceled by user") + onCanceled() + return + } handleOnFail(errorData ?: Bundle(), samsungPay, context, errorCode) authorizePayment(null, null) } diff --git a/sdkdriver/src/main/java/com/moyasar/android/sdkdriver/CheckoutViewModel.kt b/sdkdriver/src/main/java/com/moyasar/android/sdkdriver/CheckoutViewModel.kt index cd1adac..1d01e58 100644 --- a/sdkdriver/src/main/java/com/moyasar/android/sdkdriver/CheckoutViewModel.kt +++ b/sdkdriver/src/main/java/com/moyasar/android/sdkdriver/CheckoutViewModel.kt @@ -10,6 +10,7 @@ import com.moyasar.android.sdk.core.extensions.default import com.moyasar.android.sdk.core.data.response.PaymentResponse import com.moyasar.android.sdk.creditcard.data.models.CreditCardNetwork import com.moyasar.android.sdk.creditcard.data.models.request.PaymentRequest +import com.moyasar.android.sdk.creditcard.data.models.request.PaymentSplit import com.moyasar.android.sdk.stcpay.presentation.view.fragments.EnterMobileNumberFragment import com.moyasar.android.sdk.creditcard.presentation.view.fragments.PaymentFragment import com.moyasar.android.sdk.samsungpay.data.SamsungPayConfig