@stripe/stripe-react-native 0.65.0 → 0.65.1
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 +2 -2
- package/android/detekt/detekt-baseline.xml +1 -66
- package/android/gradle.properties +3 -3
- package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +3 -1
- package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormViewManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +5 -1
- package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementView.kt +26 -0
- package/android/src/main/java/com/reactnativestripesdk/CurrencySelectorElementViewManager.kt +42 -0
- package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementView.kt +105 -49
- package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +72 -12
- package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetManager.kt +8 -4
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +26 -11
- package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/NavigationBarView.kt +14 -5
- package/android/src/main/java/com/reactnativestripesdk/PaymentElementConfig.kt +6 -2
- package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/PaymentMethodMessagingElementConfig.kt +6 -2
- package/android/src/main/java/com/reactnativestripesdk/PaymentMethodMessagingElementViewManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/PaymentOptionDisplayDataMapper.kt +8 -4
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +9 -3
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetManager.kt +110 -29
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +190 -24
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +1 -0
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +3 -1
- package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetManager.kt +6 -2
- package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerAdapter.kt +3 -1
- package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerSessionProvider.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +2 -1
- package/android/src/main/java/com/reactnativestripesdk/utils/CheckoutAddressUpdate.kt +45 -0
- package/android/src/main/java/com/reactnativestripesdk/utils/CheckoutMappers.kt +101 -0
- package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +4 -2
- package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +5 -1
- package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +29 -13
- package/android/src/main/java/com/reactnativestripesdk/utils/PostalCodeUtilities.kt +2 -1
- package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerDelegate.java +6 -0
- package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerInterface.java +2 -0
- package/android/src/oldarch/java/com/facebook/react/viewmanagers/StripeCurrencySelectorElementManagerDelegate.java +35 -0
- package/android/src/oldarch/java/com/facebook/react/viewmanagers/StripeCurrencySelectorElementManagerInterface.java +18 -0
- package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +8 -0
- package/android/src/test/java/com/reactnativestripesdk/mappers/MappersTest.kt +60 -0
- package/android/src/test/java/com/reactnativestripesdk/mappers/OnrampMappersTest.kt +38 -0
- package/android/src/test/java/com/reactnativestripesdk/mappers/PaymentOptionDisplayDataMapperTest.kt +9 -4
- package/android/src/test/java/com/reactnativestripesdk/utils/CheckoutMappersTest.kt +89 -0
- package/android/src/test/java/com/reactnativestripesdk/utils/CheckoutTestFixtures.java +49 -0
- package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewController.swift +6 -8
- package/ios/CurrencySelectorElementManager.m +9 -0
- package/ios/CurrencySelectorElementManager.swift +12 -0
- package/ios/CurrencySelectorElementView.swift +24 -0
- package/ios/Mappers+Checkout.swift +193 -0
- package/ios/NewArch/EmbeddedPaymentElementViewComponentView.mm +16 -2
- package/ios/NewArch/StripeCurrencySelectorElementComponentView.h +10 -0
- package/ios/NewArch/StripeCurrencySelectorElementComponentView.mm +75 -0
- package/ios/StripeSdk.mm +123 -0
- package/ios/StripeSdkImpl+Checkout.swift +308 -0
- package/ios/StripeSdkImpl+Embedded.swift +108 -27
- package/ios/StripeSdkImpl+PaymentSheet.swift +18 -2
- package/ios/StripeSdkImpl.swift +3 -1
- package/jest/mock.js +13 -1
- package/lib/commonjs/components/AddToWalletButton.js +1 -1
- package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
- package/lib/commonjs/components/AddressSheet.js +1 -1
- package/lib/commonjs/components/AddressSheet.js.map +1 -1
- package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
- package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
- package/lib/commonjs/components/CardField.js +1 -1
- package/lib/commonjs/components/CardField.js.map +1 -1
- package/lib/commonjs/components/CardForm.js +1 -1
- package/lib/commonjs/components/CardForm.js.map +1 -1
- package/lib/commonjs/components/CurrencySelectorElement.js +2 -0
- package/lib/commonjs/components/CurrencySelectorElement.js.map +1 -0
- package/lib/commonjs/components/PaymentMethodMessagingElement.js +1 -1
- package/lib/commonjs/components/PaymentMethodMessagingElement.js.map +1 -1
- package/lib/commonjs/components/PlatformPayButton.js +1 -1
- package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
- package/lib/commonjs/components/StripeContainer.js +1 -1
- package/lib/commonjs/components/StripeContainer.js.map +1 -1
- package/lib/commonjs/connect/Components.js +1 -1
- package/lib/commonjs/connect/Components.js.map +1 -1
- package/lib/commonjs/connect/ConnectComponentsProvider.js +1 -1
- package/lib/commonjs/connect/ConnectComponentsProvider.js.map +1 -1
- package/lib/commonjs/connect/EmbeddedComponent.js +1 -1
- package/lib/commonjs/connect/EmbeddedComponent.js.map +1 -1
- package/lib/commonjs/connect/ModalCloseButton.js +1 -1
- package/lib/commonjs/connect/ModalCloseButton.js.map +1 -1
- package/lib/commonjs/connect/NavigationBar.js +1 -1
- package/lib/commonjs/connect/NavigationBar.js.map +1 -1
- package/lib/commonjs/events.js.map +1 -1
- package/lib/commonjs/functions.js +1 -1
- package/lib/commonjs/functions.js.map +1 -1
- package/lib/commonjs/helpers.js +1 -1
- package/lib/commonjs/hooks/useCheckout.js +1 -1
- package/lib/commonjs/hooks/useCheckout.js.map +1 -1
- package/lib/commonjs/specs/NativeAddToWalletButton.js +1 -1
- package/lib/commonjs/specs/NativeAddressSheet.js +1 -1
- package/lib/commonjs/specs/NativeApplePayButton.js +1 -1
- package/lib/commonjs/specs/NativeAuBECSDebitForm.js +1 -1
- package/lib/commonjs/specs/NativeCardField.js +1 -1
- package/lib/commonjs/specs/NativeCardField.js.map +1 -1
- package/lib/commonjs/specs/NativeCardForm.js +1 -1
- package/lib/commonjs/specs/NativeCardForm.js.map +1 -1
- package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js +1 -1
- package/lib/commonjs/specs/NativeCurrencySelectorElement.js +2 -0
- package/lib/commonjs/specs/NativeCurrencySelectorElement.js.map +1 -0
- package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js +1 -1
- package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js.map +1 -1
- package/lib/commonjs/specs/NativeGooglePayButton.js +1 -1
- package/lib/commonjs/specs/NativeNavigationBar.js +1 -1
- package/lib/commonjs/specs/NativePaymentMethodMessagingElement.js +1 -1
- package/lib/commonjs/specs/NativeStripeContainer.js +1 -1
- package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
- package/lib/commonjs/types/EmbeddedPaymentElement.js +1 -1
- package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -1
- package/lib/module/components/AddToWalletButton.js +1 -1
- package/lib/module/components/AddToWalletButton.js.map +1 -1
- package/lib/module/components/AddressSheet.js +1 -1
- package/lib/module/components/AddressSheet.js.map +1 -1
- package/lib/module/components/AuBECSDebitForm.js +1 -1
- package/lib/module/components/AuBECSDebitForm.js.map +1 -1
- package/lib/module/components/CardField.js +1 -1
- package/lib/module/components/CardField.js.map +1 -1
- package/lib/module/components/CardForm.js +1 -1
- package/lib/module/components/CardForm.js.map +1 -1
- package/lib/module/components/CurrencySelectorElement.js +2 -0
- package/lib/module/components/CurrencySelectorElement.js.map +1 -0
- package/lib/module/components/PaymentMethodMessagingElement.js +1 -1
- package/lib/module/components/PaymentMethodMessagingElement.js.map +1 -1
- package/lib/module/components/PlatformPayButton.js +1 -1
- package/lib/module/components/PlatformPayButton.js.map +1 -1
- package/lib/module/components/StripeContainer.js +1 -1
- package/lib/module/components/StripeContainer.js.map +1 -1
- package/lib/module/connect/Components.js +1 -1
- package/lib/module/connect/Components.js.map +1 -1
- package/lib/module/connect/ConnectComponentsProvider.js +1 -1
- package/lib/module/connect/ConnectComponentsProvider.js.map +1 -1
- package/lib/module/connect/EmbeddedComponent.js +1 -1
- package/lib/module/connect/EmbeddedComponent.js.map +1 -1
- package/lib/module/connect/ModalCloseButton.js +1 -1
- package/lib/module/connect/ModalCloseButton.js.map +1 -1
- package/lib/module/connect/NavigationBar.js +1 -1
- package/lib/module/connect/NavigationBar.js.map +1 -1
- package/lib/module/events.js.map +1 -1
- package/lib/module/functions.js +1 -1
- package/lib/module/functions.js.map +1 -1
- package/lib/module/helpers.js +1 -1
- package/lib/module/hooks/useCheckout.js +1 -1
- package/lib/module/hooks/useCheckout.js.map +1 -1
- package/lib/module/specs/NativeAddToWalletButton.js +1 -1
- package/lib/module/specs/NativeAddressSheet.js +1 -1
- package/lib/module/specs/NativeApplePayButton.js +1 -1
- package/lib/module/specs/NativeAuBECSDebitForm.js +1 -1
- package/lib/module/specs/NativeCardField.js +1 -1
- package/lib/module/specs/NativeCardField.js.map +1 -1
- package/lib/module/specs/NativeCardForm.js +1 -1
- package/lib/module/specs/NativeCardForm.js.map +1 -1
- package/lib/module/specs/NativeConnectAccountOnboardingView.js +1 -1
- package/lib/module/specs/NativeCurrencySelectorElement.js +2 -0
- package/lib/module/specs/NativeCurrencySelectorElement.js.map +1 -0
- package/lib/module/specs/NativeEmbeddedPaymentElement.js +1 -1
- package/lib/module/specs/NativeEmbeddedPaymentElement.js.map +1 -1
- package/lib/module/specs/NativeGooglePayButton.js +1 -1
- package/lib/module/specs/NativeNavigationBar.js +1 -1
- package/lib/module/specs/NativePaymentMethodMessagingElement.js +1 -1
- package/lib/module/specs/NativeStripeContainer.js +1 -1
- package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
- package/lib/module/types/EmbeddedPaymentElement.js +1 -1
- package/lib/module/types/EmbeddedPaymentElement.js.map +1 -1
- package/lib/typescript/src/components/CurrencySelectorElement.d.ts +62 -0
- package/lib/typescript/src/components/CurrencySelectorElement.d.ts.map +1 -0
- package/lib/typescript/src/events.d.ts +11 -0
- package/lib/typescript/src/events.d.ts.map +1 -1
- package/lib/typescript/src/functions.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useCheckout.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativeCurrencySelectorElement.d.ts +25 -0
- package/lib/typescript/src/specs/NativeCurrencySelectorElement.d.ts.map +1 -0
- package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts +5 -1
- package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts.map +1 -1
- package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +3 -1
- package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
- package/lib/typescript/src/types/Checkout.d.ts +2 -2
- package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts +36 -1
- package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts.map +1 -1
- package/package.json +14 -3
- package/src/components/CurrencySelectorElement.tsx +95 -0
- package/src/events.ts +11 -0
- package/src/functions.ts +30 -1
- package/src/hooks/useCheckout.tsx +114 -75
- package/src/specs/NativeCurrencySelectorElement.ts +35 -0
- package/src/specs/NativeEmbeddedPaymentElement.ts +12 -2
- package/src/specs/NativeStripeSdkModule.ts +8 -1
- package/src/types/Checkout.ts +2 -2
- package/src/types/EmbeddedPaymentElement.tsx +117 -26
- package/android/.idea/AndroidProjectSystem.xml +0 -6
- package/android/.idea/caches/deviceStreaming.xml +0 -835
- package/android/.idea/compiler.xml +0 -6
- package/android/.idea/gradle.xml +0 -17
- package/android/.idea/migrations.xml +0 -10
- package/android/.idea/misc.xml +0 -10
- package/android/.idea/runConfigurations.xml +0 -17
- package/android/.idea/vcs.xml +0 -6
- package/android/local.properties +0 -8
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
//
|
|
2
|
+
// StripeSdkImpl+Checkout.swift
|
|
3
|
+
// stripe-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Nick Porter on 4/29/26.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
@_spi(CheckoutSessionsPreview) import StripePaymentSheet
|
|
10
|
+
|
|
11
|
+
extension StripeSdkImpl {
|
|
12
|
+
internal func currentCheckoutStateResult(checkout: Checkout) -> NSDictionary {
|
|
13
|
+
Mappers.mapFromCheckoutState(checkout.state)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@objc(initCheckoutSession:configuration:resolver:rejecter:)
|
|
17
|
+
public func initCheckoutSession(
|
|
18
|
+
clientSecret: String,
|
|
19
|
+
configuration: NSDictionary,
|
|
20
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
21
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
22
|
+
) {
|
|
23
|
+
let checkoutConfiguration = buildCheckoutConfiguration(params: configuration)
|
|
24
|
+
|
|
25
|
+
Task { @MainActor [weak self] in
|
|
26
|
+
guard let self else {
|
|
27
|
+
reject(ErrorType.Failed, "Stripe SDK is unavailable", nil)
|
|
28
|
+
return
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
do {
|
|
32
|
+
let checkout = try await Checkout(
|
|
33
|
+
clientSecret: clientSecret,
|
|
34
|
+
configuration: checkoutConfiguration
|
|
35
|
+
)
|
|
36
|
+
let sessionKey = UUID().uuidString
|
|
37
|
+
|
|
38
|
+
self.checkoutInstances[sessionKey] = checkout
|
|
39
|
+
|
|
40
|
+
resolve([
|
|
41
|
+
"sessionKey": sessionKey,
|
|
42
|
+
"state": self.currentCheckoutStateResult(checkout: checkout),
|
|
43
|
+
])
|
|
44
|
+
} catch {
|
|
45
|
+
reject(self.checkoutErrorCode(for: error), error.localizedDescription, error)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@objc(checkoutUpdateShippingAddress:address:name:phone:resolver:rejecter:)
|
|
51
|
+
public func checkoutUpdateShippingAddress(
|
|
52
|
+
sessionKey: String,
|
|
53
|
+
address: NSDictionary,
|
|
54
|
+
name: String?,
|
|
55
|
+
phone: String?,
|
|
56
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
57
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
58
|
+
) {
|
|
59
|
+
performCheckoutAddressMutation(
|
|
60
|
+
sessionKey: sessionKey,
|
|
61
|
+
address: address,
|
|
62
|
+
name: name,
|
|
63
|
+
phone: phone,
|
|
64
|
+
missingCountryMessage: "A shipping address country is required.",
|
|
65
|
+
resolver: resolve,
|
|
66
|
+
rejecter: reject
|
|
67
|
+
) { checkout, addressUpdate in
|
|
68
|
+
try await checkout.updateShippingAddress(addressUpdate)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@objc(checkoutUpdateBillingAddress:address:name:phone:resolver:rejecter:)
|
|
73
|
+
public func checkoutUpdateBillingAddress(
|
|
74
|
+
sessionKey: String,
|
|
75
|
+
address: NSDictionary,
|
|
76
|
+
name: String?,
|
|
77
|
+
phone: String?,
|
|
78
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
79
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
80
|
+
) {
|
|
81
|
+
performCheckoutAddressMutation(
|
|
82
|
+
sessionKey: sessionKey,
|
|
83
|
+
address: address,
|
|
84
|
+
name: name,
|
|
85
|
+
phone: phone,
|
|
86
|
+
missingCountryMessage: "A billing address country is required.",
|
|
87
|
+
resolver: resolve,
|
|
88
|
+
rejecter: reject
|
|
89
|
+
) { checkout, addressUpdate in
|
|
90
|
+
try await checkout.updateBillingAddress(addressUpdate)
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@objc(checkoutApplyPromotionCode:code:resolver:rejecter:)
|
|
95
|
+
public func checkoutApplyPromotionCode(
|
|
96
|
+
sessionKey: String,
|
|
97
|
+
code: String,
|
|
98
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
99
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
100
|
+
) {
|
|
101
|
+
performCheckoutMutation(
|
|
102
|
+
sessionKey: sessionKey,
|
|
103
|
+
resolver: resolve,
|
|
104
|
+
rejecter: reject
|
|
105
|
+
) { checkout in
|
|
106
|
+
try await checkout.applyPromotionCode(code)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@objc(checkoutRemovePromotionCode:resolver:rejecter:)
|
|
111
|
+
public func checkoutRemovePromotionCode(
|
|
112
|
+
sessionKey: String,
|
|
113
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
114
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
115
|
+
) {
|
|
116
|
+
performCheckoutMutation(
|
|
117
|
+
sessionKey: sessionKey,
|
|
118
|
+
resolver: resolve,
|
|
119
|
+
rejecter: reject
|
|
120
|
+
) { checkout in
|
|
121
|
+
try await checkout.removePromotionCode()
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@objc(checkoutUpdateLineItemQuantity:lineItemId:quantity:resolver:rejecter:)
|
|
126
|
+
public func checkoutUpdateLineItemQuantity(
|
|
127
|
+
sessionKey: String,
|
|
128
|
+
lineItemId: String,
|
|
129
|
+
quantity: Double,
|
|
130
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
131
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
132
|
+
) {
|
|
133
|
+
guard quantity.isFinite, let integerQuantity = Int(exactly: quantity) else {
|
|
134
|
+
reject(ErrorType.Failed, "Line item quantity must be an integer.", nil)
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
let lineItemUpdate = Checkout.LineItemUpdate(
|
|
139
|
+
lineItemId: lineItemId,
|
|
140
|
+
quantity: integerQuantity
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
performCheckoutMutation(
|
|
144
|
+
sessionKey: sessionKey,
|
|
145
|
+
resolver: resolve,
|
|
146
|
+
rejecter: reject
|
|
147
|
+
) { checkout in
|
|
148
|
+
try await checkout.updateQuantity(with: lineItemUpdate)
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@objc(checkoutSelectShippingOption:id:resolver:rejecter:)
|
|
153
|
+
public func checkoutSelectShippingOption(
|
|
154
|
+
sessionKey: String,
|
|
155
|
+
id: String,
|
|
156
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
157
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
158
|
+
) {
|
|
159
|
+
performCheckoutMutation(
|
|
160
|
+
sessionKey: sessionKey,
|
|
161
|
+
resolver: resolve,
|
|
162
|
+
rejecter: reject
|
|
163
|
+
) { checkout in
|
|
164
|
+
try await checkout.selectShippingOption(id)
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@objc(checkoutUpdateTaxId:type:value:resolver:rejecter:)
|
|
169
|
+
public func checkoutUpdateTaxId(
|
|
170
|
+
sessionKey: String,
|
|
171
|
+
type: String,
|
|
172
|
+
value: String,
|
|
173
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
174
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
175
|
+
) {
|
|
176
|
+
let taxIdUpdate = Checkout.TaxIdUpdate(type: type, value: value)
|
|
177
|
+
|
|
178
|
+
performCheckoutMutation(
|
|
179
|
+
sessionKey: sessionKey,
|
|
180
|
+
resolver: resolve,
|
|
181
|
+
rejecter: reject
|
|
182
|
+
) { checkout in
|
|
183
|
+
try await checkout.updateTaxId(with: taxIdUpdate)
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@objc(checkoutRefresh:resolver:rejecter:)
|
|
188
|
+
public func checkoutRefresh(
|
|
189
|
+
sessionKey: String,
|
|
190
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
191
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
192
|
+
) {
|
|
193
|
+
performCheckoutMutation(
|
|
194
|
+
sessionKey: sessionKey,
|
|
195
|
+
resolver: resolve,
|
|
196
|
+
rejecter: reject
|
|
197
|
+
) { checkout in
|
|
198
|
+
try await checkout.refresh()
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
internal func buildCheckoutConfiguration(params: NSDictionary) -> Checkout.Configuration {
|
|
203
|
+
var configuration = Checkout.Configuration()
|
|
204
|
+
|
|
205
|
+
if let adaptivePricing = params["adaptivePricing"] as? NSDictionary,
|
|
206
|
+
let allowed = adaptivePricing["allowed"] as? Bool {
|
|
207
|
+
configuration.adaptivePricing.allowed = allowed
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return configuration
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
private func performCheckoutMutation(
|
|
214
|
+
sessionKey: String,
|
|
215
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
216
|
+
rejecter reject: @escaping RCTPromiseRejectBlock,
|
|
217
|
+
operation: @escaping (Checkout) async throws -> Void
|
|
218
|
+
) {
|
|
219
|
+
Task { @MainActor [weak self] in
|
|
220
|
+
guard let self else {
|
|
221
|
+
reject(ErrorType.Failed, "Stripe SDK is unavailable", nil)
|
|
222
|
+
return
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
guard let checkout = self.checkoutInstances[sessionKey] else {
|
|
226
|
+
reject(ErrorType.Failed, "Checkout session not found", nil)
|
|
227
|
+
return
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
do {
|
|
231
|
+
try await operation(checkout)
|
|
232
|
+
resolve(self.currentCheckoutStateResult(checkout: checkout))
|
|
233
|
+
} catch {
|
|
234
|
+
reject(self.checkoutErrorCode(for: error), error.localizedDescription, error)
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
private func performCheckoutAddressMutation(
|
|
240
|
+
sessionKey: String,
|
|
241
|
+
address: NSDictionary,
|
|
242
|
+
name: String?,
|
|
243
|
+
phone: String?,
|
|
244
|
+
missingCountryMessage: String,
|
|
245
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
246
|
+
rejecter reject: @escaping RCTPromiseRejectBlock,
|
|
247
|
+
operation: @escaping (Checkout, Checkout.AddressUpdate) async throws -> Void
|
|
248
|
+
) {
|
|
249
|
+
guard let addressUpdate = buildCheckoutAddressUpdate(
|
|
250
|
+
address: address,
|
|
251
|
+
name: name,
|
|
252
|
+
phone: phone
|
|
253
|
+
) else {
|
|
254
|
+
reject(ErrorType.Failed, missingCountryMessage, nil)
|
|
255
|
+
return
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
performCheckoutMutation(
|
|
259
|
+
sessionKey: sessionKey,
|
|
260
|
+
resolver: resolve,
|
|
261
|
+
rejecter: reject
|
|
262
|
+
) { checkout in
|
|
263
|
+
try await operation(checkout, addressUpdate)
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
private func buildCheckoutAddressUpdate(
|
|
268
|
+
address: NSDictionary,
|
|
269
|
+
name: String?,
|
|
270
|
+
phone: String?
|
|
271
|
+
) -> Checkout.AddressUpdate? {
|
|
272
|
+
guard let country = address["country"] as? String, !country.isEmpty else {
|
|
273
|
+
return nil
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
let checkoutAddress = Checkout.Address(
|
|
277
|
+
country: country,
|
|
278
|
+
line1: address["line1"] as? String,
|
|
279
|
+
line2: address["line2"] as? String,
|
|
280
|
+
city: address["city"] as? String,
|
|
281
|
+
state: address["state"] as? String,
|
|
282
|
+
postalCode: address["postalCode"] as? String
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
return Checkout.AddressUpdate(
|
|
286
|
+
name: name,
|
|
287
|
+
phone: phone,
|
|
288
|
+
address: checkoutAddress
|
|
289
|
+
)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private func checkoutErrorCode(for error: Error) -> String {
|
|
293
|
+
if let checkoutError = error as? CheckoutError {
|
|
294
|
+
switch checkoutError {
|
|
295
|
+
case .invalidClientSecret:
|
|
296
|
+
return "InvalidClientSecret"
|
|
297
|
+
case .sessionNotOpen:
|
|
298
|
+
return "SessionNotOpen"
|
|
299
|
+
case .sheetCurrentlyPresented:
|
|
300
|
+
return "SheetCurrentlyPresented"
|
|
301
|
+
default:
|
|
302
|
+
return ErrorType.Failed
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
return ErrorType.Failed
|
|
307
|
+
}
|
|
308
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
//
|
|
7
7
|
|
|
8
8
|
import Foundation
|
|
9
|
-
@_spi(EmbeddedPaymentElementPrivateBeta) @_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(CustomerSessionBetaAccess) @_spi(STP) @_spi(CustomPaymentMethodsBeta) @_spi(CardFundingFilteringPrivatePreview) import StripePaymentSheet
|
|
9
|
+
@_spi(EmbeddedPaymentElementPrivateBeta) @_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(CustomerSessionBetaAccess) @_spi(STP) @_spi(CustomPaymentMethodsBeta) @_spi(CardFundingFilteringPrivatePreview) @_spi(CheckoutSessionsPreview) import StripePaymentSheet
|
|
10
10
|
|
|
11
11
|
@objc(StripeSdkImpl)
|
|
12
12
|
extension StripeSdkImpl {
|
|
@@ -19,19 +19,22 @@ extension StripeSdkImpl {
|
|
|
19
19
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
20
20
|
reject: @escaping RCTPromiseRejectBlock) {
|
|
21
21
|
guard let modeParams = intentConfig["mode"] as? NSDictionary else {
|
|
22
|
-
|
|
22
|
+
emitLoadingFailed(message: "One of `paymentIntentClientSecret`, `setupIntentClientSecret`, or `intentConfiguration.mode` is required")
|
|
23
|
+
resolve(nil)
|
|
23
24
|
return
|
|
24
25
|
}
|
|
25
26
|
let hasConfirmHandler = intentConfig.object(forKey: "confirmHandler") != nil
|
|
26
27
|
let hasConfirmationTokenHandler = intentConfig.object(forKey: "confirmationTokenConfirmHandler") != nil
|
|
27
28
|
|
|
28
29
|
if !hasConfirmHandler && !hasConfirmationTokenHandler {
|
|
29
|
-
|
|
30
|
+
emitLoadingFailed(message: "You must provide either `intentConfiguration.confirmHandler` or `intentConfiguration.confirmationTokenConfirmHandler` if you are not passing an intent client secret")
|
|
31
|
+
resolve(nil)
|
|
30
32
|
return
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
if hasConfirmHandler && hasConfirmationTokenHandler {
|
|
34
|
-
|
|
36
|
+
emitLoadingFailed(message: "You must provide either `confirmHandler` or `confirmationTokenConfirmHandler`, but not both")
|
|
37
|
+
resolve(nil)
|
|
35
38
|
return
|
|
36
39
|
}
|
|
37
40
|
let captureMethodString = intentConfig["captureMethod"] as? String
|
|
@@ -44,7 +47,8 @@ extension StripeSdkImpl {
|
|
|
44
47
|
)
|
|
45
48
|
|
|
46
49
|
guard let configuration = buildEmbeddedPaymentElementConfiguration(params: configuration).configuration else {
|
|
47
|
-
|
|
50
|
+
emitLoadingFailed(message: "Invalid configuration")
|
|
51
|
+
resolve(nil)
|
|
48
52
|
return
|
|
49
53
|
}
|
|
50
54
|
|
|
@@ -54,26 +58,88 @@ extension StripeSdkImpl {
|
|
|
54
58
|
intentConfiguration: intentConfig,
|
|
55
59
|
configuration: configuration
|
|
56
60
|
)
|
|
57
|
-
embeddedPaymentElement
|
|
58
|
-
embeddedPaymentElement.presentingViewController = RCTPresentedViewController()
|
|
59
|
-
self.embeddedInstance = embeddedPaymentElement
|
|
60
|
-
|
|
61
|
-
// success: resolve promise
|
|
61
|
+
attachEmbedded(embeddedPaymentElement)
|
|
62
62
|
resolve(nil)
|
|
63
|
-
|
|
64
|
-
// publish initial state
|
|
65
|
-
embeddedInstanceDelegate.embeddedPaymentElementDidUpdateHeight(embeddedPaymentElement: embeddedPaymentElement)
|
|
66
|
-
embeddedInstanceDelegate.embeddedPaymentElementDidUpdatePaymentOption(embeddedPaymentElement: embeddedPaymentElement)
|
|
67
63
|
} catch {
|
|
68
|
-
|
|
64
|
+
emitLoadingFailed(error: error)
|
|
65
|
+
// Resolve so the JS hook can finish loading; loading errors are
|
|
66
|
+
// surfaced through the embeddedPaymentElementLoadingFailed event.
|
|
69
67
|
resolve(nil)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@objc(createEmbeddedPaymentElementWithCheckout:configuration:resolve:reject:)
|
|
73
|
+
public func createEmbeddedPaymentElementWithCheckout(
|
|
74
|
+
sessionKey: String,
|
|
75
|
+
configuration: NSDictionary,
|
|
76
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
77
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
78
|
+
) {
|
|
79
|
+
guard let checkout = checkoutInstances[sessionKey] else {
|
|
80
|
+
emitLoadingFailed(message: "Checkout session not found")
|
|
81
|
+
resolve(nil)
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
guard let configuration = buildEmbeddedPaymentElementConfiguration(params: configuration).configuration else {
|
|
86
|
+
emitLoadingFailed(message: "Invalid configuration")
|
|
87
|
+
resolve(nil)
|
|
88
|
+
return
|
|
89
|
+
}
|
|
70
90
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
91
|
+
Task {
|
|
92
|
+
do {
|
|
93
|
+
let embeddedPaymentElement = try await EmbeddedPaymentElement.create(
|
|
94
|
+
checkout: checkout,
|
|
95
|
+
configuration: configuration
|
|
96
|
+
)
|
|
97
|
+
attachEmbedded(embeddedPaymentElement)
|
|
98
|
+
resolve(nil)
|
|
99
|
+
} catch {
|
|
100
|
+
emitLoadingFailed(error: error)
|
|
101
|
+
resolve(nil)
|
|
74
102
|
}
|
|
75
103
|
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/// Wires up a freshly created element and emits its initial height /
|
|
107
|
+
/// payment-option state to JS.
|
|
108
|
+
@nonobjc
|
|
109
|
+
private func attachEmbedded(_ element: EmbeddedPaymentElement) {
|
|
110
|
+
element.delegate = embeddedInstanceDelegate
|
|
111
|
+
element.presentingViewController = RCTPresentedViewController()
|
|
112
|
+
self.embeddedInstance = element
|
|
76
113
|
|
|
114
|
+
embeddedInstanceDelegate.embeddedPaymentElementDidUpdateHeight(embeddedPaymentElement: element)
|
|
115
|
+
embeddedInstanceDelegate.embeddedPaymentElementDidUpdatePaymentOption(embeddedPaymentElement: element)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@nonobjc
|
|
119
|
+
private func emitLoadingFailed(message: String) {
|
|
120
|
+
self.emitter?.emitEmbeddedPaymentElementLoadingFailed(["message": message])
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@nonobjc
|
|
124
|
+
private func emitLoadingFailed(error: Error) {
|
|
125
|
+
emitLoadingFailed(message: error.localizedDescription)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@nonobjc
|
|
129
|
+
private func resolveEmbeddedUpdateResult(
|
|
130
|
+
_ updateResult: EmbeddedPaymentElement.UpdateResult,
|
|
131
|
+
resolve: @escaping RCTPromiseResolveBlock
|
|
132
|
+
) {
|
|
133
|
+
switch updateResult {
|
|
134
|
+
case .succeeded:
|
|
135
|
+
resolve(["status": "succeeded"])
|
|
136
|
+
case .canceled:
|
|
137
|
+
resolve(["status": "canceled"])
|
|
138
|
+
case .failed(let error):
|
|
139
|
+
self.emitter?.emitEmbeddedPaymentElementLoadingFailed(["message": error.localizedDescription])
|
|
140
|
+
// We don't resolve with an error b/c loading errors are handled via the embeddedPaymentElementLoadingFailed event
|
|
141
|
+
resolve(nil)
|
|
142
|
+
}
|
|
77
143
|
}
|
|
78
144
|
|
|
79
145
|
@objc(confirmEmbeddedPaymentElement:reject:)
|
|
@@ -143,16 +209,31 @@ extension StripeSdkImpl {
|
|
|
143
209
|
return
|
|
144
210
|
}
|
|
145
211
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
212
|
+
self.resolveEmbeddedUpdateResult(updateResult, resolve: resolve)
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@objc(updateEmbeddedPaymentElementWithCheckout:resolve:reject:)
|
|
217
|
+
public func updateEmbeddedPaymentElementWithCheckout(
|
|
218
|
+
sessionKey: String,
|
|
219
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
220
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
221
|
+
) {
|
|
222
|
+
guard let checkout = checkoutInstances[sessionKey] else {
|
|
223
|
+
resolve(Errors.createError(ErrorType.Failed, "Checkout session not found"))
|
|
224
|
+
return
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
Task {
|
|
228
|
+
guard let updateResult = await self.embeddedInstance?.update(checkout: checkout) else {
|
|
229
|
+
resolve(Errors.createError(
|
|
230
|
+
ErrorType.Failed,
|
|
231
|
+
"No EmbeddedPaymentElement instance — did you call create first?"
|
|
232
|
+
))
|
|
233
|
+
return
|
|
155
234
|
}
|
|
235
|
+
|
|
236
|
+
self.resolveEmbeddedUpdateResult(updateResult, resolve: resolve)
|
|
156
237
|
}
|
|
157
238
|
}
|
|
158
239
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
//
|
|
7
7
|
|
|
8
8
|
import Foundation
|
|
9
|
-
@_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(CustomerSessionBetaAccess) @_spi(EmbeddedPaymentElementPrivateBeta) @_spi(STP) @_spi(PaymentMethodOptionsSetupFutureUsagePreview) @_spi(CustomPaymentMethodsBeta) @_spi(ConfirmationTokensPublicPreview) @_spi(CardFundingFilteringPrivatePreview) import StripePaymentSheet
|
|
9
|
+
@_spi(ExperimentalAllowsRemovalOfLastSavedPaymentMethodAPI) @_spi(CustomerSessionBetaAccess) @_spi(EmbeddedPaymentElementPrivateBeta) @_spi(STP) @_spi(PaymentMethodOptionsSetupFutureUsagePreview) @_spi(CustomPaymentMethodsBeta) @_spi(ConfirmationTokensPublicPreview) @_spi(CardFundingFilteringPrivatePreview) @_spi(CheckoutSessionsPreview) import StripePaymentSheet
|
|
10
10
|
|
|
11
11
|
extension StripeSdkImpl {
|
|
12
12
|
internal func buildPaymentSheetConfiguration(
|
|
@@ -183,7 +183,23 @@ extension StripeSdkImpl {
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
if let
|
|
186
|
+
if let checkout = params["checkout"] as? NSDictionary,
|
|
187
|
+
let sessionKey = checkout["sessionKey"] as? String {
|
|
188
|
+
guard let checkout = checkoutInstances[sessionKey] else {
|
|
189
|
+
resolve(Errors.createError(ErrorType.Failed, "Checkout session not found"))
|
|
190
|
+
return
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if params["customFlow"] as? Bool == true {
|
|
194
|
+
PaymentSheet.FlowController.create(checkout: checkout,
|
|
195
|
+
configuration: configuration) { [weak self] result in
|
|
196
|
+
handlePaymentSheetFlowControllerResult(result: result, stripeSdk: self)
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
self.paymentSheet = PaymentSheet(checkout: checkout, configuration: configuration)
|
|
200
|
+
resolve([])
|
|
201
|
+
}
|
|
202
|
+
} else if let paymentIntentClientSecret = params["paymentIntentClientSecret"] as? String {
|
|
187
203
|
if !Errors.isPIClientSecretValid(clientSecret: paymentIntentClientSecret) {
|
|
188
204
|
resolve(Errors.createError(ErrorType.Failed, "`secret` format does not match expected client secret formatting."))
|
|
189
205
|
return
|
package/ios/StripeSdkImpl.swift
CHANGED
|
@@ -14,9 +14,10 @@ import UIKit
|
|
|
14
14
|
@_spi(EmbeddedPaymentElementPrivateBeta)
|
|
15
15
|
@_spi(CustomerSessionBetaAccess)
|
|
16
16
|
@_spi(AppearanceAPIAdditionsPreview)
|
|
17
|
+
@_spi(CheckoutSessionsPreview)
|
|
17
18
|
import StripePaymentSheet
|
|
18
19
|
#else
|
|
19
|
-
@_spi(EmbeddedPaymentElementPrivateBeta) @_spi(CustomerSessionBetaAccess) import StripePaymentSheet
|
|
20
|
+
@_spi(EmbeddedPaymentElementPrivateBeta) @_spi(CustomerSessionBetaAccess) @_spi(CheckoutSessionsPreview) import StripePaymentSheet
|
|
20
21
|
#endif
|
|
21
22
|
|
|
22
23
|
@available(iOS 13.0, *)
|
|
@@ -67,6 +68,7 @@ public class StripeSdkImpl: NSObject, UIAdaptivePresentationControllerDelegate {
|
|
|
67
68
|
|
|
68
69
|
internal var paymentSheet: PaymentSheet?
|
|
69
70
|
internal var paymentSheetFlowController: PaymentSheet.FlowController?
|
|
71
|
+
internal var checkoutInstances: [String: Checkout] = [:]
|
|
70
72
|
var paymentSheetIntentCreationCallback: ((Result<String, Error>) -> Void)?
|
|
71
73
|
var paymentSheetConfirmationTokenIntentCreationCallback: ((Result<String, Error>) -> Void)?
|
|
72
74
|
|
package/jest/mock.js
CHANGED
|
@@ -197,7 +197,7 @@ const mockHooks = {
|
|
|
197
197
|
confirm: jest.fn(async () => ({
|
|
198
198
|
status: 'completed',
|
|
199
199
|
})),
|
|
200
|
-
update: jest.fn(
|
|
200
|
+
update: jest.fn(() => {}),
|
|
201
201
|
clearPaymentOption: jest.fn(() => {}),
|
|
202
202
|
loadingError: null,
|
|
203
203
|
})),
|
|
@@ -397,5 +397,17 @@ jest.mock('../src/specs/NativeStripeSdkModule', () => ({
|
|
|
397
397
|
},
|
|
398
398
|
})),
|
|
399
399
|
openAuthenticatedWebView: jest.fn(),
|
|
400
|
+
createEmbeddedPaymentElement: jest.fn(async () => undefined),
|
|
401
|
+
createEmbeddedPaymentElementWithCheckout: jest.fn(async () => undefined),
|
|
402
|
+
confirmEmbeddedPaymentElement: jest.fn(async () => ({
|
|
403
|
+
status: 'completed',
|
|
404
|
+
})),
|
|
405
|
+
updateEmbeddedPaymentElement: jest.fn(async () => ({
|
|
406
|
+
status: 'succeeded',
|
|
407
|
+
})),
|
|
408
|
+
updateEmbeddedPaymentElementWithCheckout: jest.fn(async () => ({
|
|
409
|
+
status: 'succeeded',
|
|
410
|
+
})),
|
|
411
|
+
clearEmbeddedPaymentOption: jest.fn(async () => undefined),
|
|
400
412
|
},
|
|
401
413
|
}));
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AddToWalletButton=AddToWalletButton;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _NativeAddToWalletButton=_interopRequireDefault(require("../specs/NativeAddToWalletButton"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AddToWalletButton=AddToWalletButton;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _NativeAddToWalletButton=_interopRequireDefault(require("../specs/NativeAddToWalletButton"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/tjclawson/stripe/stripe-react-native/src/components/AddToWalletButton.tsx";var _excluded=["onComplete"];function AddToWalletButton(_ref){var onComplete=_ref.onComplete,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);return(0,_jsxRuntime.jsx)(_NativeAddToWalletButton.default,Object.assign({},props,{onCompleteAction:function onCompleteAction(value){return onComplete(value.nativeEvent);}}));}
|
|
2
2
|
//# sourceMappingURL=AddToWalletButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_NativeAddToWalletButton","_jsxRuntime","_jsxFileName","_excluded","AddToWalletButton","_ref","onComplete","props","_objectWithoutProperties2","default","jsx","Object","assign","onCompleteAction","value","nativeEvent"],"sourceRoot":"../../../src","sources":["components/AddToWalletButton.tsx"],"mappings":"wSAAA,IAAAA,MAAA,CAAAC,sBAAA,CAAAC,OAAA,WAcA,IAAAC,wBAAA,CAAAF,sBAAA,CAAAC,OAAA,sCAAuE,IAAAE,WAAA,CAAAF,OAAA,0BAAAG,YAAA,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_NativeAddToWalletButton","_jsxRuntime","_jsxFileName","_excluded","AddToWalletButton","_ref","onComplete","props","_objectWithoutProperties2","default","jsx","Object","assign","onCompleteAction","value","nativeEvent"],"sourceRoot":"../../../src","sources":["components/AddToWalletButton.tsx"],"mappings":"wSAAA,IAAAA,MAAA,CAAAC,sBAAA,CAAAC,OAAA,WAcA,IAAAC,wBAAA,CAAAF,sBAAA,CAAAC,OAAA,sCAAuE,IAAAE,WAAA,CAAAF,OAAA,0BAAAG,YAAA,wFAAAC,SAAA,gBAgEhE,QAAS,CAAAC,iBAAiBA,CAAAC,IAAA,CAAkC,IAA/B,CAAAC,UAAU,CAAAD,IAAA,CAAVC,UAAU,CAAKC,KAAK,IAAAC,yBAAA,CAAAC,OAAA,EAAAJ,IAAA,CAAAF,SAAA,EACtD,MACE,GAAAF,WAAA,CAAAS,GAAA,EAACV,wBAAA,CAAAS,OAAuB,CAAAE,MAAA,CAAAC,MAAA,IAClBL,KAAK,EACTM,gBAAgB,CAAE,QAAlB,CAAAA,gBAAgBA,CACdC,KAEE,QACC,CAAAR,UAAU,CAACQ,KAAK,CAACC,WAAW,CAAC,EAAC,EACpC,CAAC,CAEN","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AddressSheet=AddressSheet;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _NativeAddressSheet=_interopRequireDefault(require("../specs/NativeAddressSheet"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AddressSheet=AddressSheet;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _NativeAddressSheet=_interopRequireDefault(require("../specs/NativeAddressSheet"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/tjclawson/stripe/stripe-react-native/src/components/AddressSheet.tsx";var _excluded=["onSubmit","onError"];function AddressSheet(_ref){var onSubmit=_ref.onSubmit,onError=_ref.onError,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);return(0,_jsxRuntime.jsx)(_NativeAddressSheet.default,Object.assign({},props,{onSubmitAction:function onSubmitAction(event){return onSubmit(event.nativeEvent.result);},onErrorAction:function onErrorAction(event){return onError(event.nativeEvent.error);}}));}
|
|
2
2
|
//# sourceMappingURL=AddressSheet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_NativeAddressSheet","_jsxRuntime","_jsxFileName","_excluded","AddressSheet","_ref","onSubmit","onError","props","_objectWithoutProperties2","default","jsx","Object","assign","onSubmitAction","event","nativeEvent","result","onErrorAction","error"],"sourceRoot":"../../../src","sources":["components/AddressSheet.tsx"],"mappings":"8RAAA,IAAAA,MAAA,CAAAC,sBAAA,CAAAC,OAAA,WAQA,IAAAC,mBAAA,CAAAF,sBAAA,CAAAC,OAAA,iCAA6D,IAAAE,WAAA,CAAAF,OAAA,0BAAAG,YAAA,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_NativeAddressSheet","_jsxRuntime","_jsxFileName","_excluded","AddressSheet","_ref","onSubmit","onError","props","_objectWithoutProperties2","default","jsx","Object","assign","onSubmitAction","event","nativeEvent","result","onErrorAction","error"],"sourceRoot":"../../../src","sources":["components/AddressSheet.tsx"],"mappings":"8RAAA,IAAAA,MAAA,CAAAC,sBAAA,CAAAC,OAAA,WAQA,IAAAC,mBAAA,CAAAF,sBAAA,CAAAC,OAAA,iCAA6D,IAAAE,WAAA,CAAAF,OAAA,0BAAAG,YAAA,mFAAAC,SAAA,wBA4DtD,QAAS,CAAAC,YAAYA,CAAAC,IAAA,CAAyC,IAAtC,CAAAC,QAAQ,CAAAD,IAAA,CAARC,QAAQ,CAAEC,OAAO,CAAAF,IAAA,CAAPE,OAAO,CAAKC,KAAK,IAAAC,yBAAA,CAAAC,OAAA,EAAAL,IAAA,CAAAF,SAAA,EACxD,MACE,GAAAF,WAAA,CAAAU,GAAA,EAACX,mBAAA,CAAAU,OAAkB,CAAAE,MAAA,CAAAC,MAAA,IACbL,KAAK,EACTM,cAAc,CAAE,QAAhB,CAAAA,cAAcA,CAAGC,KAAK,QAAK,CAAAT,QAAQ,CAACS,KAAK,CAACC,WAAW,CAACC,MAAM,CAAC,EAAC,CAC9DC,aAAa,CAAE,QAAf,CAAAA,aAAaA,CAAGH,KAAK,QAAK,CAAAR,OAAO,CAACQ,KAAK,CAACC,WAAW,CAACG,KAAK,CAAC,EAAC,EAC5D,CAAC,CAEN","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AuBECSDebitForm=AuBECSDebitForm;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _NativeAuBECSDebitForm=_interopRequireDefault(require("../specs/NativeAuBECSDebitForm"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AuBECSDebitForm=AuBECSDebitForm;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireDefault(require("react"));var _NativeAuBECSDebitForm=_interopRequireDefault(require("../specs/NativeAuBECSDebitForm"));var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/tjclawson/stripe/stripe-react-native/src/components/AuBECSDebitForm.tsx";var _excluded=["onComplete","companyName","formStyle"];function AuBECSDebitForm(_ref){var onComplete=_ref.onComplete,companyName=_ref.companyName,formStyle=_ref.formStyle,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);return(0,_jsxRuntime.jsx)(_NativeAuBECSDebitForm.default,Object.assign({onCompleteAction:function onCompleteAction(value){return onComplete(value.nativeEvent);},companyName:companyName,formStyle:Object.assign({},formStyle)},props));}
|
|
2
2
|
//# sourceMappingURL=AuBECSDebitForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_NativeAuBECSDebitForm","_jsxRuntime","_jsxFileName","_excluded","AuBECSDebitForm","_ref","onComplete","companyName","formStyle","props","_objectWithoutProperties2","default","jsx","Object","assign","onCompleteAction","value","nativeEvent"],"sourceRoot":"../../../src","sources":["components/AuBECSDebitForm.tsx"],"mappings":"oSAAA,IAAAA,MAAA,CAAAC,sBAAA,CAAAC,OAAA,WAEA,IAAAC,sBAAA,CAAAF,sBAAA,CAAAC,OAAA,oCAAmE,IAAAE,WAAA,CAAAF,OAAA,0BAAAG,YAAA,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_NativeAuBECSDebitForm","_jsxRuntime","_jsxFileName","_excluded","AuBECSDebitForm","_ref","onComplete","companyName","formStyle","props","_objectWithoutProperties2","default","jsx","Object","assign","onCompleteAction","value","nativeEvent"],"sourceRoot":"../../../src","sources":["components/AuBECSDebitForm.tsx"],"mappings":"oSAAA,IAAAA,MAAA,CAAAC,sBAAA,CAAAC,OAAA,WAEA,IAAAC,sBAAA,CAAAF,sBAAA,CAAAC,OAAA,oCAAmE,IAAAE,WAAA,CAAAF,OAAA,0BAAAG,YAAA,sFAAAC,SAAA,0CA6B5D,QAAS,CAAAC,eAAeA,CAAAC,IAAA,CAKrB,IAJR,CAAAC,UAAU,CAAAD,IAAA,CAAVC,UAAU,CACVC,WAAW,CAAAF,IAAA,CAAXE,WAAW,CACXC,SAAS,CAAAH,IAAA,CAATG,SAAS,CACNC,KAAK,IAAAC,yBAAA,CAAAC,OAAA,EAAAN,IAAA,CAAAF,SAAA,EAER,MACE,GAAAF,WAAA,CAAAW,GAAA,EAACZ,sBAAA,CAAAW,OAAqB,CAAAE,MAAA,CAAAC,MAAA,EACpBC,gBAAgB,CAAE,QAAlB,CAAAA,gBAAgBA,CAAGC,KAAK,QAAK,CAAAV,UAAU,CAACU,KAAK,CAACC,WAAW,CAAC,EAAC,CAC3DV,WAAW,CAAEA,WAAY,CACzBC,SAAS,CAAAK,MAAA,CAAAC,MAAA,IAAON,SAAS,CAAG,EACxBC,KAAK,CACV,CAAC,CAEN","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.CardField=void 0;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _helpers=require("../helpers");var _NativeCardField=_interopRequireWildcard(require("../specs/NativeCardField"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["onCardChange","onFocus","onBlur","cardStyle","placeholders","autofocus","postalCodeEnabled","disabled","dangerouslyGetFullCardDetails"];var _this=this,_jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.CardField=void 0;var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _helpers=require("../helpers");var _NativeCardField=_interopRequireWildcard(require("../specs/NativeCardField"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["onCardChange","onFocus","onBlur","cardStyle","placeholders","autofocus","postalCodeEnabled","disabled","dangerouslyGetFullCardDetails"];var _this=this,_jsxFileName="/Users/tjclawson/stripe/stripe-react-native/src/components/CardField.tsx";function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap(),n=new WeakMap();return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f);}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f;})(e,t);}var CardField=exports.CardField=(0,_react.forwardRef)(function(_ref,ref){var onCardChange=_ref.onCardChange,onFocus=_ref.onFocus,onBlur=_ref.onBlur,cardStyle=_ref.cardStyle,placeholders=_ref.placeholders,autofocus=_ref.autofocus,postalCodeEnabled=_ref.postalCodeEnabled,disabled=_ref.disabled,dangerouslyGetFullCardDetails=_ref.dangerouslyGetFullCardDetails,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);var inputRef=(0,_react.useRef)(null);var onCardChangeHandler=(0,_react.useCallback)(function(event){var card=event.nativeEvent.card;var data={last4:card.last4,expiryMonth:card.expiryMonth,expiryYear:card.expiryYear,complete:card.complete,brand:card.brand,validExpiryDate:card.validExpiryDate,validNumber:card.validNumber,validCVC:card.validCVC};if(card.hasOwnProperty('postalCode')){data.postalCode=card.postalCode||'';}if(card.hasOwnProperty('number')||card.hasOwnProperty('cvc')){data.number=card.number||'';data.cvc=card.cvc||'';if(__DEV__&&onCardChange&&card.complete){console.warn(`[stripe-react-native] ⚠️ WARNING: You've enabled \`dangerouslyGetFullCardDetails\`, meaning full card details are being returned. Only do this if you're certain that you fulfill the necessary PCI compliance requirements. Make sure that you're not mistakenly logging or storing full card details! See the docs for details: https://stripe.com/docs/security/guide#validating-pci-compliance`);}}onCardChange==null||onCardChange(data);},[onCardChange]);var onFocusHandler=(0,_react.useCallback)(function(event){var focusedField=event.nativeEvent.focusedField;if(focusedField){(0,_helpers.focusInput)(inputRef.current);onFocus==null||onFocus(focusedField);}else{onBlur==null||onBlur();}},[onFocus,onBlur]);var focus=function focus(){_NativeCardField.Commands.focus(inputRef.current);};var blur=function blur(){_NativeCardField.Commands.blur(inputRef.current);};var clear=function clear(){_NativeCardField.Commands.clear(inputRef.current);};(0,_react.useImperativeHandle)(ref,function(){return{focus:focus,blur:blur,clear:clear};});(0,_react.useLayoutEffect)(function(){var inputRefValue=inputRef.current;if(inputRefValue!==null){(0,_helpers.registerInput)(inputRefValue);return function(){(0,_helpers.unregisterInput)(inputRefValue);if((0,_helpers.currentlyFocusedInput)()===inputRefValue){inputRefValue.blur();}};}return function(){};},[inputRef]);return(0,_jsxRuntime.jsx)(_NativeCardField.default,Object.assign({ref:inputRef,onCardChange:onCardChangeHandler,onFocusChange:onFocusHandler,cardStyle:{backgroundColor:cardStyle==null?void 0:cardStyle.backgroundColor,borderColor:cardStyle==null?void 0:cardStyle.borderColor,borderWidth:cardStyle==null?void 0:cardStyle.borderWidth,borderRadius:cardStyle==null?void 0:cardStyle.borderRadius,cursorColor:cardStyle==null?void 0:cardStyle.cursorColor,fontSize:cardStyle==null?void 0:cardStyle.fontSize,placeholderColor:cardStyle==null?void 0:cardStyle.placeholderColor,textColor:cardStyle==null?void 0:cardStyle.textColor,textErrorColor:cardStyle==null?void 0:cardStyle.textErrorColor,fontFamily:cardStyle==null?void 0:cardStyle.fontFamily},placeholders:{number:placeholders==null?void 0:placeholders.number,expiration:placeholders==null?void 0:placeholders.expiration,cvc:placeholders==null?void 0:placeholders.cvc,postalCode:placeholders==null?void 0:placeholders.postalCode},autofocus:autofocus!=null?autofocus:false,postalCodeEnabled:postalCodeEnabled!=null?postalCodeEnabled:true,disabled:disabled!=null?disabled:false,dangerouslyGetFullCardDetails:dangerouslyGetFullCardDetails!=null?dangerouslyGetFullCardDetails:false},props));});
|
|
2
2
|
//# sourceMappingURL=CardField.js.map
|