@primer-io/react-native 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -137,5 +137,5 @@ dependencies {
137
137
  api 'com.facebook.react:react-native:+'
138
138
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
139
139
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3"
140
- implementation 'io.primer:android:2.7.0'
140
+ implementation 'io.primer:android:2.8.0'
141
141
  }
@@ -1,7 +1,7 @@
1
1
  package com.primerioreactnative.datamodels
2
2
 
3
- import io.primer.android.data.tokenization.models.PaymentInstrumentData
4
- import io.primer.android.data.tokenization.models.TokenType
3
+ import com.primerioreactnative.extensions.toPaymentInstrumentDataRN
4
+ import io.primer.android.data.tokenization.models.*
5
5
  import io.primer.android.domain.tokenization.models.PrimerPaymentMethodTokenData
6
6
  import kotlinx.serialization.Serializable
7
7
 
@@ -22,7 +22,7 @@ data class PrimerPaymentInstrumentTokenRN(
22
22
  )
23
23
 
24
24
  @Serializable
25
- data class ThreeDSAuthenticationData (
25
+ data class ThreeDSAuthenticationData(
26
26
  val responseCode: String?,
27
27
  val reasonCode: String?,
28
28
  val reasonText: String?,
@@ -30,6 +30,52 @@ data class PrimerPaymentInstrumentTokenRN(
30
30
  val challengeIssued: Boolean?,
31
31
  )
32
32
 
33
+ @Serializable
34
+ data class PaymentInstrumentData(
35
+ val network: String? = null,
36
+ val cardholderName: String? = null,
37
+ val first6Digits: Int? = null,
38
+ val last4Digits: Int? = null,
39
+ val expirationMonth: Int? = null,
40
+ val expirationYear: Int? = null,
41
+ val gocardlessMandateId: String? = null,
42
+ val externalPayerInfo: ExternalPayerInfo? = null,
43
+ val klarnaCustomerToken: String? = null,
44
+ val sessionData: SessionData? = null,
45
+ // apaya
46
+ val mx: String? = null,
47
+ val mnc: Int? = null,
48
+ val mcc: Int? = null,
49
+ val hashedIdentifier: String? = null,
50
+ val currencyCode: String? = null,
51
+ val productId: String? = null,
52
+ // async
53
+ val paymentMethodType: String? = null,
54
+ // bin
55
+ val binData: BinData? = null,
56
+ )
57
+
58
+ @Serializable
59
+ data class ExternalPayerInfo(
60
+ val email: String,
61
+ )
62
+
63
+ @Serializable
64
+ data class BinData(
65
+ val network: String? = null,
66
+ )
67
+
68
+ @Serializable
69
+ data class SessionData(
70
+ val recurringDescription: String? = null,
71
+ val billingAddress: BillingAddress? = null,
72
+ )
73
+
74
+ @Serializable
75
+ data class BillingAddress(
76
+ val email: String,
77
+ )
78
+
33
79
  companion object {
34
80
  fun fromPaymentMethodToken(token: PrimerPaymentMethodTokenData): PrimerPaymentInstrumentTokenRN {
35
81
  return PrimerPaymentInstrumentTokenRN(
@@ -37,7 +83,7 @@ data class PrimerPaymentInstrumentTokenRN(
37
83
  token.analyticsId,
38
84
  token.tokenType,
39
85
  token.paymentInstrumentType,
40
- token.paymentInstrumentData,
86
+ token.paymentInstrumentData?.toPaymentInstrumentDataRN(),
41
87
  )
42
88
  }
43
89
  }
@@ -1,18 +1,22 @@
1
1
  package com.primerioreactnative.datamodels
2
2
 
3
- import io.primer.android.data.settings.*
4
- import io.primer.android.ui.settings.PrimerUIOptions
3
+ import com.primerioreactnative.extensions.toLocale
4
+ import com.primerioreactnative.extensions.toPrimerDebugOptions
5
+ import com.primerioreactnative.extensions.toPrimerPaymentMethodOptions
6
+ import com.primerioreactnative.extensions.toPrimerUIOptions
7
+ import io.primer.android.data.settings.GooglePayButtonStyle
8
+ import io.primer.android.data.settings.PrimerPaymentHandling
9
+ import io.primer.android.data.settings.PrimerSettings
5
10
  import kotlinx.serialization.SerialName
6
11
  import kotlinx.serialization.Serializable
7
- import java.util.*
8
12
 
9
13
  @Serializable
10
14
  data class PrimerSettingsRN(
11
15
  var paymentHandling: PrimerPaymentHandling = PrimerPaymentHandling.AUTO,
12
16
  var localeData: LocaleSettingsRN = LocaleSettingsRN(),
13
17
  var paymentMethodOptions: PrimerPaymentMethodOptionsRN = PrimerPaymentMethodOptionsRN(),
14
- var uiOptions: PrimerUIOptions = PrimerUIOptions(),
15
- var debugOptions: PrimerDebugOptions = PrimerDebugOptions(),
18
+ var uiOptions: PrimerUIOptionsRN = PrimerUIOptionsRN(),
19
+ var debugOptions: PrimerDebugOptionsRN = PrimerDebugOptionsRN(),
16
20
  )
17
21
 
18
22
  @Serializable
@@ -21,43 +25,74 @@ data class LocaleSettingsRN(
21
25
  val localeCode: String? = null
22
26
  )
23
27
 
24
- fun LocaleSettingsRN.toLocale(): Locale {
25
- return when {
26
- languageCode == null -> Locale.getDefault()
27
- localeCode == null -> Locale(languageCode)
28
- else -> Locale(languageCode, localeCode)
29
- }
30
- }
31
-
32
28
  @Serializable
33
29
  data class PrimerPaymentMethodOptionsRN(
34
30
  @SerialName("android")
35
31
  val androidSettingsRN: AndroidSettingsRN = AndroidSettingsRN(),
36
- var cardPaymentOptions: PrimerCardPaymentOptions = PrimerCardPaymentOptions(),
37
- var googlePayOptions: PrimerGooglePayOptions = PrimerGooglePayOptions(),
38
- var klarnaOptions: PrimerKlarnaOptions = PrimerKlarnaOptions(),
39
- var apayaOptions: PrimerApayaOptions = PrimerApayaOptions(),
40
- var goCardlessOptions: PrimerGoCardlessOptions = PrimerGoCardlessOptions()
32
+ var cardPaymentOptions: PrimerCardPaymentOptionsRN = PrimerCardPaymentOptionsRN(),
33
+ var googlePayOptions: PrimerGooglePayOptionsRN = PrimerGooglePayOptionsRN(),
34
+ var klarnaOptions: PrimerKlarnaOptionsRN = PrimerKlarnaOptionsRN(),
35
+ var apayaOptions: PrimerApayaOptionsRN = PrimerApayaOptionsRN(),
36
+ var goCardlessOptions: PrimerGoCardlessOptionsRN = PrimerGoCardlessOptionsRN()
41
37
  )
42
38
 
43
- fun PrimerPaymentMethodOptionsRN.toPrimerPaymentMethodOptions() = PrimerPaymentMethodOptions(
44
- androidSettingsRN.redirectScheme,
45
- cardPaymentOptions,
46
- googlePayOptions,
47
- klarnaOptions,
48
- apayaOptions,
49
- goCardlessOptions
39
+ @Serializable
40
+ data class AndroidSettingsRN(val redirectScheme: String? = null)
41
+
42
+ @Serializable
43
+ data class PrimerUIOptionsRN(
44
+ var isInitScreenEnabled: Boolean = true,
45
+ var isSuccessScreenEnabled: Boolean = true,
46
+ var isErrorScreenEnabled: Boolean = true,
50
47
  )
51
48
 
52
49
  @Serializable
53
- data class AndroidSettingsRN(val redirectScheme: String? = null)
50
+ data class PrimerDebugOptionsRN(val is3DSSanityCheckEnabled: Boolean = true)
51
+
52
+ @Serializable
53
+ data class PrimerCardPaymentOptionsRN(
54
+ var is3DSOnVaultingEnabled: Boolean = true
55
+ )
56
+
57
+ @Serializable
58
+ data class PrimerGooglePayOptionsRN(
59
+ var merchantName: String? = null,
60
+ var allowedCardNetworks: List<String> = listOf(
61
+ "AMEX",
62
+ "DISCOVER",
63
+ "JCB",
64
+ "MASTERCARD",
65
+ "VISA"
66
+ ),
67
+ var buttonStyle: GooglePayButtonStyle = GooglePayButtonStyle.BLACK,
68
+ )
69
+
70
+ @Serializable
71
+ data class PrimerKlarnaOptionsRN(
72
+ var recurringPaymentDescription: String? = null,
73
+ @Deprecated("This property is deprecated and will be removed in future release.")
74
+ var webViewTitle: String? = null,
75
+ )
76
+
77
+ @Serializable
78
+ @Deprecated("This class is deprecated and will be removed in future release.")
79
+ data class PrimerApayaOptionsRN(
80
+ var webViewTitle: String? = null,
81
+ )
82
+
83
+ @Serializable
84
+ @Deprecated("This class is deprecated and will be removed in future release.")
85
+ data class PrimerGoCardlessOptionsRN(
86
+ var businessName: String? = null,
87
+ var businessAddress: String? = null,
88
+ )
54
89
 
55
90
  fun PrimerSettingsRN.toPrimerSettings() = PrimerSettings(
56
91
  paymentHandling,
57
92
  localeData.toLocale(),
58
93
  paymentMethodOptions.toPrimerPaymentMethodOptions(),
59
- uiOptions,
60
- debugOptions
94
+ uiOptions.toPrimerUIOptions(),
95
+ debugOptions.toPrimerDebugOptions()
61
96
  )
62
97
 
63
98
 
@@ -0,0 +1,12 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import com.primerioreactnative.datamodels.LocaleSettingsRN
4
+ import java.util.Locale
5
+
6
+ internal fun LocaleSettingsRN.toLocale(): Locale {
7
+ return when {
8
+ languageCode == null -> Locale.getDefault()
9
+ localeCode == null -> Locale(languageCode)
10
+ else -> Locale(languageCode, localeCode)
11
+ }
12
+ }
@@ -0,0 +1,24 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import com.primerioreactnative.datamodels.PrimerPaymentInstrumentTokenRN
4
+ import io.primer.android.data.tokenization.models.PaymentInstrumentData
5
+
6
+ internal fun PaymentInstrumentData.toPaymentInstrumentDataRN() =
7
+ PrimerPaymentInstrumentTokenRN.PaymentInstrumentData(
8
+ network,
9
+ cardholderName,
10
+ first6Digits,
11
+ last4Digits,
12
+ expirationMonth,
13
+ expirationYear,
14
+ gocardlessMandateId,
15
+ externalPayerInfo?.email?.let { PrimerPaymentInstrumentTokenRN.ExternalPayerInfo(it) },
16
+ klarnaCustomerToken,
17
+ sessionData?.let {
18
+ PrimerPaymentInstrumentTokenRN.SessionData(
19
+ it.recurringDescription,
20
+ it.billingAddress?.let { PrimerPaymentInstrumentTokenRN.BillingAddress(it.email) })
21
+ },
22
+ mx, mnc, mcc, hashedIdentifier, currencyCode, productId, paymentMethodType,
23
+ binData?.let { PrimerPaymentInstrumentTokenRN.BinData(it.network) }
24
+ )
@@ -0,0 +1,7 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import com.primerioreactnative.datamodels.PrimerDebugOptionsRN
4
+ import io.primer.android.data.settings.PrimerDebugOptions
5
+
6
+ internal fun PrimerDebugOptionsRN.toPrimerDebugOptions() =
7
+ PrimerDebugOptions(is3DSSanityCheckEnabled)
@@ -0,0 +1,27 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import com.primerioreactnative.datamodels.*
4
+ import io.primer.android.data.settings.*
5
+
6
+ fun PrimerPaymentMethodOptionsRN.toPrimerPaymentMethodOptions() = PrimerPaymentMethodOptions(
7
+ androidSettingsRN.redirectScheme,
8
+ cardPaymentOptions.toPrimerCardPaymentOptions(),
9
+ googlePayOptions.toPrimerGooglePayOptions(),
10
+ klarnaOptions.toPrimerKlarnaOptions(),
11
+ apayaOptions.toPrimerApayaOptions(),
12
+ goCardlessOptions.toPrimerGoCardlessOptions()
13
+ )
14
+
15
+ fun PrimerCardPaymentOptionsRN.toPrimerCardPaymentOptions() =
16
+ PrimerCardPaymentOptions(is3DSOnVaultingEnabled)
17
+
18
+ fun PrimerGooglePayOptionsRN.toPrimerGooglePayOptions() =
19
+ PrimerGooglePayOptions(merchantName, allowedCardNetworks, buttonStyle)
20
+
21
+ fun PrimerKlarnaOptionsRN.toPrimerKlarnaOptions() =
22
+ PrimerKlarnaOptions(recurringPaymentDescription, webViewTitle)
23
+
24
+ fun PrimerApayaOptionsRN.toPrimerApayaOptions() = PrimerApayaOptions(webViewTitle)
25
+
26
+ fun PrimerGoCardlessOptionsRN.toPrimerGoCardlessOptions() =
27
+ PrimerGoCardlessOptions(businessName, businessAddress)
@@ -0,0 +1,13 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import com.primerioreactnative.datamodels.PrimerUIOptionsRN
4
+ import io.primer.android.ui.settings.PrimerTheme
5
+ import io.primer.android.ui.settings.PrimerUIOptions
6
+
7
+ internal fun PrimerUIOptionsRN.toPrimerUIOptions() =
8
+ PrimerUIOptions(
9
+ isInitScreenEnabled,
10
+ isSuccessScreenEnabled,
11
+ isErrorScreenEnabled,
12
+ PrimerTheme.build()
13
+ )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/react-native",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "Primer SDK for RN",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -17,5 +17,5 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "PrimerSDK", "2.7.0"
20
+ s.dependency "PrimerSDK", "2.8.0"
21
21
  end