@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
|
@@ -10,30 +10,43 @@ import PrimerSDK
|
|
|
10
10
|
|
|
11
11
|
@objc
|
|
12
12
|
enum PrimerHeadlessUniversalCheckoutEvents: Int, CaseIterable {
|
|
13
|
-
|
|
14
|
-
case
|
|
15
|
-
case
|
|
16
|
-
case
|
|
17
|
-
case
|
|
18
|
-
case
|
|
19
|
-
case
|
|
13
|
+
|
|
14
|
+
case onHUCTokenizeStart = 0
|
|
15
|
+
case onHUCPrepareStart
|
|
16
|
+
case onHUCAvailablePaymentMethodsLoaded
|
|
17
|
+
case onHUCPaymentMethodShow
|
|
18
|
+
case onTokenizeSuccess
|
|
19
|
+
case onResumeSuccess
|
|
20
|
+
case onBeforePaymentCreate
|
|
21
|
+
case onBeforeClientSessionUpdate
|
|
22
|
+
case onClientSessionUpdate
|
|
23
|
+
case onCheckoutComplete
|
|
24
|
+
case onError
|
|
20
25
|
|
|
21
26
|
var stringValue: String {
|
|
22
27
|
switch self {
|
|
23
|
-
case .
|
|
24
|
-
return "
|
|
25
|
-
case .
|
|
26
|
-
return "
|
|
27
|
-
case .
|
|
28
|
-
return "
|
|
29
|
-
case .
|
|
30
|
-
return "
|
|
31
|
-
case .
|
|
32
|
-
return "
|
|
33
|
-
case .
|
|
34
|
-
return "
|
|
35
|
-
case .
|
|
36
|
-
return "
|
|
28
|
+
case .onHUCPrepareStart:
|
|
29
|
+
return "onHUCPrepareStart"
|
|
30
|
+
case .onHUCTokenizeStart:
|
|
31
|
+
return "onHUCTokenizeStart"
|
|
32
|
+
case .onHUCPaymentMethodShow:
|
|
33
|
+
return "onHUCPaymentMethodShow"
|
|
34
|
+
case .onTokenizeSuccess:
|
|
35
|
+
return "onTokenizeSuccess"
|
|
36
|
+
case .onResumeSuccess:
|
|
37
|
+
return "onResumeSuccess"
|
|
38
|
+
case .onBeforePaymentCreate:
|
|
39
|
+
return "onBeforePaymentCreate"
|
|
40
|
+
case .onBeforeClientSessionUpdate:
|
|
41
|
+
return "onBeforeClientSessionUpdate"
|
|
42
|
+
case .onClientSessionUpdate:
|
|
43
|
+
return "onClientSessionUpdate"
|
|
44
|
+
case .onCheckoutComplete:
|
|
45
|
+
return "onCheckoutComplete"
|
|
46
|
+
case .onHUCAvailablePaymentMethodsLoaded:
|
|
47
|
+
return "onHUCAvailablePaymentMethodsLoaded"
|
|
48
|
+
case .onError:
|
|
49
|
+
return "onError"
|
|
37
50
|
}
|
|
38
51
|
}
|
|
39
52
|
}
|
|
@@ -41,7 +54,11 @@ enum PrimerHeadlessUniversalCheckoutEvents: Int, CaseIterable {
|
|
|
41
54
|
@objc(PrimerHeadlessUniversalCheckout)
|
|
42
55
|
class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
43
56
|
|
|
44
|
-
private var
|
|
57
|
+
private var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
|
|
58
|
+
private var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
|
|
59
|
+
private var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
|
|
60
|
+
private var primerDidFailWithErrorDecisionHandler: ((_ errorMessage: String) -> Void)?
|
|
61
|
+
private var implementedRNCallbacks: ImplementedRNCallbacks?
|
|
45
62
|
|
|
46
63
|
override class func requiresMainQueueSetup() -> Bool {
|
|
47
64
|
return true
|
|
@@ -67,9 +84,7 @@ class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
|
67
84
|
var settings: PrimerSettings?
|
|
68
85
|
if let settingsStr = settingsStr {
|
|
69
86
|
do {
|
|
70
|
-
|
|
71
|
-
let settingsRN = try JSONDecoder().decode(PrimerSettingsRN.self, from: settingsData)
|
|
72
|
-
settings = settingsRN.asPrimerSettings()
|
|
87
|
+
settings = try PrimerSettings.initialize(with: settingsStr)
|
|
73
88
|
} catch {
|
|
74
89
|
errorCallback([error.rnError])
|
|
75
90
|
return
|
|
@@ -85,11 +100,6 @@ class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
|
85
100
|
}
|
|
86
101
|
}
|
|
87
102
|
|
|
88
|
-
@objc
|
|
89
|
-
public func resumeWithClientToken(_ resumeToken: String) {
|
|
90
|
-
self.resumeTokenCompletion?(resumeToken)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
103
|
@objc
|
|
94
104
|
public func getAssetForPaymentMethodType(_ paymentMethodTypeStr: String,
|
|
95
105
|
assetType assetTypeStr: String,
|
|
@@ -98,7 +108,7 @@ class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
|
98
108
|
{
|
|
99
109
|
do {
|
|
100
110
|
try validate(assetStr: paymentMethodTypeStr, assetTypeStr: assetTypeStr)
|
|
101
|
-
let paymentMethodType =
|
|
111
|
+
let paymentMethodType = PrimerPaymentMethodType(rawValue: paymentMethodTypeStr)
|
|
102
112
|
|
|
103
113
|
guard let image = PrimerHeadlessUniversalCheckout.getAsset(for: paymentMethodType, assetType: PrimerAsset.ImageType(rawValue: assetTypeStr)!) else {
|
|
104
114
|
let err = NativeError(errorId: "missing-asset", errorDescription: "Failed to find \(assetTypeStr) for \(paymentMethodTypeStr)", recoverySuggestion: nil)
|
|
@@ -143,9 +153,18 @@ class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
|
143
153
|
}
|
|
144
154
|
|
|
145
155
|
@objc
|
|
146
|
-
public func showPaymentMethod(_ paymentMethodTypeStr: String
|
|
156
|
+
public func showPaymentMethod(_ paymentMethodTypeStr: String,
|
|
157
|
+
resolver: RCTPromiseResolveBlock,
|
|
158
|
+
rejecter: RCTPromiseRejectBlock)
|
|
159
|
+
{
|
|
147
160
|
let paymentMethodType = PrimerPaymentMethodType(rawValue: paymentMethodTypeStr)
|
|
148
161
|
PrimerHeadlessUniversalCheckout.current.showPaymentMethod(paymentMethodType)
|
|
162
|
+
resolver(nil)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@objc
|
|
166
|
+
public func disposePrimerHeadlessUniversalCheckout() {
|
|
167
|
+
|
|
149
168
|
}
|
|
150
169
|
|
|
151
170
|
// MARK: - HELPERS
|
|
@@ -153,7 +172,7 @@ class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
|
153
172
|
private func validate(assetStr: String, assetTypeStr: String) throws {
|
|
154
173
|
var errors: [NativeError] = []
|
|
155
174
|
|
|
156
|
-
if
|
|
175
|
+
if PrimerPaymentMethodType(rawValue: assetStr) != .other(rawValue: assetStr) {
|
|
157
176
|
// ...
|
|
158
177
|
} else if CardNetwork(rawValue: assetStr) != nil {
|
|
159
178
|
// ...
|
|
@@ -194,48 +213,281 @@ class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
|
194
213
|
try pngData.write(to: imageURL)
|
|
195
214
|
return imageURL
|
|
196
215
|
}
|
|
216
|
+
|
|
217
|
+
// MARK: - DECISION HANDLERS
|
|
218
|
+
|
|
219
|
+
// MARK: Tokenization
|
|
220
|
+
|
|
221
|
+
@objc
|
|
222
|
+
public func handleTokenizationNewClientToken(_ newClientToken: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
223
|
+
DispatchQueue.main.async {
|
|
224
|
+
self.primerDidTokenizePaymentMethodDecisionHandler?(newClientToken, nil)
|
|
225
|
+
self.primerDidTokenizePaymentMethodDecisionHandler = nil
|
|
226
|
+
resolver(nil)
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@objc
|
|
231
|
+
public func handleTokenizationSuccess(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
232
|
+
DispatchQueue.main.async {
|
|
233
|
+
self.primerDidTokenizePaymentMethodDecisionHandler?(nil, nil)
|
|
234
|
+
self.primerDidTokenizePaymentMethodDecisionHandler = nil
|
|
235
|
+
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerTokenizationHandler's handleSuccess function is not available on HUC."])
|
|
236
|
+
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@objc
|
|
241
|
+
public func handleTokenizationFailure(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
242
|
+
DispatchQueue.main.async {
|
|
243
|
+
self.primerDidTokenizePaymentMethodDecisionHandler?(nil, errorMessage ?? "")
|
|
244
|
+
self.primerDidTokenizePaymentMethodDecisionHandler = nil
|
|
245
|
+
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerTokenizationHandler's handleFailure function is not available on HUC."])
|
|
246
|
+
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// MARK: Resume Payment
|
|
251
|
+
|
|
252
|
+
@objc
|
|
253
|
+
public func handleResumeWithNewClientToken(_ newClientToken: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
254
|
+
DispatchQueue.main.async {
|
|
255
|
+
self.primerDidResumeWithDecisionHandler?(newClientToken, nil)
|
|
256
|
+
self.primerDidResumeWithDecisionHandler = nil
|
|
257
|
+
resolver(nil)
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
@objc
|
|
262
|
+
public func handleResumeSuccess(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
263
|
+
DispatchQueue.main.async {
|
|
264
|
+
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerResumeHandler's handleSuccess function is not available on HUC."])
|
|
265
|
+
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
@objc
|
|
270
|
+
public func handleResumeFailure(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
271
|
+
DispatchQueue.main.async {
|
|
272
|
+
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerResumeHandler's handleFailure function is not available on HUC."])
|
|
273
|
+
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// MARK: Payment Creation
|
|
278
|
+
|
|
279
|
+
@objc
|
|
280
|
+
public func handlePaymentCreationAbort(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
281
|
+
DispatchQueue.main.async {
|
|
282
|
+
self.primerWillCreatePaymentWithDataDecisionHandler?(errorMessage ?? "")
|
|
283
|
+
self.primerWillCreatePaymentWithDataDecisionHandler = nil
|
|
284
|
+
resolver(nil)
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
@objc
|
|
289
|
+
public func handlePaymentCreationContinue(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
290
|
+
DispatchQueue.main.async {
|
|
291
|
+
self.primerWillCreatePaymentWithDataDecisionHandler?(nil)
|
|
292
|
+
self.primerWillCreatePaymentWithDataDecisionHandler = nil
|
|
293
|
+
resolver(nil)
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// MARK: Helpers
|
|
298
|
+
|
|
299
|
+
private func detectImplemetedCallbacks() {
|
|
300
|
+
sendEvent(withName: PrimerEvents.detectImplementedRNCallbacks.stringValue, body: nil)
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
@objc
|
|
304
|
+
public func setImplementedRNCallbacks(_ implementedRNCallbacksStr: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
305
|
+
DispatchQueue.main.async {
|
|
306
|
+
do {
|
|
307
|
+
guard let implementedRNCallbacksData = implementedRNCallbacksStr.data(using: .utf8) else {
|
|
308
|
+
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to convert string to data"])
|
|
309
|
+
throw err
|
|
310
|
+
}
|
|
311
|
+
self.implementedRNCallbacks = try JSONDecoder().decode(ImplementedRNCallbacks.self, from: implementedRNCallbacksData)
|
|
312
|
+
resolver(nil)
|
|
313
|
+
} catch {
|
|
314
|
+
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: false)
|
|
315
|
+
rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
private func handleRNBridgeError(_ error: Error, checkoutData: PrimerCheckoutData?, stopOnDebug: Bool) {
|
|
321
|
+
DispatchQueue.main.async {
|
|
322
|
+
if stopOnDebug {
|
|
323
|
+
assertionFailure(error.localizedDescription)
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
var body: [String: Any] = ["error": error.rnError]
|
|
327
|
+
if let checkoutData = checkoutData,
|
|
328
|
+
let data = try? JSONEncoder().encode(checkoutData),
|
|
329
|
+
let json = try? JSONSerialization.jsonObject(with: data){
|
|
330
|
+
body["checkoutData"] = json
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onError.stringValue, body: body)
|
|
334
|
+
}
|
|
335
|
+
}
|
|
197
336
|
}
|
|
198
337
|
|
|
199
338
|
// MARK: - EVENTS
|
|
200
339
|
|
|
201
340
|
extension RNTPrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutDelegate {
|
|
202
|
-
|
|
203
|
-
|
|
341
|
+
|
|
342
|
+
func primerHeadlessUniversalCheckoutPreparationDidStart(for paymentMethodType: String) {
|
|
343
|
+
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCPrepareStart.stringValue, body: ["paymentMethodType": paymentMethodType])
|
|
204
344
|
}
|
|
205
345
|
|
|
206
|
-
func
|
|
207
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.
|
|
346
|
+
func primerHeadlessUniversalCheckoutTokenizationDidStart(for paymentMethodType: String) {
|
|
347
|
+
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCTokenizeStart.stringValue, body: ["paymentMethodType": paymentMethodType])
|
|
208
348
|
}
|
|
209
349
|
|
|
210
|
-
func
|
|
211
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.
|
|
350
|
+
func primerHeadlessUniversalCheckoutDidLoadAvailablePaymentMethods(_ paymentMethodTypes: [String]) {
|
|
351
|
+
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCAvailablePaymentMethodsLoaded.stringValue, body: ["paymentMethodTypes": paymentMethodTypes])
|
|
212
352
|
}
|
|
213
353
|
|
|
214
|
-
func
|
|
215
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.
|
|
354
|
+
func primerHeadlessUniversalCheckoutPaymentMethodDidShow(for paymentMethodType: String) {
|
|
355
|
+
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCPaymentMethodShow.stringValue, body: ["paymentMethodType": paymentMethodType])
|
|
216
356
|
}
|
|
217
357
|
|
|
218
|
-
func
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
358
|
+
func primerHeadlessUniversalCheckoutDidTokenizePaymentMethod(_ paymentMethodTokenData: PrimerPaymentMethodTokenData, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
|
|
359
|
+
if self.implementedRNCallbacks?.isOnTokenizeSuccessImplemented == true {
|
|
360
|
+
self.primerDidTokenizePaymentMethodDecisionHandler = { (newClientToken, errorMessage) in
|
|
361
|
+
DispatchQueue.main.async {
|
|
362
|
+
if let errorMessage = errorMessage {
|
|
363
|
+
decisionHandler(.fail(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
|
|
364
|
+
} else if let newClientToken = newClientToken {
|
|
365
|
+
decisionHandler(.continueWithNewClientToken(newClientToken))
|
|
366
|
+
} else {
|
|
367
|
+
decisionHandler(.succeed())
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
222
371
|
|
|
223
|
-
|
|
224
|
-
|
|
372
|
+
do {
|
|
373
|
+
let data = try JSONEncoder().encode(paymentMethodTokenData)
|
|
374
|
+
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
|
|
375
|
+
DispatchQueue.main.async {
|
|
376
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onTokenizeSuccess.stringValue, body: json)
|
|
377
|
+
}
|
|
378
|
+
} catch {
|
|
379
|
+
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
380
|
+
}
|
|
381
|
+
} else {
|
|
382
|
+
// RN dev hasn't opted in on listening the tokenization callback.
|
|
383
|
+
// Throw an error if it's the manual flow, ignore if it's the
|
|
384
|
+
// auto flow.
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
func primerHeadlessUniversalCheckoutDidResumeWith(_ resumeToken: String, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
|
|
389
|
+
if self.implementedRNCallbacks?.isOnResumeSuccessImplemented == true {
|
|
390
|
+
self.primerDidResumeWithDecisionHandler = { (resumeToken, errorMessage) in
|
|
391
|
+
DispatchQueue.main.async {
|
|
392
|
+
if let errorMessage = errorMessage {
|
|
393
|
+
decisionHandler(.fail(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
|
|
394
|
+
} else if let resumeToken = resumeToken {
|
|
395
|
+
decisionHandler(.continueWithNewClientToken(resumeToken))
|
|
396
|
+
} else {
|
|
397
|
+
decisionHandler(.succeed())
|
|
398
|
+
}
|
|
399
|
+
}
|
|
225
400
|
}
|
|
226
401
|
|
|
227
|
-
|
|
402
|
+
DispatchQueue.main.async {
|
|
403
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onResumeSuccess.stringValue, body: ["resumeToken": resumeToken])
|
|
404
|
+
}
|
|
405
|
+
} else {
|
|
406
|
+
// RN dev hasn't opted in on listening the tokenization callback.
|
|
407
|
+
// Throw an error if it's the manual flow.
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
func primerHeadlessUniversalCheckoutDidFail(withError err: Error) {
|
|
412
|
+
if self.implementedRNCallbacks?.isOnErrorImplemented == true {
|
|
413
|
+
// Send the error message to the RN bridge.
|
|
414
|
+
self.handleRNBridgeError(err, checkoutData: nil, stopOnDebug: false)
|
|
228
415
|
|
|
229
|
-
}
|
|
230
|
-
|
|
416
|
+
} else {
|
|
417
|
+
// RN dev hasn't opted in on listening SDK dismiss.
|
|
418
|
+
// Ignore!
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
func primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(_ data: PrimerCheckoutData) {
|
|
423
|
+
DispatchQueue.main.async {
|
|
424
|
+
if self.implementedRNCallbacks?.isOnCheckoutCompleteImplemented == true {
|
|
425
|
+
do {
|
|
426
|
+
let checkoutData = try JSONEncoder().encode(data)
|
|
427
|
+
let checkoutJson = try JSONSerialization.jsonObject(with: checkoutData, options: .allowFragments)
|
|
428
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onCheckoutComplete.stringValue, body: checkoutJson)
|
|
429
|
+
} catch {
|
|
430
|
+
self.handleRNBridgeError(error, checkoutData: data, stopOnDebug: true)
|
|
431
|
+
}
|
|
432
|
+
} else {
|
|
433
|
+
let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onCheckoutComplete] should be implemented."])
|
|
434
|
+
self.handleRNBridgeError(err, checkoutData: data, stopOnDebug: false)
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
func primerHeadlessUniversalCheckoutClientSessionWillUpdate() {
|
|
440
|
+
if self.implementedRNCallbacks?.isOnBeforeClientSessionUpdateImplemented == true {
|
|
441
|
+
DispatchQueue.main.async {
|
|
442
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onBeforeClientSessionUpdate.stringValue, body: nil)
|
|
443
|
+
}
|
|
444
|
+
} else {
|
|
445
|
+
// RN Dev hasn't implemented this callback, ignore.
|
|
231
446
|
}
|
|
232
447
|
}
|
|
233
448
|
|
|
234
|
-
func
|
|
235
|
-
|
|
449
|
+
func primerHeadlessUniversalCheckoutClientSessionDidUpdate(_ clientSession: PrimerClientSession) {
|
|
450
|
+
if self.implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true {
|
|
451
|
+
do {
|
|
452
|
+
let data = try JSONEncoder().encode(clientSession)
|
|
453
|
+
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
|
|
454
|
+
DispatchQueue.main.async {
|
|
455
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onClientSessionUpdate.stringValue, body: json)
|
|
456
|
+
}
|
|
457
|
+
} catch {
|
|
458
|
+
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
459
|
+
}
|
|
460
|
+
} else {
|
|
461
|
+
// RN Dev hasn't implemented this callback, ignore.
|
|
462
|
+
}
|
|
236
463
|
}
|
|
237
464
|
|
|
238
|
-
func
|
|
239
|
-
|
|
465
|
+
func primerHeadlessUniversalCheckoutWillCreatePaymentWithData(_ data: PrimerCheckoutPaymentMethodData, decisionHandler: @escaping (PrimerPaymentCreationDecision) -> Void) {
|
|
466
|
+
if self.implementedRNCallbacks?.isOnBeforePaymentCreateImplemented == true {
|
|
467
|
+
self.primerWillCreatePaymentWithDataDecisionHandler = { errorMessage in
|
|
468
|
+
DispatchQueue.main.async {
|
|
469
|
+
if let errorMessage = errorMessage {
|
|
470
|
+
decisionHandler(.abortPaymentCreation(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
|
|
471
|
+
} else {
|
|
472
|
+
decisionHandler(.continuePaymentCreation())
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
DispatchQueue.main.async {
|
|
478
|
+
do {
|
|
479
|
+
let checkoutPaymentmethodData = try JSONEncoder().encode(data)
|
|
480
|
+
let checkoutPaymentmethodJson = try JSONSerialization.jsonObject(with: checkoutPaymentmethodData, options: .allowFragments)
|
|
481
|
+
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onBeforePaymentCreate.stringValue, body: checkoutPaymentmethodJson)
|
|
482
|
+
} catch {
|
|
483
|
+
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
} else {
|
|
487
|
+
// RN Dev hasn't implemented this callback, send a decision to continue the flow.
|
|
488
|
+
DispatchQueue.main.async {
|
|
489
|
+
decisionHandler(.continuePaymentCreation())
|
|
490
|
+
}
|
|
491
|
+
}
|
|
240
492
|
}
|
|
241
493
|
}
|
package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift
CHANGED
|
@@ -19,7 +19,11 @@ class RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: RCTViewManager {
|
|
|
19
19
|
private lazy var cardFormUIManager: PrimerHeadlessUniversalCheckout.CardFormUIManager = {
|
|
20
20
|
return try! PrimerHeadlessUniversalCheckout.CardFormUIManager()
|
|
21
21
|
}()
|
|
22
|
-
private var successCallback: RCTResponseSenderBlock?
|
|
22
|
+
private var successCallback: RCTResponseSenderBlock? {
|
|
23
|
+
didSet {
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
}
|
|
23
27
|
|
|
24
28
|
deinit {
|
|
25
29
|
print("🧨 deinit: \(self) \(Unmanaged.passUnretained(self).toOpaque())")
|
package/ios/RNTPrimer.m
CHANGED
|
@@ -10,34 +10,50 @@
|
|
|
10
10
|
|
|
11
11
|
@interface RCT_EXTERN_MODULE(NativePrimer, RCTEventEmitter)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
// MARK: - PRIMER SDK API
|
|
14
14
|
|
|
15
|
-
RCT_EXTERN_METHOD(
|
|
16
|
-
|
|
17
|
-
RCT_EXTERN_METHOD(showUniversalCheckout:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
15
|
+
RCT_EXTERN_METHOD(configure:(NSString *)settingsStr resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
18
16
|
|
|
19
17
|
RCT_EXTERN_METHOD(showUniversalCheckoutWithClientToken:(NSString *)clientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
20
18
|
|
|
21
|
-
RCT_EXTERN_METHOD(
|
|
19
|
+
RCT_EXTERN_METHOD(showVaultManagerWithClientToken: (NSString *)clientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
22
20
|
|
|
23
|
-
RCT_EXTERN_METHOD(
|
|
21
|
+
RCT_EXTERN_METHOD(showPaymentMethod:(NSString *)paymentMethodStr intent:(NSString *)intentStr clientToken:(NSString *)clientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
24
22
|
|
|
23
|
+
RCT_EXTERN_METHOD(dismiss)
|
|
25
24
|
|
|
25
|
+
RCT_EXTERN_METHOD(dispose)
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
// MARK: - HELPERS
|
|
28
28
|
|
|
29
|
-
RCT_EXTERN_METHOD(
|
|
29
|
+
RCT_EXTERN_METHOD(setImplementedRNCallbacks:(NSString *)implementedRNCallbacksStr resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
// MARK: - DECISION HANDLERS
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
// MARK: Tokenization Handlers
|
|
34
34
|
|
|
35
|
+
RCT_EXTERN_METHOD(handleTokenizationNewClientToken:(NSString *)newClientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
35
36
|
|
|
37
|
+
RCT_EXTERN_METHOD(handleTokenizationSuccess:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
36
38
|
|
|
39
|
+
RCT_EXTERN_METHOD(handleTokenizationFailure:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
37
40
|
|
|
41
|
+
// MARK: Resume Handlers
|
|
38
42
|
|
|
43
|
+
RCT_EXTERN_METHOD(handleResumeWithNewClientToken:(NSString *)newClientToken resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
39
44
|
|
|
40
|
-
RCT_EXTERN_METHOD(
|
|
45
|
+
RCT_EXTERN_METHOD(handleResumeSuccess:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
RCT_EXTERN_METHOD(handleResumeFailure:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
48
|
+
|
|
49
|
+
// MARK: Payment Creation Handlers
|
|
43
50
|
|
|
51
|
+
RCT_EXTERN_METHOD(handlePaymentCreationAbort:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
52
|
+
|
|
53
|
+
RCT_EXTERN_METHOD(handlePaymentCreationContinue:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
54
|
+
|
|
55
|
+
// MARK: Error Handler
|
|
56
|
+
|
|
57
|
+
RCT_EXTERN_METHOD(showErrorMessage:(NSString *)errorMessage resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
|
|
58
|
+
|
|
59
|
+
@end
|