@primer-io/react-native 0.16.2 → 2.1.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.
- package/README.md +114 -24
- package/android/build.gradle +10 -2
- package/android/gradle.properties +3 -3
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +124 -150
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +212 -128
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +244 -0
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +275 -0
- package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerClientSessionRN.kt +54 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +6 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentInstrumentTokenRN.kt +4 -4
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +43 -125
- package/android/src/main/java/com/primerioreactnative/extensions/Payment.kt +6 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerAddress.kt +15 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerClientSession.kt +15 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerCustomer.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerLineItem.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerOrder.kt +6 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +11 -7
- package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -3
- package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +45 -0
- package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +31 -0
- package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +16 -6
- package/ios/Core/ReactNative-Bridging-Header.h +10 -0
- package/ios/DataModels/ImplementedRNCallbacks.swift +56 -0
- package/ios/DataModels/PrimerErrorRN.swift +0 -17
- package/ios/DataModels/PrimerSettingsRN.swift +78 -156
- package/ios/DataModels/PrimerThemeRN.swift +1 -10
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +33 -1
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +306 -54
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +5 -1
- package/ios/RNTPrimer.m +28 -12
- package/ios/RNTPrimer.swift +273 -222
- package/ios/ReactNative-Bridging-Header.h +4 -0
- package/ios/ReactNative.xcodeproj/project.pbxproj +14 -14
- package/lib/commonjs/Primer.js +206 -149
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/RNPrimer.js +113 -41
- package/lib/commonjs/RNPrimer.js.map +1 -1
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +240 -71
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -1
- package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +197 -0
- package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/commonjs/headless_checkout/types.js +4 -0
- package/lib/commonjs/index.js +118 -24
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/PrimerCheckoutData.js +9 -0
- package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -0
- package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js +2 -0
- package/lib/commonjs/models/{action-request.js.map → PrimerCheckoutPaymentMethodData.js.map} +0 -0
- package/lib/commonjs/models/PrimerClientSession.js +2 -0
- package/lib/commonjs/models/{client-session-actions-request.js.map → PrimerClientSession.js.map} +0 -0
- package/lib/commonjs/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
- package/lib/commonjs/models/PrimerCountryCode.js.map +1 -0
- package/lib/commonjs/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
- package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -0
- package/lib/commonjs/models/PrimerError.js +28 -0
- package/lib/commonjs/models/PrimerError.js.map +1 -0
- package/lib/commonjs/models/{primer-settings.js → PrimerInterfaces.js} +1 -1
- package/lib/commonjs/models/{primer-callbacks.js.map → PrimerInterfaces.js.map} +0 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js +14 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -0
- package/lib/commonjs/models/PrimerSessionIntent.js +14 -0
- package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -0
- package/lib/commonjs/models/{primer.js → PrimerSettings.js} +1 -1
- package/lib/commonjs/models/{primer-config.js.map → PrimerSettings.js.map} +0 -0
- package/lib/commonjs/models/PrimerTheme.js +2 -0
- package/lib/commonjs/models/{primer-request.js.map → PrimerTheme.js.map} +0 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Primer.js +205 -136
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/RNPrimer.js +113 -41
- package/lib/module/RNPrimer.js.map +1 -1
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +243 -70
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -1
- package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js +188 -0
- package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/module/headless_checkout/types.js +1 -1
- package/lib/module/index.js +10 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/PrimerCheckoutData.js +7 -0
- package/lib/module/models/PrimerCheckoutData.js.map +1 -0
- package/lib/module/models/PrimerCheckoutPaymentMethodData.js +2 -0
- package/lib/{commonjs/models/primer-settings.js.map → module/models/PrimerCheckoutPaymentMethodData.js.map} +0 -0
- package/lib/module/models/PrimerClientSession.js +2 -0
- package/lib/{commonjs/models/primer-theme.js.map → module/models/PrimerClientSession.js.map} +0 -0
- package/lib/module/models/{utils/countryCode.js → PrimerCountryCode.js} +1 -1
- package/lib/module/models/PrimerCountryCode.js.map +1 -0
- package/lib/module/models/{utils/currencyCode.js → PrimerCurrencyCode.js} +1 -1
- package/lib/module/models/PrimerCurrencyCode.js.map +1 -0
- package/lib/module/models/PrimerError.js +19 -0
- package/lib/module/models/PrimerError.js.map +1 -0
- package/lib/module/models/PrimerInterfaces.js +2 -0
- package/lib/{commonjs/models/primer.js.map → module/models/PrimerInterfaces.js.map} +0 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js +7 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -0
- package/lib/module/models/PrimerSessionIntent.js +7 -0
- package/lib/module/models/PrimerSessionIntent.js.map +1 -0
- package/lib/module/models/PrimerSettings.js +2 -0
- package/lib/module/models/{action-request.js.map → PrimerSettings.js.map} +0 -0
- package/lib/module/models/PrimerTheme.js +2 -0
- package/lib/module/models/{client-session-actions-request.js.map → PrimerTheme.js.map} +0 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/MerchantExample/App.d.ts +11 -0
- package/lib/typescript/src/Primer.d.ts +2 -0
- package/lib/typescript/{PrimerInput.d.ts → src/PrimerInput.d.ts} +0 -0
- package/lib/typescript/src/RNPrimer.d.ts +32 -0
- package/lib/typescript/{RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts → src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts} +0 -0
- package/lib/typescript/src/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +11 -0
- package/lib/typescript/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +22 -0
- package/lib/typescript/src/headless_checkout/types.d.ts +22 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/models/PrimerCheckoutData.d.ts +15 -0
- package/lib/typescript/src/models/PrimerCheckoutPaymentMethodData.d.ts +5 -0
- package/lib/typescript/src/models/PrimerClientSession.d.ts +45 -0
- package/lib/typescript/{models/utils/countryCode.d.ts → src/models/PrimerCountryCode.d.ts} +1 -1
- package/lib/typescript/{models/utils/currencyCode.d.ts → src/models/PrimerCurrencyCode.d.ts} +1 -1
- package/lib/typescript/src/models/PrimerError.d.ts +11 -0
- package/lib/typescript/src/models/PrimerInterfaces.d.ts +27 -0
- package/lib/typescript/src/models/PrimerPaymentMethodTokenData.d.ts +116 -0
- package/lib/typescript/src/models/PrimerSessionIntent.d.ts +4 -0
- package/lib/typescript/src/models/PrimerSettings.d.ts +77 -0
- package/lib/typescript/{models/primer-theme.d.ts → src/models/PrimerTheme.d.ts} +1 -1
- package/lib/typescript/{utils → src/utils}/index.d.ts +1 -1
- package/package.json +1 -1
- package/primer-io-react-native.podspec +1 -1
- package/src/Primer.ts +231 -170
- package/src/RNPrimer.ts +148 -51
- package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +281 -94
- package/src/headless_checkout/RNPrimerHeadlessUniversalCheckout.ts +252 -0
- package/src/headless_checkout/types.ts +26 -12
- package/src/index.tsx +36 -8
- package/src/models/PrimerCheckoutData.ts +18 -0
- package/src/models/PrimerCheckoutPaymentMethodData.ts +5 -0
- package/src/models/PrimerClientSession.ts +53 -0
- package/src/models/{utils/countryCode.ts → PrimerCountryCode.ts} +1 -1
- package/src/models/{utils/currencyCode.ts → PrimerCurrencyCode.ts} +1 -1
- package/src/models/PrimerError.ts +20 -0
- package/src/models/PrimerInterfaces.ts +36 -0
- package/src/models/PrimerPaymentMethodTokenData.ts +130 -0
- package/src/models/PrimerSessionIntent.ts +4 -0
- package/src/models/PrimerSettings.ts +108 -0
- package/src/models/{primer-theme.ts → PrimerTheme.ts} +1 -1
- package/src/utils/index.ts +1 -1
- package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +0 -198
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEventsRN.kt +0 -11
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIntentRN.kt +0 -80
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerOnClientSessionActionsRequestRN.kt +0 -65
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerRequestRN.kt +0 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerThemeRN.kt +0 -51
- package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +0 -10
- package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +0 -7
- package/android/src/main/java/com/primerioreactnative/utils/PrimerEventQueueRN.kt +0 -30
- package/ios/DataModels/PrimerIntentRN.swift +0 -10
- package/ios/DataModels/PrimerRequestRN.swift +0 -14
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -110
- package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/commonjs/models/action-request.js +0 -2
- package/lib/commonjs/models/client-session-actions-request.js +0 -2
- package/lib/commonjs/models/payment-instrument-token.js +0 -30
- package/lib/commonjs/models/payment-instrument-token.js.map +0 -1
- package/lib/commonjs/models/primer-callbacks.js +0 -6
- package/lib/commonjs/models/primer-config.js +0 -6
- package/lib/commonjs/models/primer-error.js +0 -4
- package/lib/commonjs/models/primer-error.js.map +0 -1
- package/lib/commonjs/models/primer-intent.js +0 -4
- package/lib/commonjs/models/primer-intent.js.map +0 -1
- package/lib/commonjs/models/primer-request.js +0 -2
- package/lib/commonjs/models/primer-theme.js +0 -2
- package/lib/commonjs/models/utils/countryCode.js.map +0 -1
- package/lib/commonjs/models/utils/currencyCode.js.map +0 -1
- package/lib/commonjs/models/utils/redirectScheme.js +0 -4
- package/lib/commonjs/models/utils/redirectScheme.js.map +0 -1
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +0 -98
- package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/module/models/action-request.js +0 -2
- package/lib/module/models/client-session-actions-request.js +0 -2
- package/lib/module/models/payment-instrument-token.js +0 -28
- package/lib/module/models/payment-instrument-token.js.map +0 -1
- package/lib/module/models/primer-callbacks.js +0 -2
- package/lib/module/models/primer-callbacks.js.map +0 -1
- package/lib/module/models/primer-config.js +0 -2
- package/lib/module/models/primer-config.js.map +0 -1
- package/lib/module/models/primer-error.js +0 -2
- package/lib/module/models/primer-error.js.map +0 -1
- package/lib/module/models/primer-intent.js +0 -2
- package/lib/module/models/primer-intent.js.map +0 -1
- package/lib/module/models/primer-request.js +0 -2
- package/lib/module/models/primer-request.js.map +0 -1
- package/lib/module/models/primer-settings.js +0 -2
- package/lib/module/models/primer-settings.js.map +0 -1
- package/lib/module/models/primer-theme.js +0 -2
- package/lib/module/models/primer-theme.js.map +0 -1
- package/lib/module/models/primer.js +0 -2
- package/lib/module/models/primer.js.map +0 -1
- package/lib/module/models/utils/countryCode.js.map +0 -1
- package/lib/module/models/utils/currencyCode.js.map +0 -1
- package/lib/module/models/utils/redirectScheme.js +0 -2
- package/lib/module/models/utils/redirectScheme.js.map +0 -1
- package/lib/typescript/Primer.d.ts +0 -15
- package/lib/typescript/RNPrimer.d.ts +0 -24
- package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +0 -13
- package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +0 -13
- package/lib/typescript/headless_checkout/types.d.ts +0 -16
- package/lib/typescript/index.d.ts +0 -5
- package/lib/typescript/models/action-request.d.ts +0 -10
- package/lib/typescript/models/client-session-actions-request.d.ts +0 -15
- package/lib/typescript/models/payment-instrument-token.d.ts +0 -76
- package/lib/typescript/models/primer-callbacks.d.ts +0 -10
- package/lib/typescript/models/primer-config.d.ts +0 -44
- package/lib/typescript/models/primer-error.d.ts +0 -8
- package/lib/typescript/models/primer-intent.d.ts +0 -13
- package/lib/typescript/models/primer-request.d.ts +0 -7
- package/lib/typescript/models/primer-settings.d.ts +0 -65
- package/lib/typescript/models/primer.d.ts +0 -33
- package/lib/typescript/models/utils/redirectScheme.d.ts +0 -3
- package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +0 -132
- package/src/models/action-request.ts +0 -12
- package/src/models/client-session-actions-request.ts +0 -21
- package/src/models/payment-instrument-token.ts +0 -109
- package/src/models/primer-callbacks.ts +0 -14
- package/src/models/primer-config.ts +0 -55
- package/src/models/primer-error.ts +0 -19
- package/src/models/primer-intent.ts +0 -49
- package/src/models/primer-request.ts +0 -7
- package/src/models/primer-settings.ts +0 -73
- package/src/models/primer.ts +0 -41
- package/src/models/utils/redirectScheme.ts +0 -5
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
package com.primerioreactnative
|
|
2
|
-
|
|
3
|
-
import androidx.annotation.Nullable
|
|
4
|
-
import androidx.core.content.ContextCompat
|
|
5
|
-
import com.facebook.react.bridge.*
|
|
6
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
7
|
-
import com.primerioreactnative.datamodels.*
|
|
8
|
-
import com.primerioreactnative.huc.assets.AssetsManager
|
|
9
|
-
import com.primerioreactnative.huc.assets.AssetsManager.drawableToBitmap
|
|
10
|
-
import com.primerioreactnative.huc.assets.AssetsManager.getFile
|
|
11
|
-
import com.primerioreactnative.huc.events.PrimerHeadlessUniversalCheckoutEvent
|
|
12
|
-
import com.primerioreactnative.huc.extensions.toArgumentsMap
|
|
13
|
-
import com.primerioreactnative.utils.Keys
|
|
14
|
-
import com.primerioreactnative.utils.errorTo
|
|
15
|
-
import io.primer.android.completion.ResumeHandler
|
|
16
|
-
import io.primer.android.components.PrimerHeadlessUniversalCheckout
|
|
17
|
-
import io.primer.android.components.PrimerHeadlessUniversalCheckoutListener
|
|
18
|
-
import io.primer.android.components.domain.core.models.PrimerHeadlessUniversalCheckoutPaymentMethod
|
|
19
|
-
import io.primer.android.components.ui.assets.ImageType
|
|
20
|
-
import io.primer.android.model.dto.*
|
|
21
|
-
import kotlinx.serialization.decodeFromString
|
|
22
|
-
import kotlinx.serialization.encodeToString
|
|
23
|
-
import kotlinx.serialization.json.Json
|
|
24
|
-
import org.json.JSONObject
|
|
25
|
-
|
|
26
|
-
class PrimerHeadlessUniversalCheckout(
|
|
27
|
-
private val reactContext: ReactApplicationContext,
|
|
28
|
-
private val json: Json,
|
|
29
|
-
) : ReactContextBaseJavaModule(reactContext), PrimerHeadlessUniversalCheckoutListener {
|
|
30
|
-
|
|
31
|
-
override fun getName(): String {
|
|
32
|
-
return "PrimerHeadlessUniversalCheckout"
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
private var resumeHandler: ResumeHandler? = null
|
|
36
|
-
private var successCallback: Callback? = null
|
|
37
|
-
|
|
38
|
-
@ReactMethod
|
|
39
|
-
fun startWithClientToken(
|
|
40
|
-
clientToken: String,
|
|
41
|
-
settingsStr: String?,
|
|
42
|
-
errorCallback: Callback,
|
|
43
|
-
successCallback: Callback
|
|
44
|
-
) {
|
|
45
|
-
try {
|
|
46
|
-
val settings = if (settingsStr.isNullOrBlank()) PrimerSettingsRN() else
|
|
47
|
-
json.decodeFromString(settingsStr.orEmpty())
|
|
48
|
-
this.successCallback = successCallback
|
|
49
|
-
PrimerHeadlessUniversalCheckout.current.start(
|
|
50
|
-
reactContext,
|
|
51
|
-
clientToken,
|
|
52
|
-
PrimerConfig(settings = settings.format()),
|
|
53
|
-
this
|
|
54
|
-
)
|
|
55
|
-
} catch (e: Exception) {
|
|
56
|
-
errorCallback.invoke(
|
|
57
|
-
json.encodeToString(
|
|
58
|
-
ErrorTypeRN.InitFailed errorTo
|
|
59
|
-
"failed to initialise PrimerHeadlessUniversalCheckout SDK, error: $e",
|
|
60
|
-
)
|
|
61
|
-
)
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@ReactMethod
|
|
66
|
-
fun resumeWithClientToken(resumeToken: String) {
|
|
67
|
-
this.resumeHandler?.handleNewClientToken(resumeToken)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
@ReactMethod
|
|
71
|
-
fun showPaymentMethod(paymentMethodType: String) {
|
|
72
|
-
val primerPaymentMethodType = PrimerPaymentMethodType.safeValueOf(paymentMethodType)
|
|
73
|
-
PrimerHeadlessUniversalCheckout.current.showPaymentMethod(
|
|
74
|
-
reactContext,
|
|
75
|
-
primerPaymentMethodType
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
@ReactMethod
|
|
80
|
-
fun disposeHeadlessCheckout() {
|
|
81
|
-
PrimerHeadlessUniversalCheckout.current.cleanup()
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
@ReactMethod
|
|
85
|
-
fun getAssetForPaymentMethodType(
|
|
86
|
-
paymentMethodType: String,
|
|
87
|
-
assetType: String,
|
|
88
|
-
errorCallback: Callback,
|
|
89
|
-
successCallback: Callback
|
|
90
|
-
) {
|
|
91
|
-
|
|
92
|
-
val primerPaymentMethodType = PrimerPaymentMethodType.safeValueOf(paymentMethodType)
|
|
93
|
-
val type = ImageType.values().find { it.name.equals(assetType, ignoreCase = true) }
|
|
94
|
-
when {
|
|
95
|
-
primerPaymentMethodType == PaymentMethodType.UNKNOWN -> {
|
|
96
|
-
errorCallback.invoke(
|
|
97
|
-
json.encodeToString(
|
|
98
|
-
ErrorTypeRN.AssetMissing errorTo
|
|
99
|
-
"Asset for $paymentMethodType does not exist, make sure you don't have any typos."
|
|
100
|
-
)
|
|
101
|
-
)
|
|
102
|
-
}
|
|
103
|
-
type == null -> {
|
|
104
|
-
errorCallback.invoke(
|
|
105
|
-
json.encodeToString(
|
|
106
|
-
ErrorTypeRN.AssetMismatch errorTo
|
|
107
|
-
"You have provided assetType=$assetType, but variable assetType can be 'LOGO' or 'ICON'."
|
|
108
|
-
)
|
|
109
|
-
)
|
|
110
|
-
}
|
|
111
|
-
else -> {
|
|
112
|
-
PrimerHeadlessUniversalCheckout.getAsset(primerPaymentMethodType, type)?.let { resourceId ->
|
|
113
|
-
val file = getFile(reactContext, paymentMethodType)
|
|
114
|
-
AssetsManager.saveBitmapToFile(
|
|
115
|
-
file,
|
|
116
|
-
drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
|
|
117
|
-
)
|
|
118
|
-
successCallback.invoke("file://${file.absolutePath}")
|
|
119
|
-
} ?: run {
|
|
120
|
-
errorCallback.invoke(
|
|
121
|
-
json.encodeToString(
|
|
122
|
-
ErrorTypeRN.AssetMissing errorTo
|
|
123
|
-
"Failed to find $paymentMethodType for $assetType"
|
|
124
|
-
)
|
|
125
|
-
)
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
override fun onClientSessionSetupSuccessfully(paymentMethods: List<PrimerHeadlessUniversalCheckoutPaymentMethod>) {
|
|
132
|
-
sendEvent(PrimerHeadlessUniversalCheckoutEvent.CLIENT_SESSION_SETUP_SUCCESS)
|
|
133
|
-
successCallback?.invoke(
|
|
134
|
-
Arguments.fromList(paymentMethods.map { it.paymentMethodType.name })
|
|
135
|
-
)
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
override fun onTokenizationPreparation() {
|
|
139
|
-
sendEvent(PrimerHeadlessUniversalCheckoutEvent.TOKENIZATION_PREPARATION_STARTED)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
override fun onTokenizationStarted() {
|
|
143
|
-
sendEvent(PrimerHeadlessUniversalCheckoutEvent.TOKENIZATION_STARTED)
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
override fun onPaymentMethodShowed() {
|
|
147
|
-
sendEvent(PrimerHeadlessUniversalCheckoutEvent.PAYMENT_METH0D_SHOWED)
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
override fun onTokenizationSuccess(
|
|
151
|
-
paymentMethodToken: PaymentMethodToken,
|
|
152
|
-
resumeHandler: ResumeHandler
|
|
153
|
-
) {
|
|
154
|
-
this.resumeHandler = resumeHandler
|
|
155
|
-
|
|
156
|
-
sendEvent(
|
|
157
|
-
PrimerHeadlessUniversalCheckoutEvent.TOKENIZATION_SUCCESS,
|
|
158
|
-
mapOf(
|
|
159
|
-
Keys.PAYMENT_METHOD_TOKEN to json.encodeToString(
|
|
160
|
-
PrimerPaymentInstrumentTokenRN.fromPaymentMethodToken(
|
|
161
|
-
paymentMethodToken
|
|
162
|
-
)
|
|
163
|
-
)
|
|
164
|
-
).toArgumentsMap()
|
|
165
|
-
)
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
override fun onResumeSuccess(resumeToken: String, resumeHandler: ResumeHandler) {
|
|
169
|
-
this.resumeHandler = resumeHandler
|
|
170
|
-
|
|
171
|
-
sendEvent(
|
|
172
|
-
PrimerHeadlessUniversalCheckoutEvent.RESUME,
|
|
173
|
-
mapOf(Keys.RESUME_TOKEN to resumeToken).toArgumentsMap()
|
|
174
|
-
)
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
override fun onError(error: APIError) {
|
|
178
|
-
sendEvent(
|
|
179
|
-
PrimerHeadlessUniversalCheckoutEvent.ERROR,
|
|
180
|
-
mapOf(
|
|
181
|
-
Keys.ERROR to json.encodeToString(
|
|
182
|
-
ErrorTypeRN.CheckoutFlowFailed errorTo
|
|
183
|
-
error.description
|
|
184
|
-
)
|
|
185
|
-
).toArgumentsMap()
|
|
186
|
-
)
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
private fun sendEvent(
|
|
191
|
-
event: PrimerHeadlessUniversalCheckoutEvent,
|
|
192
|
-
@Nullable params: WritableMap? = null
|
|
193
|
-
) {
|
|
194
|
-
reactContext
|
|
195
|
-
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
196
|
-
.emit(event.eventName, params)
|
|
197
|
-
}
|
|
198
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
package com.primerioreactnative.datamodels
|
|
2
|
-
|
|
3
|
-
sealed class PrimerEventsRN(val string: String) {
|
|
4
|
-
object OnClientTokenCallback: PrimerEventsRN("onClientTokenCallback")
|
|
5
|
-
object OnClientSessionActions: PrimerEventsRN("onClientSessionActions")
|
|
6
|
-
object OnTokenizeSuccessCallback: PrimerEventsRN("onTokenizeSuccessCallback")
|
|
7
|
-
object OnResumeSuccess: PrimerEventsRN("onResumeSuccess")
|
|
8
|
-
object OnCheckoutDismissed: PrimerEventsRN("onCheckoutDismissed")
|
|
9
|
-
object OnError: PrimerEventsRN("onError")
|
|
10
|
-
object OnVaultSuccess: PrimerEventsRN("onVaultSuccess")
|
|
11
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
package com.primerioreactnative.datamodels
|
|
2
|
-
|
|
3
|
-
import io.primer.android.PaymentMethod
|
|
4
|
-
import io.primer.android.payment.card.Card
|
|
5
|
-
import io.primer.android.payment.gocardless.GoCardless
|
|
6
|
-
import io.primer.android.payment.google.GooglePay
|
|
7
|
-
import io.primer.android.payment.klarna.Klarna
|
|
8
|
-
import io.primer.android.payment.paypal.PayPal
|
|
9
|
-
import kotlinx.serialization.Serializable
|
|
10
|
-
|
|
11
|
-
@Serializable
|
|
12
|
-
data class PrimerIntentRN(
|
|
13
|
-
val vault: Boolean = false,
|
|
14
|
-
val paymentMethod: PrimerPaymentMethodTypeRN = PrimerPaymentMethodTypeRN.Any,
|
|
15
|
-
) {
|
|
16
|
-
|
|
17
|
-
fun toPaymentMethods(settings: PrimerSettingsRN): List<PaymentMethod> {
|
|
18
|
-
return when (paymentMethod) {
|
|
19
|
-
PrimerPaymentMethodTypeRN.Any -> {
|
|
20
|
-
val countryCode = settings.order?.countryCode ?: throw Exception()
|
|
21
|
-
val currency = settings.order.currency ?: throw Exception()
|
|
22
|
-
val amount = settings.order.amount ?: throw Exception()
|
|
23
|
-
|
|
24
|
-
val googlePay = GooglePay(
|
|
25
|
-
countryCode = countryCode,
|
|
26
|
-
currencyCode = currency,
|
|
27
|
-
totalPrice = amount.toString(),
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
listOf(Klarna(), Card(), PayPal(), googlePay)
|
|
31
|
-
}
|
|
32
|
-
PrimerPaymentMethodTypeRN.Klarna -> listOf(Klarna())
|
|
33
|
-
PrimerPaymentMethodTypeRN.Card -> listOf(Card())
|
|
34
|
-
PrimerPaymentMethodTypeRN.PayPal -> listOf(PayPal())
|
|
35
|
-
PrimerPaymentMethodTypeRN.GooglePay -> {
|
|
36
|
-
val countryCode = settings.order?.countryCode ?: throw Exception()
|
|
37
|
-
val currency = settings.order.currency ?: throw Exception()
|
|
38
|
-
val amount = settings.order.amount ?: throw Exception()
|
|
39
|
-
|
|
40
|
-
val googlePay = GooglePay(
|
|
41
|
-
countryCode = countryCode,
|
|
42
|
-
currencyCode = currency,
|
|
43
|
-
totalPrice = amount.toString(),
|
|
44
|
-
)
|
|
45
|
-
listOf(googlePay)
|
|
46
|
-
}
|
|
47
|
-
PrimerPaymentMethodTypeRN.GoCardless -> {
|
|
48
|
-
val companyName = settings.business?.name ?: throw Exception()
|
|
49
|
-
val companyAddress = addressToString(settings.business.address) ?: throw Exception()
|
|
50
|
-
val goCardless = GoCardless(
|
|
51
|
-
companyName = companyName,
|
|
52
|
-
companyAddress = companyAddress
|
|
53
|
-
)
|
|
54
|
-
return listOf(goCardless)
|
|
55
|
-
}
|
|
56
|
-
else -> throw Exception()
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
companion object {
|
|
61
|
-
fun addressToString(a: PrimerAddressRN?): String? {
|
|
62
|
-
if (a == null) return null
|
|
63
|
-
val values = listOf<String?>(a.line1, a.line2, a.postalCode, a.city, a.country)
|
|
64
|
-
return values.reduce { acc, s ->
|
|
65
|
-
s?.let { "$acc$s, " }
|
|
66
|
-
}?.dropLast(2)
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
@Serializable
|
|
72
|
-
enum class PrimerPaymentMethodTypeRN {
|
|
73
|
-
Any,
|
|
74
|
-
Klarna,
|
|
75
|
-
Card,
|
|
76
|
-
PayPal,
|
|
77
|
-
GooglePay,
|
|
78
|
-
ApplePay,
|
|
79
|
-
GoCardless,
|
|
80
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
package com.primerioreactnative.datamodels
|
|
2
|
-
|
|
3
|
-
import io.primer.android.data.action.models.ClientSessionActionsRequest
|
|
4
|
-
import kotlinx.serialization.Serializable
|
|
5
|
-
|
|
6
|
-
@Serializable
|
|
7
|
-
data class PrimerOnClientSessionActionsRequestRN(
|
|
8
|
-
val actions: List<Action>,
|
|
9
|
-
) {
|
|
10
|
-
|
|
11
|
-
@Serializable
|
|
12
|
-
data class Action(
|
|
13
|
-
val type: String,
|
|
14
|
-
val paymentMethodType: String? = null,
|
|
15
|
-
val network: String? = null,
|
|
16
|
-
val params: Params? = null,
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
@Serializable
|
|
20
|
-
data class Params(
|
|
21
|
-
val billingAddress: Map<String, String?>
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
companion object {
|
|
25
|
-
fun build(
|
|
26
|
-
request: ClientSessionActionsRequest,
|
|
27
|
-
): PrimerOnClientSessionActionsRequestRN {
|
|
28
|
-
return PrimerOnClientSessionActionsRequestRN(
|
|
29
|
-
actions = request.actions.map { action ->
|
|
30
|
-
when (action) {
|
|
31
|
-
is ClientSessionActionsRequest.SetPaymentMethod -> {
|
|
32
|
-
Action(
|
|
33
|
-
type = "SELECT_PAYMENT_METHOD",
|
|
34
|
-
paymentMethodType = action.paymentMethodType,
|
|
35
|
-
network = action.network,
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
is ClientSessionActionsRequest.UnsetPaymentMethod -> {
|
|
39
|
-
Action(
|
|
40
|
-
type = "UNSELECT_PAYMENT_METHOD",
|
|
41
|
-
)
|
|
42
|
-
}
|
|
43
|
-
is ClientSessionActionsRequest.SetBillingAddress -> {
|
|
44
|
-
Action(
|
|
45
|
-
type = "SET_BILLING_ADDRESS",
|
|
46
|
-
params = Params(
|
|
47
|
-
billingAddress = mapOf(
|
|
48
|
-
"firstName" to action.firstName,
|
|
49
|
-
"lastName" to action.lastName,
|
|
50
|
-
"addressLine1" to action.addressLine1,
|
|
51
|
-
"addressLine2" to action.addressLine2,
|
|
52
|
-
"city" to action.city,
|
|
53
|
-
"postalCode" to action.postalCode,
|
|
54
|
-
"state" to action.state,
|
|
55
|
-
"countryCode" to action.countryCode
|
|
56
|
-
)
|
|
57
|
-
)
|
|
58
|
-
)
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
package com.primerioreactnative.datamodels
|
|
2
|
-
|
|
3
|
-
import io.primer.android.InputThemeData
|
|
4
|
-
import io.primer.android.PrimerTheme
|
|
5
|
-
import kotlinx.serialization.Serializable
|
|
6
|
-
|
|
7
|
-
@Serializable
|
|
8
|
-
class PrimerThemeRN(
|
|
9
|
-
private val colors: ColorThemeRN? = null,
|
|
10
|
-
val darkModeColors: ColorThemeRN? = null,
|
|
11
|
-
) {
|
|
12
|
-
fun format(): PrimerTheme {
|
|
13
|
-
return PrimerTheme.build(
|
|
14
|
-
input = InputThemeData()
|
|
15
|
-
)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@Serializable
|
|
20
|
-
class ColorThemeRN(
|
|
21
|
-
val mainColor: ColorRN? = null,
|
|
22
|
-
val contrastingColor: ColorRN? = null,
|
|
23
|
-
val background: ColorRN? = null,
|
|
24
|
-
val text: ColorRN? = null,
|
|
25
|
-
val contrastingText: ColorRN? = null,
|
|
26
|
-
val borders: ColorRN? = null,
|
|
27
|
-
val disabled: ColorRN? = null,
|
|
28
|
-
val error: ColorRN? = null,
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
@Serializable
|
|
32
|
-
class ColorRN(
|
|
33
|
-
private val red: Int,
|
|
34
|
-
private val green: Int,
|
|
35
|
-
private val blue: Int,
|
|
36
|
-
private val alpha: Int,
|
|
37
|
-
) {
|
|
38
|
-
|
|
39
|
-
val hex: String
|
|
40
|
-
get() {
|
|
41
|
-
val alpha = pad(Integer.toHexString(alpha))
|
|
42
|
-
val red = pad(Integer.toHexString(red))
|
|
43
|
-
val green = pad(Integer.toHexString(green))
|
|
44
|
-
val blue = pad(Integer.toHexString(blue))
|
|
45
|
-
return "#$alpha$red$green$blue"
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
private fun pad(s: String): String {
|
|
49
|
-
return if (s.length == 1) "0$s" else s
|
|
50
|
-
}
|
|
51
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
package com.primerioreactnative.utils
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Callback
|
|
4
|
-
import java.util.*
|
|
5
|
-
|
|
6
|
-
class PrimerEventQueueRN {
|
|
7
|
-
private var mQueue: Deque<String> = ArrayDeque()
|
|
8
|
-
private var mCallback: Callback? = null
|
|
9
|
-
|
|
10
|
-
fun addRequestAndPoll(request: String) {
|
|
11
|
-
mQueue.add(request)
|
|
12
|
-
poll()
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
fun poll(cb: Callback? = null) {
|
|
16
|
-
if (cb != null) mCallback = cb
|
|
17
|
-
val callback = mCallback ?: return
|
|
18
|
-
val next = mQueue.poll() ?: return
|
|
19
|
-
|
|
20
|
-
callback.invoke(next)
|
|
21
|
-
|
|
22
|
-
clear()
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
fun clear() {
|
|
26
|
-
mQueue.clear()
|
|
27
|
-
mCallback = null
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
struct PrimerInitRequest: Decodable {
|
|
2
|
-
let intent: String;
|
|
3
|
-
let token: String;
|
|
4
|
-
let metadata: PrimerRequestMetadata?;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
struct PrimerResumeRequest: Decodable {
|
|
8
|
-
let error: String?
|
|
9
|
-
let token: String?
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
struct PrimerRequestMetadata: Decodable {
|
|
13
|
-
let message: String?
|
|
14
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
|
|
10
|
-
var _RNPrimer = _interopRequireDefault(require("../RNPrimer"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
const {
|
|
15
|
-
PrimerHeadlessUniversalCheckout
|
|
16
|
-
} = _reactNative.NativeModules;
|
|
17
|
-
const eventEmitter = new _reactNative.NativeEventEmitter(PrimerHeadlessUniversalCheckout);
|
|
18
|
-
let primerSettings = null;
|
|
19
|
-
const NativePrimerHeadlessUniversalCheckout = {
|
|
20
|
-
///////////////////////////////////////////
|
|
21
|
-
// Event Emitter
|
|
22
|
-
///////////////////////////////////////////
|
|
23
|
-
addListener: (eventType, listener) => {
|
|
24
|
-
eventEmitter.addListener(eventType, listener);
|
|
25
|
-
},
|
|
26
|
-
removeListener: (eventType, listener) => {
|
|
27
|
-
eventEmitter.removeListener(eventType, listener);
|
|
28
|
-
},
|
|
29
|
-
|
|
30
|
-
removeAllListenersForEvent(eventType) {
|
|
31
|
-
eventEmitter.removeAllListeners(eventType);
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
removeAllListeners() {
|
|
35
|
-
eventEmitter.removeAllListeners('preparationStarted');
|
|
36
|
-
eventEmitter.removeAllListeners('paymentMethodPresented');
|
|
37
|
-
eventEmitter.removeAllListeners('tokenizationStarted');
|
|
38
|
-
eventEmitter.removeAllListeners('tokenizationSucceeded');
|
|
39
|
-
eventEmitter.removeAllListeners('resume');
|
|
40
|
-
eventEmitter.removeAllListeners('error');
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
///////////////////////////////////////////
|
|
44
|
-
// Native API
|
|
45
|
-
///////////////////////////////////////////
|
|
46
|
-
getAssetForPaymentMethod: (paymentMethodType, assetType) => {
|
|
47
|
-
return new Promise((resolve, reject) => {
|
|
48
|
-
try {
|
|
49
|
-
PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(paymentMethodType, assetType, err => {
|
|
50
|
-
reject(err);
|
|
51
|
-
}, url => {
|
|
52
|
-
resolve(url);
|
|
53
|
-
});
|
|
54
|
-
} catch (e) {
|
|
55
|
-
reject(e);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
},
|
|
59
|
-
getAssetForCardNetwork: (cardNetwork, assetType) => {
|
|
60
|
-
return new Promise((resolve, reject) => {
|
|
61
|
-
try {
|
|
62
|
-
PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(cardNetwork, assetType, err => {
|
|
63
|
-
reject(err);
|
|
64
|
-
}, url => {
|
|
65
|
-
resolve(url);
|
|
66
|
-
});
|
|
67
|
-
} catch (e) {
|
|
68
|
-
reject(e);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
startWithClientToken(clientToken, settings) {
|
|
74
|
-
primerSettings = settings;
|
|
75
|
-
return new Promise((resolve, reject) => {
|
|
76
|
-
PrimerHeadlessUniversalCheckout.startWithClientToken(clientToken, JSON.stringify(settings), err => {
|
|
77
|
-
console.error(err);
|
|
78
|
-
reject(err);
|
|
79
|
-
}, paymentMethodTypes => {
|
|
80
|
-
resolve({
|
|
81
|
-
paymentMethodTypes
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
showPaymentMethod: async paymentMethod => {
|
|
88
|
-
if (primerSettings) {
|
|
89
|
-
let implementedRNCallbacks = {
|
|
90
|
-
isTokenAddedToVaultImplemented: false,
|
|
91
|
-
isOnResumeSuccessImplemented: primerSettings.onResumeSuccess !== undefined,
|
|
92
|
-
isOnResumeErrorImplemented: primerSettings.onFailure !== undefined,
|
|
93
|
-
isOnCheckoutDismissedImplemented: false,
|
|
94
|
-
isCheckoutFailedImplemented: primerSettings.onFailure !== undefined,
|
|
95
|
-
isClientSessionActionsImplemented: false
|
|
96
|
-
};
|
|
97
|
-
await _RNPrimer.default.setImplementedRNCallbacks(implementedRNCallbacks);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethod);
|
|
101
|
-
},
|
|
102
|
-
|
|
103
|
-
resumeWithClientToken(resumeToken) {
|
|
104
|
-
PrimerHeadlessUniversalCheckout.resumeWithClientToken(resumeToken);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
};
|
|
108
|
-
var _default = NativePrimerHeadlessUniversalCheckout;
|
|
109
|
-
exports.default = _default;
|
|
110
|
-
//# sourceMappingURL=NativePrimerHeadlessUniversalCheckout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["NativePrimerHeadlessUniversalCheckout.ts"],"names":["PrimerHeadlessUniversalCheckout","NativeModules","eventEmitter","NativeEventEmitter","primerSettings","NativePrimerHeadlessUniversalCheckout","addListener","eventType","listener","removeListener","removeAllListenersForEvent","removeAllListeners","getAssetForPaymentMethod","paymentMethodType","assetType","Promise","resolve","reject","getAssetForPaymentMethodType","err","url","e","getAssetForCardNetwork","cardNetwork","startWithClientToken","clientToken","settings","JSON","stringify","console","error","paymentMethodTypes","showPaymentMethod","paymentMethod","implementedRNCallbacks","isTokenAddedToVaultImplemented","isOnResumeSuccessImplemented","onResumeSuccess","undefined","isOnResumeErrorImplemented","onFailure","isOnCheckoutDismissedImplemented","isCheckoutFailedImplemented","isClientSessionActionsImplemented","RNPrimer","setImplementedRNCallbacks","resumeWithClientToken","resumeToken"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\nimport type { PrimerSettings } from 'src/models/primer-settings';\nimport RNPrimer from '../RNPrimer';\nimport type { PrimerHeadlessUniversalCheckoutCallbacks } from './types';\n\nconst { PrimerHeadlessUniversalCheckout } = NativeModules;\n\nconst eventEmitter = new NativeEventEmitter(PrimerHeadlessUniversalCheckout);\n\ntype EventType =\n | 'preparationStarted'\n | 'paymentMethodPresented'\n | 'tokenizationStarted'\n | 'tokenizationSucceeded'\n | 'resume'\n | 'error';\n\nlet primerSettings: (PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks) | null = null;\n\nconst NativePrimerHeadlessUniversalCheckout = {\n ///////////////////////////////////////////\n // Event Emitter\n ///////////////////////////////////////////\n addListener: (eventType: EventType, listener: (...args: any[]) => any) => {\n eventEmitter.addListener(eventType, listener);\n },\n\n removeListener: (eventType: EventType, listener: (...args: any[]) => any) => {\n eventEmitter.removeListener(eventType, listener);\n },\n\n removeAllListenersForEvent(eventType: EventType) {\n eventEmitter.removeAllListeners(eventType);\n },\n\n removeAllListeners() {\n eventEmitter.removeAllListeners('preparationStarted');\n eventEmitter.removeAllListeners('paymentMethodPresented');\n eventEmitter.removeAllListeners('tokenizationStarted');\n eventEmitter.removeAllListeners('tokenizationSucceeded');\n eventEmitter.removeAllListeners('resume');\n eventEmitter.removeAllListeners('error');\n },\n\n ///////////////////////////////////////////\n // Native API\n ///////////////////////////////////////////\n getAssetForPaymentMethod: (\n paymentMethodType: string,\n assetType: 'logo' | 'icon'\n ): Promise<string> => {\n return new Promise((resolve, reject) => {\n try {\n PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(\n paymentMethodType,\n assetType,\n (err: Error) => {\n reject(err);\n },\n (url: string) => {\n resolve(url);\n }\n );\n } catch (e) {\n reject(e);\n }\n });\n },\n\n getAssetForCardNetwork: (\n cardNetwork: string,\n assetType: 'logo' | 'icon'\n ): Promise<string> => {\n return new Promise((resolve, reject) => {\n try {\n PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(\n cardNetwork,\n assetType,\n (err: Error) => {\n reject(err);\n },\n (url: string) => {\n resolve(url);\n }\n );\n } catch (e) {\n reject(e);\n }\n });\n },\n\n startWithClientToken(clientToken: string, settings: any): Promise<any> {\n primerSettings = settings;\n\n return new Promise((resolve, reject) => {\n PrimerHeadlessUniversalCheckout.startWithClientToken(\n clientToken,\n JSON.stringify(settings),\n (err: Error) => {\n console.error(err);\n reject(err);\n },\n (paymentMethodTypes: string[]) => {\n resolve({ paymentMethodTypes });\n }\n );\n });\n },\n\n showPaymentMethod: async (paymentMethod: string) => {\n if (primerSettings) {\n let implementedRNCallbacks: any = {\n isTokenAddedToVaultImplemented: false,\n isOnResumeSuccessImplemented: (primerSettings.onResumeSuccess !== undefined),\n isOnResumeErrorImplemented: (primerSettings.onFailure !== undefined),\n isOnCheckoutDismissedImplemented: false,\n isCheckoutFailedImplemented: (primerSettings.onFailure !== undefined),\n isClientSessionActionsImplemented: false\n };\n \n await RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);\n }\n \n PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethod);\n },\n\n resumeWithClientToken(resumeToken: string) {\n PrimerHeadlessUniversalCheckout.resumeWithClientToken(resumeToken);\n }\n};\n\nexport default NativePrimerHeadlessUniversalCheckout;\n"]}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var PaymentInstrumentType;
|
|
4
|
-
|
|
5
|
-
(function (PaymentInstrumentType) {
|
|
6
|
-
PaymentInstrumentType["CARD"] = "PAYMENT_CARD";
|
|
7
|
-
PaymentInstrumentType["APPLE_PAY"] = "APPLE_PAY";
|
|
8
|
-
PaymentInstrumentType["GOOGLE_PAY"] = "GOOGLE_PAY";
|
|
9
|
-
PaymentInstrumentType["PAYPAL"] = "PAYPAL_ORDER";
|
|
10
|
-
PaymentInstrumentType["PAYPAL_VAULTED"] = "PAYPAL_BILLING_AGREEMENT";
|
|
11
|
-
PaymentInstrumentType["GO_CARDLESS"] = "GOCARDLESS";
|
|
12
|
-
PaymentInstrumentType["PAY_NL_IDEAL"] = "PAY_NL_IDEAL";
|
|
13
|
-
})(PaymentInstrumentType || (PaymentInstrumentType = {}));
|
|
14
|
-
|
|
15
|
-
var TokenType;
|
|
16
|
-
|
|
17
|
-
(function (TokenType) {
|
|
18
|
-
TokenType["SINGLE_USE"] = "SINGLE_USE";
|
|
19
|
-
TokenType["MULTI_USE"] = "MULTI_USE";
|
|
20
|
-
})(TokenType || (TokenType = {}));
|
|
21
|
-
|
|
22
|
-
var ThreeDSecureStatus;
|
|
23
|
-
|
|
24
|
-
(function (ThreeDSecureStatus) {
|
|
25
|
-
ThreeDSecureStatus["SUCCESS"] = "AUTH_SUCCESS";
|
|
26
|
-
ThreeDSecureStatus["FAILED"] = "AUTH_FAILED";
|
|
27
|
-
ThreeDSecureStatus["SKIPPED"] = "SKIPPED";
|
|
28
|
-
ThreeDSecureStatus["CHALLENGE"] = "CHALLENGE";
|
|
29
|
-
})(ThreeDSecureStatus || (ThreeDSecureStatus = {}));
|
|
30
|
-
//# sourceMappingURL=payment-instrument-token.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["payment-instrument-token.ts"],"names":["PaymentInstrumentType","TokenType","ThreeDSecureStatus"],"mappings":";;IAUKA,qB;;WAAAA,qB;AAAAA,EAAAA,qB;AAAAA,EAAAA,qB;AAAAA,EAAAA,qB;AAAAA,EAAAA,qB;AAAAA,EAAAA,qB;AAAAA,EAAAA,qB;AAAAA,EAAAA,qB;GAAAA,qB,KAAAA,qB;;IAUAC,S;;WAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,KAAAA,S;;IAiBAC,kB;;WAAAA,kB;AAAAA,EAAAA,kB;AAAAA,EAAAA,kB;AAAAA,EAAAA,kB;AAAAA,EAAAA,kB;GAAAA,kB,KAAAA,kB","sourcesContent":["export interface IPaymentMethodToken<T, U extends PaymentInstrumentType> {\n token: string;\n analyticsId: string;\n tokenType: TokenType;\n paymentInstrumentData: T;\n paymentInstrumentType: U;\n threeDSecureAuthentication: Nullable<ThreeDSAuthenticationData>;\n vaultData: Nullable<VaultData>;\n}\n\nenum PaymentInstrumentType {\n CARD = 'PAYMENT_CARD',\n APPLE_PAY = 'APPLE_PAY',\n GOOGLE_PAY = 'GOOGLE_PAY',\n PAYPAL = 'PAYPAL_ORDER',\n PAYPAL_VAULTED = 'PAYPAL_BILLING_AGREEMENT',\n GO_CARDLESS = 'GOCARDLESS',\n PAY_NL_IDEAL = 'PAY_NL_IDEAL',\n}\n\nenum TokenType {\n SINGLE_USE = 'SINGLE_USE',\n MULTI_USE = 'MULTI_USE',\n}\n\ninterface VaultData {\n customerId: string;\n}\n\ninterface ThreeDSAuthenticationData {\n responseCode: ThreeDSecureStatus;\n reasonCode?: string;\n reasonText?: string;\n protocolVersion: string;\n challengeIssued: boolean;\n}\n\nenum ThreeDSecureStatus {\n SUCCESS = 'AUTH_SUCCESS',\n FAILED = 'AUTH_FAILED',\n SKIPPED = 'SKIPPED',\n CHALLENGE = 'CHALLENGE',\n}\n\ntype Nullable<T> = T | null;\n\nexport type PaymentInstrumentToken =\n | PaymentCardToken\n | PayPalBillingAgreementToken\n | GoCardlessToken\n | IdealPayToken\n | IPaymentMethodToken<any, any>;\n\ntype PaymentCardToken = IPaymentMethodToken<\n PaymentCardDetails,\n PaymentInstrumentType.CARD\n>;\n\ntype PayPalBillingAgreementToken = IPaymentMethodToken<\n PayPalBillingAgreementDetails,\n PaymentInstrumentType.PAYPAL_VAULTED\n>;\n\ntype GoCardlessToken = IPaymentMethodToken<\n GoCardlessDetails,\n PaymentInstrumentType.GO_CARDLESS\n>;\n\ntype IdealPayToken = IPaymentMethodToken<\n Record<string, never>,\n PaymentInstrumentType.PAY_NL_IDEAL\n>;\n\ninterface PaymentCardDetails {\n last4Digits: string;\n cardholderName: string;\n network: string;\n}\n\ninterface PayPalBillingAgreementDetails {\n paypalBillingAgreementId: string;\n externalPayerInfo?: ExternalPayerInfo;\n shippingAddress?: BillingAddress;\n}\n\ninterface GoCardlessDetails {\n gocardlessMandateId: string;\n}\n\ninterface ExternalPayerInfo {\n externalPayerId: string;\n firstName?: string;\n lastName?: string;\n email?: string;\n}\n\ninterface BillingAddress {\n firstName: string;\n lastName: string;\n addressLine1: string;\n addressLine2?: string;\n addressLine3?: string;\n city: string;\n state?: string;\n countryCode: Alpha2CountryCode;\n postalCode: string;\n}\n\ntype Alpha2CountryCode = 'ES' | 'FR' | 'GB' | 'DE' | 'PL' | 'IT';\n"]}
|