Skip to content

Commit

Permalink
WIP: Wechat Pay (#422)
Browse files Browse the repository at this point in the history
* chore: wechat ios implementation

* chore: use different keys

* fix: confirming payment

* chore: android binding, upgrade kotlin, upgrade gradle

* chore: move wechat deps the the example app

* chore: add tests, refactor android implementation

* chore: clean up

Co-authored-by: Arkadiusz Kubaczkowski <arek.kubaczkowski@callstak.com>
  • Loading branch information
arekkubaczkowski and Arkadiusz Kubaczkowski authored Jul 30, 2021
1 parent d557d61 commit 9646d1f
Show file tree
Hide file tree
Showing 27 changed files with 549 additions and 293 deletions.
5 changes: 3 additions & 2 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ buildscript {
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.2'
classpath 'com.android.tools.build:gradle:4.2.1'
// noinspection DifferentKotlinGradleVersion
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
Expand Down Expand Up @@ -131,7 +131,8 @@ dependencies {
// noinspection GradleDynamicVersion
api 'com.facebook.react:react-native:+'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'com.stripe:stripe-android:16.10.2'
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1"
implementation 'com.stripe:stripe-android:17.1.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
Expand Down
2 changes: 1 addition & 1 deletion android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
StripeSdk_kotlinVersion=1.4.32
StripeSdk_kotlinVersion=1.5.10
StripeSdk_compileSdkVersion=28
StripeSdk_buildToolsVersion=28.0.3
StripeSdk_targetSdkVersion=28
2 changes: 2 additions & 0 deletions android/src/main/java/com/reactnativestripesdk/Mappers.kt
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ internal fun mapPaymentMethodType(type: PaymentMethod.Type?): String {
PaymentMethod.Type.SepaDebit -> "SepaDebit"
PaymentMethod.Type.Sofort -> "Sofort"
PaymentMethod.Type.Upi -> "Upi"
PaymentMethod.Type.WeChatPay -> "WeChatPay"
else -> "Unknown"
}
}
Expand All @@ -124,6 +125,7 @@ internal fun mapToPaymentMethodType(type: String?): PaymentMethod.Type? {
"SepaDebit" -> PaymentMethod.Type.SepaDebit
"Sofort" -> PaymentMethod.Type.Sofort
"Upi" -> PaymentMethod.Type.Upi
"WeChatPay" -> PaymentMethod.Type.WeChatPay
else -> null
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package com.reactnativestripesdk
import com.facebook.react.bridge.ReadableMap
import com.stripe.android.model.*

class PaymentMethodCreateParamsFactory(private val clientSecret: String, private val params: ReadableMap, private val urlScheme: String?, cardParams: PaymentMethodCreateParams.Card?) {
class PaymentMethodCreateParamsFactory(
private val clientSecret: String,
private val params: ReadableMap,
cardParams: PaymentMethodCreateParams.Card?
) {
private val billingDetailsParams = mapToBillingDetails(getMapOrNull(params, "billingDetails"))
private val cardParams = cardParams

Expand Down Expand Up @@ -58,15 +62,15 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
val bankName = getValOr(params, "bankName", null)

val idealParams = PaymentMethodCreateParams.Ideal(bankName)
val createParams = PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)
val createParams =
PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)
val setupFutureUsage = mapToPaymentIntentFutureUsage(getValOr(params, "setupFutureUsage"))

return ConfirmPaymentIntentParams
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = createParams,
clientSecret = clientSecret,
setupFutureUsage = setupFutureUsage,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -82,7 +86,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -99,14 +102,14 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private

if (paymentMethodId != null) {
val cvc = getValOr(params, "cvc", null)
val paymentMethodOptionParams = if (cvc != null) PaymentMethodOptionsParams.Card(cvc) else null
val paymentMethodOptionParams =
if (cvc != null) PaymentMethodOptionsParams.Card(cvc) else null

return ConfirmPaymentIntentParams.createWithPaymentMethodId(
paymentMethodId = paymentMethodId,
paymentMethodOptions = paymentMethodOptionParams,
clientSecret = clientSecret,
setupFutureUsage = setupFutureUsage,
returnUrl = mapToReturnURL(urlScheme)
)
} else {
var card = cardParams
Expand All @@ -119,7 +122,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
paymentMethodCreateParams = paymentMethodCreateParams,
clientSecret = clientSecret,
setupFutureUsage = setupFutureUsage,
returnUrl = mapToReturnURL(urlScheme)
)
}
}
Expand All @@ -129,12 +131,12 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
val bankName = getValOr(params, "bankName", null)

val idealParams = PaymentMethodCreateParams.Ideal(bankName)
val createParams = PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)
val createParams =
PaymentMethodCreateParams.create(ideal = idealParams, billingDetails = billingDetailsParams)

return ConfirmSetupIntentParams.create(
paymentMethodCreateParams = createParams,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -148,7 +150,8 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
}

val sepaParams = PaymentMethodCreateParams.SepaDebit(iban)
val createParams = PaymentMethodCreateParams.create(sepaDebit = sepaParams, billingDetails = billingDetails)
val createParams =
PaymentMethodCreateParams.create(sepaDebit = sepaParams, billingDetails = billingDetails)

return ConfirmSetupIntentParams.create(
paymentMethodCreateParams = createParams,
Expand All @@ -158,7 +161,8 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private

@Throws(PaymentMethodCreateParamsException::class)
private fun createCardPaymentSetupParams(): ConfirmSetupIntentParams {
val paymentMethodCreateParams = PaymentMethodCreateParams.create(cardParams!!, billingDetailsParams)
val paymentMethodCreateParams =
PaymentMethodCreateParams.create(cardParams!!, billingDetailsParams)
return ConfirmSetupIntentParams
.create(paymentMethodCreateParams, clientSecret)
}
Expand All @@ -185,7 +189,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
paymentMethodCreateParams = params,
clientSecret = clientSecret,
setupFutureUsage = setupFutureUsage,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -202,7 +205,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
return ConfirmSetupIntentParams.create(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -215,7 +217,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -233,7 +234,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
paymentMethodCreateParams = params,
clientSecret = clientSecret,
setupFutureUsage = setupFutureUsage,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -248,7 +248,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.create(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -264,7 +263,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -280,7 +278,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -296,7 +293,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand Down Expand Up @@ -333,7 +329,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -349,7 +344,6 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -370,15 +364,17 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.build()

val params = PaymentMethodCreateParams.create(
auBecsDebit = PaymentMethodCreateParams.AuBecsDebit(bsbNumber = bsbNumber, accountNumber = accountNumber),
auBecsDebit = PaymentMethodCreateParams.AuBecsDebit(
bsbNumber = bsbNumber,
accountNumber = accountNumber
),
billingDetails = billingDetails
)

return ConfirmPaymentIntentParams
.createWithPaymentMethodCreateParams(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}

Expand All @@ -399,15 +395,17 @@ class PaymentMethodCreateParamsFactory(private val clientSecret: String, private
.build()

val params = PaymentMethodCreateParams.create(
auBecsDebit = PaymentMethodCreateParams.AuBecsDebit(bsbNumber = bsbNumber, accountNumber = accountNumber),
auBecsDebit = PaymentMethodCreateParams.AuBecsDebit(
bsbNumber = bsbNumber,
accountNumber = accountNumber
),
billingDetails = billingDetails
)

return ConfirmSetupIntentParams
.create(
paymentMethodCreateParams = params,
clientSecret = clientSecret,
returnUrl = mapToReturnURL(urlScheme)
)
}
}
Expand Down
Loading

0 comments on commit 9646d1f

Please sign in to comment.