Skip to content

Commit a859b91

Browse files
Merge pull request #17 from qburst/android-callack-fix
Android callback fix
2 parents 71d66a8 + 7c8a380 commit a859b91

File tree

3 files changed

+38
-11
lines changed

3 files changed

+38
-11
lines changed

composeApp/src/commonMain/kotlin/Cart.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ fun Cart(
115115
var paymentIntentParams = SetupParams(
116116
merchantDisplayName = "Qburst",
117117
amount=amount,
118-
paymentIntentClientSecret = "pi_1QWvPJKJ38Q1wp9dKqfcbrFo_secret_FW6Hs3y3xS83Ephjov9c9CTVA"
118+
paymentIntentClientSecret = "pi_1QXLRzKJ38Q1wp9dF6c5MrT1_secret_9EDiqf0eNa3rfEyE1U2RDMcQj"
119119
)
120120
CoroutineScope(Dispatchers.Default).launch {
121121
stripe.initPaymentSheet(

shared/src/androidMain/kotlin/InitializeStripe.kt

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import android.widget.Toast
33
import androidx.activity.ComponentActivity
44
import com.stripe.android.PaymentConfiguration
55
import com.stripe.android.Stripe
6+
import com.stripe.android.payments.paymentlauncher.PaymentLauncher
67
import com.stripe.android.paymentsheet.PaymentSheet
78
import com.stripe.android.paymentsheet.PaymentSheetResult
89
import model.InitialiseParams
@@ -16,6 +17,14 @@ class InitializeStripe {
1617
lateinit var paymentSheet: PaymentSheet
1718
var clientSecret = ""
1819

20+
private var paymentResultCallback:PaymentResult ? =null
21+
22+
23+
interface PaymentResult {
24+
fun onSuccess(status: Map<String, Any?>)
25+
fun onFailure(throwable: Throwable)
26+
}
27+
1928

2029
// Initialize Stripe only once
2130
fun initializeStripe(initialObject: InitialiseParams) {
@@ -31,6 +40,7 @@ class InitializeStripe {
3140
}
3241
}
3342

43+
3444
fun initialisePaymentSheet(initialiseParams: InitialiseParams) {
3545
if((initialiseParams.androidContext != null ) && (initialiseParams.androidActivity != null)) {
3646
PaymentConfiguration.init(
@@ -40,30 +50,34 @@ class InitializeStripe {
4050

4151
paymentSheet =
4252
PaymentSheet(initialiseParams.androidActivity as ComponentActivity) { paymentSheet ->
43-
val result = onPaymentSheetResult(paymentSheet)
44-
Toast.makeText(
45-
initialiseParams.androidContext as Context,
46-
result,
47-
Toast.LENGTH_LONG
48-
).show()
53+
onPaymentSheetResult(paymentSheet)
4954
}
5055
}
5156
}
52-
private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult): String {
57+
private fun onPaymentSheetResult(paymentSheetResult: PaymentSheetResult) {
5358
when (paymentSheetResult) {
5459
is PaymentSheetResult.Canceled -> {
55-
return "cancelled"
60+
paymentResultCallback?.onFailure(Throwable(message = "Cancelled"))
61+
paymentResultCallback = null
5662
}
5763

5864
is PaymentSheetResult.Failed -> {
59-
return "Error: ${paymentSheetResult.error}"
65+
paymentResultCallback?.onFailure(Throwable(message = "Failed"))
66+
paymentResultCallback = null
6067
}
6168

6269
is PaymentSheetResult.Completed -> {
63-
return "Completed"
70+
//TODO: Handle paymentSheetResult
71+
paymentResultCallback?.onSuccess(emptyMap())
72+
paymentResultCallback = null
6473
}
6574
}
6675
}
76+
77+
fun setPaymentResultCallback(callback: InitializeStripe.PaymentResult) {
78+
paymentResultCallback = callback
79+
}
80+
6781
}
6882

6983
object SingletonStripeInitialization {

shared/src/androidMain/kotlin/NativeStripeSDK.android.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import repositories.PaymentRepositoryImpl
2424
* It is the starting point of Android native stripe SDK
2525
*/
2626
actual class ProvideStripeSdk actual constructor() {
27+
2728
private val paymentRepository: PaymentRepository = PaymentRepositoryImpl()
2829

2930
/**
@@ -35,6 +36,7 @@ actual class ProvideStripeSdk actual constructor() {
3536
SingletonStripeInitialization.StripeInstanse.initialisePaymentSheet(initialiseParams)
3637
}
3738

39+
3840
/**
3941
*It creates a payment parameter in Stripe SDK
4042
* @param [CreateParams] which contains different wallet types
@@ -108,6 +110,17 @@ actual class ProvideStripeSdk actual constructor() {
108110
onError: (Throwable) -> Unit
109111
) {
110112
CoroutineScope(Dispatchers.Default).launch {
113+
//For Payment Sheet result
114+
SingletonStripeInitialization.StripeInstanse.setPaymentResultCallback(object : InitializeStripe.PaymentResult {
115+
override fun onSuccess(status: Map<String, Any?>) {
116+
onSuccess(status)
117+
}
118+
119+
override fun onFailure(throwable: Throwable) {
120+
onError(throwable)
121+
}
122+
})
123+
111124
SingletonStripeInitialization.StripeInstanse.paymentSheet.let {
112125
presentPaymentSheet(
113126
paymentSheet = it,

0 commit comments

Comments
 (0)